[Vorstellung] Werbung am Netzwerkgateway blocken mit "macht-sinn"

CBCrosser

Commander
Registriert
Nov. 2012
Beiträge
2.692
Hallo zusammen,

vor schon einiger Zeit habe ich mir einen OpenWRT-Router für daheim konfiguriert und habe keine gute fertig-Lösung für das Blocken von Werbung und Trackern gefunden und dadurch ist das Projekt "macht-sinn" entstanden.
Der Name ist durch ein Brain-Storming im Büro entstanden und soll auf einen Disput in der deutschen Grammatik und somit auch auf die ursprüngliche Herkunft des Scriptes verweisen.

Genug des Geschwafels, wie funktioniert es?

Das Script ist für die bash-shell geschrieben und besteht zur Zeit aus zwei Datein. machtsinn.sh, welche die ausführbare Datei ist und machtsinn.conf, in welcher die für den Benutzer wichtigen Variablen gesetzt werden.
Vordefinierte Blocklisten werden aus einigen bekannten Quellen geladen, sortiert und in eine beliebige Datei geschrieben. Standardmäßig ist dies /etc/hosts um auf Linux-Maschinen das Blocken der Werbung auf dem Client selber auszuführen. Hier kann auch eine andere Datei in der Konfigurationsdatei angegeben werden und so zum Beispiel die Werbung mit DNSmasq schon vor dem eigentlichen Aufruf für ein komplettes Netzwerk rausgefiltert werden. Die IP-Adresse welche im Hostfile mit den zu blockenden Domains verknüpft wird, ist in der Konfigurationsdatei ebenfalls frei wählbar. Lest hier bitte unbedingt vorher die Konfigurationsdatei aufmerksam durch!

Das Script sollte auf jeder Linux Distribution ausführbar sein. Wenn nicht, dann öffnet bitte einen Fall auf Github und beschreibt den aufgetretenen Fehler

Dokumentations- und Bezugsquelle ist hier Github mit dem folgenden Link: https://github.com/GHCrosser/macht-sinn

Viel Spaß beim werbefreien surfen ;)
 
An sich eine super Sache :)

Das erstmalige Erstellen der Whitelist ist nur ein wenig umständlicher, aber wenn's einmal läuft, ist's gut.

Doof wird's allerdings, wenn man eigentlich nur eine temporäre Ausnahme für eine Seite setzen will, die man sonst nie besucht. Das geht ja dann nicht mehr lokal am Client, sondern muss jedes mal als Eintrag in der Whitelist geschehen, oder?

Random Beispiel:
Unbenannt.PNG
(wegen µBlock, war vorher nie auf der Seite)
 
das kannst du auch mit µBlock blocken.

Du blockst das Fenster und anschließend das overlay.
 
DrToxic schrieb:
Das erstmalige Erstellen der Whitelist ist nur ein wenig umständlicher, aber wenn's einmal läuft, ist's gut.

Bisher habe ich nur Whitelisteinträge für Grauzonenstreaming gebraucht. Was hast du denn in deine Whitelist eingepflegt?

DrToxic schrieb:
Doof wird's allerdings, wenn man eigentlich nur eine temporäre Ausnahme für eine Seite setzen will, die man sonst nie besucht. Das geht ja dann nicht mehr lokal am Client, sondern muss jedes mal als Eintrag in der Whitelist geschehen, oder?

Du hast Recht, das ist zur Zeit noch umständlich. Geplant ist eine Weboberfläche welche von einem autorisierten IP-Adresskreis aufgerufen werden kann womit eine temporäre Freischaltung erfolgen kann. Diese wird dann per Cronjob wieder aus der Whitelist entfernt in einem vorgegebenen Zeitabstand. Hast du für die Lösung noch eine andere Idee?
Ergänzung ()

nVVater schrieb:
das kannst du auch mit µBlock blocken.

Der Sinn dieses Scriptes besteht darin, keine Werbeblocker mehr in dem Netzwerk hinter dem blockenden Gateway nutzen zu müssen ;)
 
Gabbadome schrieb:
Bisher habe ich nur Whitelisteinträge für Grauzonenstreaming gebraucht. Was hast du denn in deine Whitelist eingepflegt?

Einige Seiten mit nicht aufdringlicher Werbung, die ich gerne lese und die ich finanziell unterstützen will.

Für so einmalige Besuche mit Block-Wall (wie ksta.de oben) aber nur temporäre Ausnahmen.



Gabbadome schrieb:
Geplant ist eine Weboberfläche welche von einem autorisierten IP-Adresskreis aufgerufen werden kann womit eine temporäre Freischaltung erfolgen kann. Diese wird dann per Cronjob wieder aus der Whitelist entfernt in einem vorgegebenen Zeitabstand. Hast du für die Lösung noch eine andere Idee?
Das wäre natürlich ziemlich nice :)
Andere Idee wäre eine kleine Browsererweiterung, mit der man mit einem Klick eine temporäre Ausnahme erstellen kann, aber da beißt sich dann die Katze wieder in den Schwanz, weil man die Addons am Client-Browser ja eigentlich los werden wollte :p

Wobei ich den Blocker an Smartphone und Tablet trotzdem installiert lassen müsste, weil ich ja auch oft außerhalb des Heimnetzwerks unterwegs bin. Oder bist du mobil immer per VPN mit "zu Hause" verbunden?
 
DrToxic schrieb:
Einige Seiten mit nicht aufdringlicher Werbung, die ich gerne lese und die ich finanziell unterstützen will.
Für so einmalige Besuche mit Block-Wall (wie ksta.de oben) aber nur temporäre Ausnahmen.

uMatrix scheint den Aufruf direkt zu blocken. An dein Anwedungsbeispiel habe ich noch nicht gedacht, da werde ich mir mal Gedanken zu machen.

DrToxic schrieb:
Andere Idee wäre eine kleine Browsererweiterung, mit der man mit einem Klick eine temporäre Ausnahme erstellen kann, aber da beißt sich dann die Katze wieder in den Schwanz, weil man die Addons am Client-Browser ja eigentlich los werden wollte :p

Aus diesem Grund und damit es weiterhin Plattform unabhängig bleibt, wird es eine Weboberfläche geben ;)

DrToxic schrieb:
Wobei ich den Blocker an Smartphone und Tablet trotzdem installiert lassen müsste, weil ich ja auch oft außerhalb des Heimnetzwerks unterwegs bin. Oder bist du mobil immer per VPN mit "zu Hause" verbunden?

Die Idee ist hier dem Benutzer freie Hand zu lassen. Wer einen VPN-Endpunkt selber betreibt, der kann per DNSmasq zum Beispiel am Server selbst die Aufrufe wieder blocken.
 
Zum Parsen der uebergebenen Optionen bietet sich eine case anstelle einer if-else Struktur an.

Es wid nicht geprueft, ob der in $LOGFILE angegebene Pfad schreibbar bzw. ueberhaupt existent ist.

Du solltest spaeter zudem gewaehrleisten, dass $TMPMIN und $HDDMIN auch tatsaechlich geschrieben werden koennen.

Da in deinem Skript keine Shell speizifischen Dinge erforderlich sind, sollte es sh kompatibel gehalten werden, um zu gewaehrleisten, dass auch Nutzer anderer Shells dieses fehlerfrei ausfuehren koennen. Es gibt durchaus Systeme auf denen Bash nicht installiert ist. OpenWRT nutzt bspw. die Almquist, nicht Bourne-Again Shell.

Ich empfehle aus aehnlichen Gruenden printf anstatt echo.

In deinen Dateien finden sich noch vereinzelt Rechtschreib-, Grammatik- sowie Formatierungsfehler.

Da du die GPLv3 verwendest, ist dein Projekt nicht nur quelloffen, sondern auch freie Software. Das solltest du erwaehnen, da dies ein wichtiger Unterschied ist. Mehr dazu hier.


Soviel nach einem ersten Blick auf deine Arbeit.
 
Zuletzt bearbeitet von einem Moderator:
kl3 schrieb:
Zum parsen der uebergebenen Optionen bietet sich eine case anstelle einer if-else Struktur an.

Ist geplant, muss ich mich nur noch mit beschäftigen.

kl3 schrieb:
Es wid nicht geprueft, ob der in $LOGFILE angegebene Pfad schreibbar bzw. ueberhaupt existent ist.
kl3 schrieb:
Du solltest spaeter zudem gewaehrleisten, dass $TMPMIN und $HDDMIN auch tatsaechlich geschrieben werden koennen.

Eine solche Überprüfung möchte ich in einen pre-run Test einbauen.

kl3 schrieb:
Da in deinem Skript keine Shell speizifischen Dinge erforderlich sind, sollte es sh kompatibel gehalten werden, um zu gewaehrleisten, dass auch Nutzer anderer Shells dieses fehlerfrei ausfuehren koennen. Es gibt durchaus Systeme auf dem Bash nicht installiert ist. OpenWRT nutzt bspw. die Almquist, nicht Bourne-Again Shell.

Den Parser also wieder auf /bin/sh setzen?

kl3 schrieb:
Ich empfehle aus aehnlichen Gruenden printf anstatt echo.

Werde ich mir anschauen.

kl3 schrieb:
In deinen Dateien finden sich noch vereinzelt Rechtschreib-, Grammatik- sowie Formatierungsfehler.

Du bist herzlich eingeladen dich an dem Projekt auf Github zu beteiligen :)

kl3 schrieb:
Da du die GPLv3 verwendest, ist dein Projekt nicht nur quelloffen, sondern auch freie Software. Das solltest du erwaehnen, da dies ein wichtiger Unterschied ist. Mehr dazu hier.

Wo findest du sollte ich es genau erwähnen? Meiner Meinung nach schauen Benutzer die auf so etwas wert legen schon welche Lizenz eingesetzt wird.

kl3 schrieb:
Soviel nach einem ersten Blick auf deine Arbeit.

Vielen Dank dir.
 
Gabbadome schrieb:
Den Parser also wieder auf /bin/sh setzen?
Ja, Shebang auf sh setzen. Zudem solltest du aber auch die Syntax pruefen und/oder ggf. einfach dein Skript in verschiedenen Shells testen.
Gabbadome schrieb:
Du bist herzlich eingeladen dich an dem Projekt auf Github zu beteiligen :)
Ich habe keinen Account auf Github.

Gabbadome schrieb:
Wo findest du sollte ich es genau erwähnen? Meiner Meinung nach schauen Benutzer die auf so etwas wert legen schon welche Lizenz eingesetzt wird.
Beispielsweise in deiner Projektbeschreibung wie folgt:
"macht-sinn, ergibt Sinn! A truely [free and] opensource alternative for browserplugins and other mysterious stuff."

Gabbadome schrieb:
Gern.
 
kl3 schrieb:
Ja, Shebang auf sh setzen. Zudem solltest du aber auch die Syntax pruefen und/oder ggf. einfach dein Skript in verschiedenen Shells testen.

Wird im nächsten Commit umgestellt. Bash, zsh, ash und sh kommen alle mit dem Script zurecht.

kl3 schrieb:
Ich habe keinen Account auf Github.

Kann ich dir nur empfehlen ;)

kl3 schrieb:
Beispielsweise in deiner Projektbeschreibung wie folgt:
"macht-sinn, ergibt Sinn! A truely [free and] opensource alternative for browserplugins and other mysterious stuff."

Notiert!
 
Zuletzt bearbeitet:
Huhu....

Mir fehlt noch der Faden. Was - im Prinzip - macht das Script? Eine Blacklist erstellen? Was - im Prinzip - macht der User dann mit der erstellten Liste?
 
sun-man schrieb:
Warum nutzt Du unter OpenWRT denn kein Adblock?

Die Software gab es zu der Zeit in der ich angefangen habe an dem Script zu arbeiten schlicht noch nicht ^_^
Danke für den Tipp. Dort werde ich rein schauen.

Gruß,
CBCrosser
 
Hmm, OK. Da das Thema vom 3.1. ist dachte ich es sei "neu".

egal. ich hab es jedenfalls wieder fast abgestellt. Die Blocklisten sind nicht ganz so clever wie die Tools im Browser. Es gibt auch einige Tools die Freunde benutzen (wie z.B. "Jodel") die werden komischerweise komplett geblockt wenn das AdBlock im Router läuft.
 
Keine Antwort auf meine Frage? Wie schade, es drängt sich der Verdacht auf das hier Schlangenöl beworben wird.
 
Kenneth Coldy schrieb:
Mir fehlt noch der Faden. Was - im Prinzip - macht das Script? Eine Blacklist erstellen? Was - im Prinzip - macht der User dann mit der erstellten Liste?

Das Script lädt einige vorkonfigurierte Blacklists - welche von Privatpersonen, Organisationen oder Gemeinschaften gepflegt werden - herunter und erstellt daraus eine einzige Datei im Format der hosts-Datei unter Linux. In der Konfigurationsdatei lässt sich festlegen, ob diese direkt in /etc/hosts geschrieben werden soll und somit ungewollte DNS-Aufrufe für Werbeseiten und ähnliches garnicht erst den konfigurierten DNS-Server / -Cache erreichen. Die generierte Blocklist kann auch mit zum Beispiel DNSmasq und uhttpd unter OpenWRT zum filtern der Werbung im gesamten Netzwerk dienen.

Kenneth Coldy schrieb:
Keine Antwort auf meine Frage? Wie schade, es drängt sich der Verdacht auf das hier Schlangenöl beworben wird.

Die Zeit dir zu antworten hatte ich schlicht noch nicht ;) Eine solche Behauptung ohne eine Analyse des Quellcodes aufzustellen finde ich auch nicht grade nett.

Gruß,
CBCrosser
 
Danke für die Erklärung. Und ich habe wohlgemerkt nicht behauptet sondern lediglich meinen Eindruck geschildert. Ich bin halt ein mißtrauischer Mensch und eine Software um die mit viel Brimborium herumgeredet wird als ob jeder der sie benutzt der große Experte sein müßte der keine Erklärung braucht und die dann doch nichts weiter tut als eine Hosts zu erstellen...na ja, da klingeln halt bei mir die Alarmglocken. Nix für ungut, hat sich ja nun aufgeklärt.
 
Zurück
Oben