Raspberry Pi + Squid + Block Ads

Machen wir in meiner kleinen Pi Serie weiter. Auf normalen Desktop Computern hat man eigentlich immer AdBlock im Browser aktiviert um lästige Werbung loszuwerden. Auf den “neuen” Geräten wie Smartphone oder Tablet sind diese nicht verfügbar und man muss einen kleinen Umweg gehen.

Was bietet sich also nicht eher an als einen Proxy aufzusetzen und unerwünschten Inhalt zu filtern? Zensur im eigenen Netzwerk, basierent auf der Anleitung von calomel.org! Dank an pgl.yoyo.org gibt es eine ordentliche Liste die auch noch immer aktualisiert wird. Man kann sich die Liste in mehrere Formate ausgeben lassen und die Domains/IPs auch gerne per iptables sperren. Ich gehe den Weg des Proxies, weil zum Beispiel mein Blackberry Playbook kein IPv6 kann (ARGH!) (muss nur im Wlan Profil aktiviert werden) und ich durch den Proxy wenigstens sekundär v6 benutzen kann. Also erstmal Squid3 installieren, weil Squid2 kein v6 kann:

# apt-get install squid3

In der Konfiguration /etc/squid3/squid.conf müssen wir folgenden Eintrag hinzufügen. Dieser muss vor allen anderen acl Einträgen stehen (ungefähr Zeile: 693) und sieht folgendermaßen aus:

acl ads dstdom_regex "/etc/squid3/ad_block.txt"
http_access deny ads

Damit haben wir Squid gesagt, dass es allen Zugriff auf die Domains in der txt Datei sperren soll. Die Liste der zu sperrenden Domains erhalten wir durch einen Cronjob den wir uns schreiben:

#!/bin/bash
# script: update ad server list
# get new ad server list
wget -q -t 5 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex&showintro=0&mimetype=plaintext' -O /etc/squid3/ad_block.txt

# refresh squid /usr/sbin/squid3 -k reconfigure

Das Script speichern wir unter /etc/squid3/fetch_adserver.sh. Es lädt sich die Liste herunter und Squid wird dazu gezwungen die Liste neu einzulesen. Ein einfacher Cronjob führt das Script alle drei Tage aus:

35   5    *   *   */3 /etc/squid3/fetch_adserver.sh >> /dev/null 2>&1

Erstmalig das Script per Hand ausführen und die Datei erstellen. Squid wird automatisch neu geladen und schon kann man surfen. Ach auf dem Playbook macht es wieder mehr Spaß :)

Vorher:

Nachher:

Damit man nicht zu viele Fehlermeldungen vom Squid im Browser sieht, sollte man noch die Datei ” /usr/share/squid3/errors/English/ERR_ACCESS_DENIED” bearbeiten und die Fehlermeldungen entfernen. Dabei sollte man den Inhalt einfach durch ein “<a>” ersetzen.

11 thoughts on “Raspberry Pi + Squid + Block Ads

  1. Hallo, danke für das geniale Tutorial – ich hätte nur eine Frage zu dem Skript für den Cronjob:
    wenn ich das manuell auf dem rpi ausführe, sagt es mir:
    “./fetch_adserver.sh: line 4: -O: command not found”
    weil er das -O nicht kennt. Was muss ich daran ändern, dass es wieder geht?

    Und weiterhin wollte ich fragen, ob man für das einzelne adblock file nicht auch mehrere dateien verwenden könnte – siehe Firefox Adblock Plus addon. Dort gibt es für jede Kategorie die man möchte, userverwaltete Listen, z.B. “Fanboy’s List” oder direkt Listen von deutschen Usern.
    Diese haben den Vorteil, dass sie extrem ausführlich und detailiert sind; in Firefox sind ads bei mir daher Vergangenheit.

    Vielleicht könntest du dem Tutorial diese noch dazufügen (Sofern dies möglich ist)
    Vielen Dank für die super Erklärungen!

    Andi

  2. Bei mir funktioniert alles wenn ich die ” in den Befehlen durch richtige Gänsefüßchen (“) ersetze

  3. @ andi versuch das mal dann kommt nicht mehr “command not found”

    wget -q -t 5 -O /etc/squid3/ad_block.txt “http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex&showintro=0&mimetype=plaintext”

  4. ich hätte da mal ne Frage, habe alles nach Anleitung installiert. hat soweit alles gefunzt ohne Fehlermeldung. Jedoch funzt der Ad Blocker nicht? an was kann das liegen? die Adblock Datei wurde bereits gefüllt….

  5. hi,

    wie andi sagte -> gibts ne möglichkeit die easyliste und andere von adblockplus zu übernehmen? :)) wär hammer genial ..

  6. Hallo, ich habe auch versucht, das hinzubekommen. Mit der Anweisung dstdom_regex filtert mein Squid (neueste Version, selbst auf dem PI compiliert) einfach nicht. Benutze ich url_regex und eine plain-text Liste (die es bei pgl.yoyo.org als nohtml gibt), so klappt alles. Jemand ne Idee?

  7. Moin, Problem mit der Filterung gelöst. Ich hatte die Zeile mit
    -acl ads dstdom….- per copy+paste in die squid.conf übertragen, die Anführungszeichen um ad_block.txt sind dann auch vom falschen Typ für Linux.

  8. Ich habe es auch gerade ausprobiert. Es funktioniert erst alles wenn man die “falschen” Gänsefüßchen korrigiert. Vielleicht sollte der Autor das mal anpassen.

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.