hBlock
hBlock
Bildquelle: ChatGPT

hBlock sperrt Werbung ohne Pi-hole über die Hosts-Datei

hBlock blockiert Werbung und Tracker über die Hosts-Datei und ergänzt Pi-hole, DNS Forge, NextDNS, AdGuard DNS und andere DNS-Adblocker.

Pi-hole, AdGuard Home und Blocky filtern Werbung und Tracker für das gesamte Heimnetzwerk. Dafür muss jedoch irgendwo ein eigener DNS-Adblocker laufen. Nicht jeder besitzt einen Raspberry Pi, NUC, ein NAS oder einen Heimserver, der rund um die Uhr zusätzlich eingeschaltet bleibt. Glücklicherweise kommt hBlock ohne diese zusätzliche Hardware aus. Das Open-Source-Skript sammelt bekannte Werbe-, Tracking- und Malware-Domains und schreibt sie direkt in die Hosts-Datei eines Windows- oder Linux-Rechners. Die Sperre gilt damit lokal auf dem Gerät und ist nicht an einen bestimmten DNS-Anbieter gebunden.

Wer bereits Pi-hole, Blocky oder AdGuard Home* betreibt, kann die hBlock-Listen dort ebenfalls verwenden. Auch öffentliche Filter wie DNS Forge, NextDNS oder AdGuard DNS lassen sich durch die lokale Hosts-Datei ergänzen.

Das Skript hBlock holt damit eine alte Technik zurück, die schon lange vor den heutigen DNS-Adblockern zum Einsatz kam.

Die Hosts-Datei blockiert Domains direkt auf dem Rechner

Bevor sich das Domain Name System (DNS) durchgesetzt hat, wurden Rechnernamen und die dazugehörigen IP-Adressen über einfache Textdateien verteilt. Die lokale Hosts-Datei stammt aus dieser Zeit. Das aktuelle Betriebssystem berücksichtigt sie weiterhin. Eine Zeile wie diese sorgt beispielsweise dafür, dass eine unerwünschte Domain nicht mehr ihr eigentliches Ziel erreicht:

0.0.0.0 tracking.example

Unter Linux liegt die Datei normalerweise hier: /etc/hosts, unter Windows hier:

C:\Windows\System32\drivers\etc\hosts.

C:\Windows\System32\drivers\etc\hosts.

Das Betriebssystem prüft die Hosts-Datei vor einer normalen Anfrage an den eingestellten DNS-Server. Findet es dort einen passenden Eintrag, verwendet es die hinterlegte Adresse. Mit 0.0.0.0 läuft die Verbindung ins Leere.

Einige Domains könnte man natürlich auch noch von Hand eintragen. Bei mehreren Hunderttausend Werbe-, Tracking- und Malware-Domains wäre das jedoch kaum noch praktikabel. hBlock lädt die eingestellten Quellen herunter, entfernt zusätzliche Kommentare sowie doppelte Einträge und schreibt das bereinigte Ergebnis dann in die Hosts-Datei.

Was die Hosts-Datei nicht kann: hBlock sperrt vollständige Domains. Einzelne Skripte, Werbeflächen oder andere Bestandteile einer Webseite kann man mit der Hosts-Datei natürlich nicht herausfiltern.

Das zeigt sich besonders bei Diensten, die Werbung und eigentliche Inhalte über die gleichen Server ausliefern. YouTube-Werbung verschwindet genau deshalb weder mit hBlock noch mit einem gewöhnlichen DNS-Blocker zuverlässig. Dafür ist und bleibt eine Browser-Erweiterung wie uBlock Origin inklusive der zusätzlichen Listen weiterhin zuständig.

Bekannte Werbenetzwerke, Tracker und Telemetrie-Dienste können jedoch bereits bei der Namensauflösung damit gestoppt werden. Dies funktioniert auch bei Programmen außerhalb des Browsers, sofern sie die Namensauflösung des Betriebssystems verwenden. Programme mit fest eingetragenen IP-Adressen oder eigener DNS-Auflösung umgehen die Hosts-Datei leider jedoch. hBlock ersetzt deshalb weder einen Browser-Adblocker noch andere zusätzliche Schutzmaßnahmen.

hBlock

hBlock unter Linux

Linux ist das eigentliche Einsatzgebiet des langlebigen Projekts: hBlock besteht aus einem POSIX-kompatiblen Shellskript und benötigt keine umfangreiche Laufzeitumgebung. Für einige Distributionen stehen fertige Pakete bereit. Alternativ kann man das Skript direkt aus dem Repository installieren.

Vor dem ersten Start sollte die vorhandene Hosts-Datei sichern:

sudo cp /etc/hosts /etc/hosts.hblock-backup

Dies ist wichtig, da hBlock die Datei standardmäßig neu erzeugt. Dabei könnten eigene Einträge für lokale Server, Entwicklungsumgebungen oder andere Geräte verloren gehen.

Die aktuelle Version kann man mit folgendem Befehl installieren:

curl -o /tmp/hblock ‚https://raw.githubusercontent.com/hectorm/hblock/v3.5.1/hblock‘

echo ‚d010cb9e0f3c644e9df3bfb387f42f7dbbffbbd481fb50c32683bbe71f994451 /tmp/hblock‘ | sha256sum -c –

sudo install -o root -g root -m 0755 /tmp/hblock /usr/local/bin/hblock

Danach genügt ein Aufruf mit Root-Rechten: sudo hblock. Das Skript lädt die konfigurierten Quellen, bereinigt die Einträge und schreibt die fertige Liste nach /etc/hosts.

Welche Listen dabei berücksichtigt werden, zeigt das Repository. Darunter befinden sich bekannte Quellen für Werbung, Tracking und schädliche Domains. Wer einige davon bereits in einem anderen Filter verwendet, muss dabei auch mit Überschneidungen rechnen.

Automatische Updates unter Linux

Eine einmal erzeugte Hosts-Datei verliert mit der Zeit an Wirkung. Werbe- und Trackinganbieter wechseln ihre Domains, während alte oder fehlerhafte Einträge aus den Quelllisten wieder verschwinden.

hBlock bringt dafür einen systemd-Dienst samt Timer mit. Wurden die Dateien über ein passendes Paket oder die vollständige Installation eingerichtet, kann die automatische Aktualisierung direkt aktiviert werden:

sudo systemctl enable –now hblock.timer

Den aktuellen Zustand zeigt:

systemctl status hblock.timer

Der offizielle Timer startet hBlock einmal täglich mit einer zufälligen Verzögerung. War der Rechner zu diesem Zeitpunkt ausgeschaltet, holt systemd den Lauf nach dem nächsten Start nach. Damit eignet sich die Aktualisierung auch für Laptops, die nachts nicht laufen.

Fehlen die systemd-Dateien, können sie aus dem Repository nachinstalliert werden:

sudo curl -fsSL \
'https://raw.githubusercontent.com/hectorm/hblock/v3.5.1/resources/systemd/hblock.service' \
-o /etc/systemd/system/hblock.service

sudo curl -fsSL \
'https://raw.githubusercontent.com/hectorm/hblock/v3.5.1/resources/systemd/hblock.timer' \
-o /etc/systemd/system/hblock.timer

sudo chmod 644 \
/etc/systemd/system/hblock.service \
/etc/systemd/system/hblock.timer

sudo systemctl daemon-reload
sudo systemctl enable --now hblock.timer
Pi-hole

Unter Windows kommt eine fertige PowerShell-Datei zum Einsatz

Das eigentliche Shellskript läuft nicht nativ unter Windows. Das Projekt veröffentlicht deshalb eine vorbereitete PowerShell-Datei, in der die aktuelle Hosts-Liste bereits enthalten ist:

Vor dem ersten Durchlauf sollte auch unter Windows die vorhandene Hosts-Datei gesichert werden:

Copy-Item `
"$env:WINDIR\System32\drivers\etc\hosts" `
"$env:WINDIR\System32\drivers\etc\hosts.hblock-backup"

Danach kann man die Datei herunterladen und mit Administratorrechten ausführen:

Invoke-WebRequest `
-Uri "https://hblock.molinero.dev/hosts_windows.ps1" `
-OutFile "$env:TEMP\hosts_windows.ps1"

powershell.exe `
-NoProfile `
-ExecutionPolicy Bypass `
-File "$env:TEMP\hosts_windows.ps1"

Der Aufruf erfolgt bewusst über die klassische Windows PowerShell. Das offizielle Skript verwendet noch Get-WmiObject, das unter PowerShell 7 nicht mehr vorhanden ist.

Vor der Ausführung sollte man wissen, was das Skript verändert. Es ersetzt die vorhandene Hosts-Datei, trägt sie als Ausnahme im Microsoft Defender ein, deaktiviert den Windows-DNS-Cache und setzt die fertige Datei auf schreibgeschützt. Eigene Hosts-Einträge werden nicht übernommen.

Auf einem Rechner mit angepasster Hosts-Datei ist ein eigenes Aktualisierungsskript daher die bessere Wahl. Auf einem gewöhnlichen Windows-PC ohne zusätzliche Einträge funktioniert die vorbereitete Datei, greift aber deutlich tiefer in das System ein, als ihr Name vermuten lässt.

Updates unter Windows automatisieren

Unter Windows kann die Aufgabenplanung regelmäßig eine neue Ausgabe vom hBlock-Server laden. Dafür wird zunächst ein kleines Skript unter C:\ProgramData\hBlock gespeichert:

$ErrorActionPreference = "Stop"

$HBlockDir = "$env:ProgramData\hBlock"
$HostsFile = "$env:WINDIR\System32\drivers\etc\hosts"
$BackupFile = "$HBlockDir\hosts.original"
$DownloadFile = "$HBlockDir\hosts_windows.ps1"

New-Item -ItemType Directory -Path $HBlockDir -Force | Out-Null

if (-not (Test-Path $BackupFile)) {
Copy-Item -LiteralPath $HostsFile -Destination $BackupFile -Force
}

Invoke-WebRequest `
-Uri "https://hblock.molinero.dev/hosts_windows.ps1" `
-OutFile $DownloadFile

& "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" `
-NoProfile `
-ExecutionPolicy Bypass `
-File $DownloadFile

if ($LASTEXITCODE -ne 0) {
throw "hBlock wurde mit Exitcode $LASTEXITCODE beendet."
}

ipconfig /flushdns | Out-Null
hBlock

Die Datei kann etwa als C:\ProgramData\hBlock\update-hblock.ps1 gespeichert werden. Anschließend legt eine als Administrator gestartete PowerShell die tägliche Aufgabe an:

schtasks.exe /Create `
/TN "hBlock Update" `
/SC DAILY `
/ST 03:00 `
/RU SYSTEM `
/RL HIGHEST `
/TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\hBlock\update-hblock.ps1" `
/F

Windows erzeugt die Liste dabei nicht selbst aus den einzelnen Quellen. Die Aufgabe lädt die bereits vorbereitete Datei vom hBlock-Server. Neue Einträge kommen daher erst auf den Rechner, wenn das Projekt dort einen neuen Build veröffentlicht.

hBlock ergänzt eigene und öffentliche DNS-Adblocker

Ein selbst betriebener DNS-Adblocker wie Pi-hole, Blocky oder AdGuard Home schützt alle Geräte im eigenen Netzwerk. Wer keinen eigenen Dienst aufsetzen möchte, kann stattdessen einen öffentlichen Filter verwenden.

DNS Forge blockiert Werbung, Tracking und Malware über öffentliche Resolver. AdGuard DNS bietet ebenfalls Filter gegen Werbung, Tracker, Malware und Phishing. Bei NextDNS wählt der Nutzer die gewünschten Blocklisten selbst aus und kann eigene Allow- und Denylists ergänzen.

Cloudflare 1.1.1.1 for Families verfolgt einen anderen Ansatz. 1.1.1.2 sperrt bekannte Malware- und Phishing-Domains. 1.1.1.3 filtert zusätzlich nicht jugendfreie Inhalte. Einen allgemeinen Schutz vor Werbung und Trackern bietet Cloudflare damit nicht. Diese Aufgabe kann hBlock lokal übernehmen.

Auch neben DNS Forge, NextDNS oder AdGuard DNS kann die Hosts-Datei zusätzliche Domains sperren. Findet das Betriebssystem bereits dort einen Treffer, erreicht die Anfrage den öffentlichen Resolver gar nicht erst.

Wie viel hBlock zusätzlich blockiert, hängt von den verwendeten Listen ab. Nutzt NextDNS bereits dieselben Quellen oder sperrt DNS Forge eine Domain ohnehin, ändert ein zusätzlicher Eintrag in der Hosts-Datei nichts. Die lokale Sperre bleibt aber erhalten, falls später ein ungefilterter DNS-Server verwendet wird.

Das ist besonders bei Laptops praktisch. Zu Hause kann Pi-hole, Blocky oder ein öffentlicher Filterdienst übernehmen. Unterwegs bleibt hBlock auf dem Gerät und arbeitet auch unabhängig vom gerade verwendeten Resolver, wie dem durch Public Wifis vergebenen einfach weiter.

Zu viele nahezu gleiche Listen machen die Konfiguration jedoch schnell sehr unübersichtlich. Taucht eine benötigte Domain in mehreren Filtern auf, wird die Fehlersuche einfach nur unnötig schwer. Eine gepflegte Hauptliste mit wenigen gezielten Ergänzungen ist meiner Meinung daher im Alltag meist die beste und pragmatischste Lösung.

Rethink DNS

Zentral mit Blocky, Pi-hole oder AdGuard Home

Sobald mehrere Geräte geschützt werden sollen, ist die ein Bindgung in den Router über DNS-Adblocker meistens einfacher. hBlock stellt seine Listen selbstverständlich auch dafür in verschiedenen Formaten bereit.

Blocky verarbeitet unter anderem die Hosts-Dateien und einfache Listen mit einer Domain pro Zeile. Für hBlock eignet sich daher diese Ausgabe:

In der Konfiguration kann sie so ergänzt werden:

blocking:
denylists:
hblock:
- https://hblock.molinero.dev/hosts_domains.txt

clientGroupsBlock:
default:
- hblock

Besteht bereits eine gemeinsame Denylist für Werbung und Tracker, gehört die URL dementsprechend dort hinein. Eine eigene separate Gruppe nur für hBlock ist nicht wirklich nötig.

Das Urgestein Pi-hole kann sowohl die klassischen Hosts-Ausgaben als auch die reinen Domainlisten zuverlässig verarbeiten.

Die Aktualisierung übernimmt dann wie gehabt Gravity. Manuell kann sie wie gehabt mit diesem Befehl gestartet werden:

pihole -g

Für AdGuard Home steht eine andere Ausgabe im bekannten Adblock-Format bereit.

Die URL wird als typischerweise als benutzerdefinierte DNS-Sperrliste eingetragen. Auch klassische Hosts-Dateien und reine Domainlisten funktionieren problemlos. Das Adblock-Format passt jedoch direkt zu den Filterregeln von AdGuard Home.

Blocky, Pi-hole und AdGuard Home kümmern sich danach selbst um die regelmäßigen Downloads. Das eigentliche hBlock-Skript muss auf dem Server nicht noch einmal zusätzlich laufen.

AdAway Android

Auf einer normalen FRITZ!Box lässt sich hBlock natürlich nicht installieren, auch wenn es schön wäre. Die integrierten Sperrlisten sind leider nur für einzelne Webseiten und Jugendschutzregeln gedacht, nicht für eine umfangreiche externe Liste mit automatischen Updates.

Bei gewöhnlichen TP-Link-Routern sieht es eigentlich ähnlich aus. Einige Modelle besitzen URL-Filter oder eine Kindersicherung, können aber keine großen Hosts-Listen abonnieren und regelmäßig neu laden.

Beide Routertypen erlauben natürlich je nach Modell und Softwarestand die Verwendung eines anderen DNS-Servers. Darüber können Pi-hole, Blocky, AdGuard Home oder öffentliche Dienste wie DNS Forge und AdGuard DNS an die Geräte im Heimnetz verteilt werden. hBlock selbst läuft dabei natürlich auch da nicht auf dem Router.

Mit OpenWrt ändern sich die Möglichkeiten natürlich massiv. Dort können zusätzliche Pakete und externe Listen direkt auf dem Router laufen. Dafür braucht es allerdings ein unterstütztes Modell und den Wechsel auf eine alternative Firmware, oder man kauft sich einen Router von GLI.net wo man Adguard Home direkt aus der Weböberfläche heraus installierten und nutzen kann.

Wer weder einen passenden Router noch einen eigenen DNS-Adblocker betreibt, kann hBlock direkt auf seinen Windows- und Linux-Rechnern verwenden.

hBlock auf Android

Unter Android wird das Shellskript nicht direkt installiert. Stattdessen wird eine der vorbereiteten Listen in eine passende Filter-App übernommen.

AdAway unterstützt wie gehabt eigene Hosts-Quellen. Auf gerooteten Geräten schreibt die App die Einträge natürlich direkt in die Systemdatei. Ohne Root verarbeitet sie die Listen über ihren lokalen Filterdienst zuverlässig.

AdGuard für Android kann benutzerdefinierte DNS-Filter per URL laden. Dafür eignet sich die Adblock-Ausgabe von hBlock:

Je nach gewähltem Filtertyp können auch die reine Domainliste oder die klassische Hosts-Datei verwendet werden.

Mit personalDNSfilter steht eine weitere interessante App bereit, die eigene Hosts-Listen direkt auf dem Smartphone verarbeitet. Die hBlock-Liste kann dort als zusätzliche Quelle eingetragen werden.

AdGuard for iOS

hBlock auf iPhone und iPad

iOS erlaubt leider keinen direkten Austausch der System-Hosts-Datei. Über passende Filter-Apps kann man die hBlock-Listen trotzdem problemlos nutzen.

AdGuard für iOS unterstützt benutzerdefinierte DNS-Filter und Hosts-Dateien, die per URL eingebunden werden. Dafür eignet sich ebenfalls die Adblock-Ausgabe:

Die Liste wird unter der Rubrik DNS-Schutz als eigener Filter eingetragen. Danach kann sie auch Anfragen anderer Apps erfassen und ist nicht nur auf Safari beschränkt.

Wenn hBlock zu viel sperrt

Bei großen Listen landet gelegentlich eine Domain im Filter, die man für eine Webseite oder App benötigt Dann funktionieren etwa eine Anmeldung, ein Bezahldienst oder eingebettete Inhalte nicht mehr richtig.

Blocky, Pi-hole und AdGuard Home besitzen dafür eigene Allowlists. Unter Linux kann hBlock ebenfalls gut mit Ausnahmen arbeiten. Einen Fehlalarm sollte man zusätzlich beim Betreiber der ursprünglichen Quellliste melden. Denn entfernt man den Eintrag dort, verschwindet er später auch aus hBlock.

Unter Windows ist das umständlicher. Das offizielle PowerShell-Skript erzeugt die Hosts-Datei bei jedem Durchlauf neu. Eine von Hand entfernte Domain steht nach dem nächsten Update leider wieder mit drin. Eigene Ausnahmen muss man deshalb nachbearbeiten oder über ein angepasstes Aktualisierungsskript berücksichtigen.

Die Größe einer Blockliste sagt wenig über ihre wahre Qualität aus. Entscheidend ist, wie gut man die Quellen pflegt und wie schnell fehlerhafte Einträge wieder verschwinden.

hBlock funktioniert auch ohne eigenen DNS-Adblocker

Pi-hole, Blocky und AdGuard Home bleiben natürlich die einfachste und pragmatischste Lösung, sobald man mehrere Geräte im eigenen Heimnetz schützen will. Wer keinen eigenen Dienst betreiben möchte, kann DNS Forge, NextDNS, AdGuard DNS oder einen anderen öffentlichen Filter verwenden, der diesen Job übernimmt.

hBlock ergänzt beide Varianten direkt auf dem benutzten Gerät. Die Hosts-Datei sperrt Domains, die vom gewählten DNS-Filter nicht erfasst werden. Bei Cloudflare 1.1.1.1 for Families übernimmt sie zusätzlich die Werbe- und Tracker-Sperren, die der Dienst selbst nicht anbietet.

Auf einem Laptop bleibt die Liste auch dann weiterhin aktiv, auch wenn man unterwegs einen anderen Resolver verwendet. Android und iOS können die fertigen Ausgaben über Apps wie AdAway, AdGuard oder personalDNSfilter übernehmen.

Einen Browser-Adblocker ersetzt hBlock nicht. Als lokale Ergänzung zu einem eigenen oder öffentlichen DNS-Adblocker bleibt die alte Hosts-Datei-Technik trotzdem weiterhin erstaunlich nützlich.

(*) Alle mit einem Stern gekennzeichneten Links sind Affiliate-Links. Wenn Du über diese Links Produkte oder Abonnements kaufst, erhält Tarnkappe.info eine kleine Provision. Dir entstehen keine zusätzlichen Kosten. Wenn Du die Redaktion anderweitig finanziell unterstützen möchtest, schau doch mal auf unserer Spendenseite oder in unserem Online-Shop vorbei.