Workshop: hosts-Datei – Internet-Werbung entfernen in OS X

Stefan Keller, den 5. August 2009
Layer-Werbung
Layer-Werbung

Wenn im Browser eine Adresse eingegeben wird, so kann diese nicht direkt besucht werden. Der Computer kommt nur mit IP-Adressen zurecht, weil diese eindeutig auf den Zielserver zeigen. Um diese IP-Adresse anhand einer Domain herauszubekommen, bemühen Betriebssysteme DNS-Server (Domain Name System-Server). Dieser schlägt nach, welche IP sich hinter einer Domain versteckt. Ein „lokaler“ DNS-Server befindet sich in der Datei /etc/hosts. Wofür das gut ist und wie man damit Werbung entfernen kann, klären wir hier.

Grundlagen: Die hosts-Datei

Wie bereits erwähnt, wird normalerweise bei einer Domain-Anfrage der DNS-Server um Hilfe gebeten. Diesen stellt in der Regel der Internet-Provider zur Verfügung. Das TCP/IP-Protokoll, auf dem das Internet aufbaut, sieht eine hosts-Datei vor, in der bekannte Domain-Namen mit ihrer IP aufgelöst werden. In ihr wird etwa festgelegt, dass der „localhost“ die IP 127.0.0.1 besitzt. Generell gilt: Was in der hosts-Datei steht, ist unfehlbar. Das bedeutet, dass Domains, die sich in der hosts-Datei eingefunden haben, nicht mehr durch einen DNS-Server überprüft werden.
Durch das TCP/IP-Protokoll geregelt, ist die Datei auf allen Systemen gleich aufgebaut. Der Syntax sieht vor:

IP – mindestens ein Leerzeichen – Domain-Name

Als Beispiel und notwendiger Eintrag ist bereits die Zeile für den localhost, also den eigenen Rechner, vorgegeben:

127.0.0.1     localhost

Sagen wir, der DNS-Server ist ausgefallen und wir wollen trotzdem über die neusten News und Gerüchte rund um Apple aufgeklärt werden. Dann könnten wir die hosts-Datei um die folgende Zeile erweitern:

213.203.216.10     www.macnotes.de

Vorausgesetzt, der DNS-Server ist das einzige, das ausgefallen ist, und Macnotes hat keinen anderen Server bezogen, werden wir ab jetzt immer in der Lage sein, Macnotes aufzurufen.

Zu beachten ist, dass der eigene Rechner Domain-IP-Assoziationen cachet. Dies tut er, weil es nicht wirklich wahrscheinlich ist, dass eine Domain während einer bestimmten Zeitperiode eine andere IP bekommt und deshalb nicht immer beim DNS-Server nachfragen möchte. Nach einer Änderung an der hosts-Datei hat sich eine Domain aber geändert. Deshalb sollte nach jeder Modifikation der DNS-Cache geleert werden. Das geht in Mac OS X mit einem der beiden Befehle:

lookupd -flushcache

(für Mac OS X bis einschließlich 10.4 Tiger) bzw.

dscacheutil -flushcache

(für Mac OS X ab 10.5 Leopard).

Blocken von unerwünschtem Content

Als einen Anwendungszweck kann man die hosts-Datei für das Blocken von Inhalten aus dem Internet verwenden. Solange das Programm auf eine Domain (und nicht etwa direkt auf eine IP) zugreift, können so zuverlässig alle unliebsamen Anfragen ins Nirvana weitergeleitet werden. Es lässt sich also auch ein einfacher, zugegebenermaßen nicht sehr flexibler, aber dafür ausgesprochen wirksamer und browser-unabhängiger Werbeblocker realisieren.

Eine recht nervige Sache im Internet sind Layer-Ads. Das sind Werbeeinblendungen, die das ganze Browserfenster überlagern können und zu allem Unglück auch mitscrollen. Aber sie lassen sich ein für alle Mal abschalten.

Bevor es ans Eingemachte geht, gilt es noch eine Voraussetzung zu klären. Gebraucht wird unter Mac OS X ein Benutzerkonto mit einem nicht-leeren Passwort. Das hat den Grund, dass wir den Texteditor privilegiert aufrufen müssen und zwar, weil Mac OS X es nicht anders vorsieht, über die Kommandozeile. Diese setzt leider ein Passwort voraus. Ein wenig einfacher geht’s, wenn auf der Festplatte ein anderer Editor wie

Textmate verfügbar ist. Jener tut den Zugriffsfehler beim Speichern nicht mit einer Fehlermeldung ab, sondern holt sich die Einwilligung beim Benutzer ein. In diesem Fall ginge sogar ein passwortloses Konto.

Lösung mit Mac OS X-Mitteln

  1. Suche über Spotlight das „Terminal“ auf.
  2. Gib folgende Zeile ein:
    sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

    Es folgt die Passwortabfrage. Gemeint ist das Passwort des Benutzerkontos

  3. Der Texteditor öffnet sich und bietet nun die hosts-Datei zum Bearbeiten an
  4. Füge an das Ende der Datei an:
    127.0.0.1 layer-ads.de

    Und speichere die Datei

  5. Beende TextEdit
  6. Gib auf der Konsole den Befehl zum leeren des DNS-Caches ein (dscacheutil -flushcache für Leopard)
  7. Leere ggf. den Cache des Browser und lade die Seite erneut
  8. Kein Layer-Ad mehr!

Lösung mit einem anderen Editor (wie TextMate)

  1. Rechtsklick auf das Mac OS-Symbol im Dock, Gehe zum Ordner, „/etc“
  2. Dort Rechtsklick auf die Datei „hosts“, „Öffnen mit“, „TextMate“ (oder einem anderen Editor, der das unterstützt)
  3. Siehe Schritt 4 und 5 von den Bordmitteln
  4. Ruf das Terminal auf (Spotlight-Suche), dann siehe Punkt 6 bis 8 der obigen Vorgehensweise

Ob der andere Editor geeignet ist oder nicht, ist daran zu erkennen, ob er beim Speichern eine Fehlermeldung ausgibt oder nach dem Passwort fragt. Tut er Letzteres, ist er geeignet. Leider verhält sich TextEdit nicht so.

Die Layer-Ads sind hierbei nur als ein Beispiel zu verstehen. Wer ein bisschen des HTML mächtig ist, kann sich den Quellcode der werbenden Seite ansehen und findet möglicherweise das Script, das die Werbung einblendet (es befindet sich in aller Regel am Anfang oder am Ende eines HTML-Dokuments).

Was ist der Vorteil dieses Verfahrens?

Der Nutzen der hosts-Datei liegt daran, dass sie auf nichts angewiesen ist. Man muss sich nicht auf eine Firewall verlassen und ebenso wenig hoffen, dass der Lieblingsbrowser einen Content-Blocker hat. Zudem lassen sich hiermit auch andere Programme vom Sammeln von Daten abhalten („Phone home“), was der Privatsphäre zu Gute kommen kann.


Ähnliche Nachrichten