Poorman’s Addblocker – oder wenn einen der laute Lüfter am Rechner stört


Wenn man mehrere Browserinstanzen geöffnet hat und beim Surfen viele verschiedene Tabs geöffnet hat, dann steigert sich unweigerlich die Prozessorlast. Im Normalfall nicht von den eigentlichen Seiten, sondern von den Millionen Werbeeinblendungen. Aus diesem Grund setze ich von Zeit zu Zeit häufig auftauchende Adware-Adressen auf 127.0.0.1 und lasse sie quasi ins Leere laufen.

Die Vorgehensweise benötigt Adminrechte. Um die aktuellen DNS-Anfragen einsehen zu können, hilft einem mal wieder Powershell. Seit Windows 8 gibt es das Cmdlet Get-DnsClientCache. Allerdings liefert Get-DnsClientCache im Zweifel zu viele Daten zurück. Deshalb muss die Abrage etwas modifiziert werden:

Get-DnsClientCache|where type -ne 12|where Data -ne "127.0.0.1"|where Data -ne $null

Bei “type –ne 12” werden die PTR-Records aus dem Ergebnis gestrichen, weil diese keinen Sinn machen. Danach werden noch alle leeren Einträge gefiltert. Diese werden mit der Zeit immer mehr, je mehr man Adressen gegen 127.0.0.1 laufen lässt.

Man geht also in seinen Browser, ruft eine Seite auf, wo man analysieren möchte und führt dann obige Zeile aus.

Ein Ergebnis stellt sich dann so dar:

Entry                     RecordName                Record Status    Section TimeTo Data   Data
                                                    Type                     Live   Length
—–                     ———-                —— ——    ——- —— —— —-
safebrowsing.googleapi… safebrowsing.googleapi… A      Success   Answer     166      4 216.58.207.74
www.gstatic.com           www.gstatic.com           A      Success   Answer      80      4 216.58.214.99

Sieht scheiße aus aber entscheidend ist die Spalte Entry, dort stehen die DNS-Namen welche auf die bei Data angegebene IP-Adresse aufgelöst werden. Setzt man also diese DNS-Namen auf 127.0.0.1 findet keine Kommunikation nach extern mehr statt.

Um die Auswahl etwas komfortabler zu gestalten, benutzen wir Out-GridView:

Get-DnsClientCache|where type -ne 12|where Data -ne "127.0.0.1"|where Data -ne $null |Out-GridView -PassThru -OutVariable Selected | select -Property @{N="HOSTSExclusion";E={"127.0.0.1`t$($_.Entry)"}} | Select -ExpandProperty HostsExclusion| Set-Clipboard

Man wählt einfach die gewünschten Einträge aus und erhält diese in $Selected zur Weiterverarbeitung zurück. Noch besser, es wird gleich ein passender Eintrag in die Windowszwischenablage mit den ausgewählten Daten gelegt. Nun braucht man nur noch

notepad $env:windir\system32\drivers\etc\hosts

aufrufen und kann dort die Daten von der Zwischenablage am Ende einfügen und speichern. Man könnte die Daten auch gleich direkt in die HOSTS-Datei schreiben aber manche Virenscanner reagieren darauf allergisch, dann also doch besser die Zwischenablage benutzen.

Ein Problem stellt sich aber noch. Wie kann man feststellen, dass eine DNS-Adresse tatsächlich eine Werbeadresse ist? Tja, da ist leider Handarbeit angesagt. In der Regel erhält man beim Aufruf so einer Adresse im Browser nur eine leere Seite oder die Homepage einer Werbe- oder Addagentur. Dieser Aufruf hilft nach der Auswahl eine Entscheidung zu treffen:

$selected| select -ExpandProperty Entry| foreach {start microsoft-edge:http://$_}

Dabei werden alle bei Out-GridView ausgewählten Seiten automatisch im Edge geöffnet, damit man kurz den Inhalt gegenprüfen kann. Hier das gleiche für Chrome:

$selected| select -ExpandProperty Entry| foreach {start chrome $_}

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: