Mein Anspruch an den Pi-Hole war initial werbefrei auf YouTube unterwegs zu sein. Scheinbar ist dies aber nicht so einfach.
Also einfach den DNS-Traffic von Youtube sniffen bringt schnell ans Licht das YouTube einen ausgeklügelten Algorithmus für seine Werbung hat.
Mit folgendem Regular Expression der sich sicherlich noch verbessern lassen sollte, habe ich es aber geschafft einen “Großteil” der Werbung zu eliminieren.
r[0-9-]-sn-[a-z0-9]-[0-9a-z]{4}.googlevideo.com
Fügt diesen Regex einfach zur Blacklist hinzu.
// Folgenden Regular Expression
r[0-9]+---sn-.*\.googlevideo\.com$
findet man auch noch im Web, ab dem Zeitpunkt spielt YouTube jedoch auch keine Video mehr ab.
Weitere Informationen zu unserem I MAKE YOU INTELLIGENT Cloud gehosteten Pi-Hole:
Pi-Hole Cloud
Benötigte Hardware:
Hallo,
Toller Blog. Macht Spaß zu stöbern und neue Impulse mitzunehmen.
Konntest du den Code vielleicht verbessern?
Ich hab ihn eingefügt und auf den Geräte läuft weiterhin Werbung. Vor allem auf dem iPad und Apple TV nervt es sehr.
Hi Paul,
danke für dein Feedback – dann hat YouTube leider wieder den Algorithmus verändert.
Wenn die Zeit es zulässt, werde ich mir die Sache noch einmal anschauen.
Beste Grüße und schönes We!!
Kann man nicht einfach die Domain YouTube.com auf YouTube.com. Umleiten? Wichtig ist der Punkt am Ende im Browser funktioniert es ohne Probleme und Werbung. Das müsste man doch mit einem DNS rewrite erreichen können. Doch wie implementiert man das ?
Moin. Wenn ich es richtig sehe, fehlte nur das ^ am Anfang, also
^r[0-9-]-sn-[a-z0-9]-[0-9a-z]{4}.googlevideo.com
Bisher kommt zumindest so gut wie keine YT-Werbung mehr bei mir.
gerade ausprobiert, leider hat auch nicht geholfen
Es funktioniert nur mit dem hinzufügen des Zeichens „^“ vor dem in diesem Tutorial eingetragenen Filter. Dieser muss nur Pihole 5 > Blacklist > Reiter „Regex Filter“ eingetragen und gespeichert werden. Funktionierte im Anschluss sofort.
Habe ein bisschen mit den Regen Einträgen gespielt:
r[0-9]—sn-[a-z0-9]{8}-[0-9a-z]{4}.googlevideo.com
r[0-9]—sn-[a-z0-9]{8}.googlevideo.com
Diese beiden blocken ansich als weg, man muss aber damit rechnen, dass das Video an der Werbeunterbrechung hängen bleibt. Scheinbar wird von der Werbung TEILS ein “gesehen” an die App geschickt, damit sie das Video weiterspielt. Dieses wird dann eben auch geblockt.
Danke! Der Regex funktioniert bei mir wirklich gut! Die eingeblendeten Werbebanner reduzieren sich wirklich erheblich, zum Teil bis gar nicht mehr vorhanden. EInzig die Werbeunterbrechungen sind noch da, aber das ist schon mal eine MEILENWEITE Verbesserung!
Herzlichen Dank!!
Diese ganzen Methoden sind der völlig falsche Weg ! Ziel hätte es von Anfang an sein müssen, das die Werbung absichtlich von Pi-Hole “angeschaut” wird, damit Youtube zufrieden ist. Während der Nutzer davon gar nichts mitbekommt. Oder eine zeitverzögerte Wiedergabe welche die Videos via Timeshift speichert. Am Ende wird YT Werbung und Video untrennbar in einen Stream packen. Dann gibt es nur noch die Möglichkeit, das die Werbung erkannt wird. So das ständig ein Dienst im Hintergrund laufen muss und die Werbung solange ausblendet wird. Es gibt nur ein Plugin unter Chrome welches derzeit zuverlässig blockt und ich will das es so bleibt, daher keinen Namen.
Diese ganzen Methoden sind der völlig falsche Weg ! Ziel hätte es von Anfang an sein müssen, das die Werbung absichtlich von Pi-Hole “angeschaut” wird, damit Youtube zufrieden ist. Während der Nutzer davon gar nichts mitbekommt. Oder eine zeitverzögerte Wiedergabe welche die Videos via Timeshift speichert. Am Ende wird YT Werbung und Video untrennbar in einen Stream packen. Dann gibt es nur noch die Möglichkeit, das die Werbung erkannt wird. So das ständig ein Dienst im Hintergrund laufen muss und die Werbung solange ausblendet wird.
Aber solange es noch auf diesem Wege zum Teil geht, bin ich natürlich froh. Danke für das RegEx
möchtes du alle Videos von YouTube vorher aufzeichnen? Wir groß ist deine Festplatte? Oder hast du ein Datacenter?
Damit wäre Youtube/Google erst recht nicht zufrieden und das würde von denen erst recht sanktioniert werden! Google hat sich nämlich gegenüber den Werbetreibenden verpflichtet, den Werbetraffic auszuweisen Schließlich zahlen diese dafür! Jede Werbung, die von einer Maschine (Bot, Pi-Hole etc.) aber nicht von einem Menschen gesichtet wird, muss im Reporting der Werbeserver ausgefiltert werden, da dieser von den Werbetreibenden als Bot-, Fraud- oder Mal-Traffic verstanden wird. Den Request nach dem Werbemittel erst gar nicht stattfinden zu lassen, ist der einzig tolerierbare Weg für alle Akteure. Damit tut man der Werbeindustrie schon ausreichend weh.
Nach etwas stöbern bin ich hier auf diese Seite gestoßen und ich muss sagen bis jetzt FUNKTIONIERT es bei mir prima, danke dafür.
Man kann es auch relativ einfach machen ;), was aber auf dauer nerven würde.
Und zwar lässt man die Admin Konsole im extra Tab geöffnet (am besten angemeldet), und macht im anderen Tab sein YT Video auf.
Wenn man diesen Regex r5—sn-4g5e6nsr.googlevideo.com findet, sofort blockeren.
Ich habs noch nicht getestet ob der Regex neu “gedownloadet” wird.
Vielen Dank dafür, das klappt ja prima!
Hi zusammen,
ich frage mich wie das ganze bei allen funktionieren kann.
Die Ads werden zwar blockiert und vom Pi-Hole erkannt, aber nun steht das Video in der Endlos Werbe Schleife im Blackscreen und die 5 Sekunden laufen ebenfalls nicht runter um die Werbung zu skippen. Gibt es hier einen anderen Weg oder habe ich etwas falsche gemacht?
Auf dem Desktop scheint der Filter tatsächlich fast immer zu funktionieren, da benutze ich aber normalerweise sowieso einen Adblocker.
In der Youtube App auf meinem Android Tablet funktioniert der Filter leider scheinbar nicht, obwohl beide im gleichen Netzwerk sind. Das Tablet hat keine SIM Karte, also kann es auch nichts übers mobile Netz laden.
Ich habe auch festgestellt, dass die Youtube-App eine Anfrage an s.youtube.com schickt. Wenn die Domain geblockt ist, werden die geschauten Videos nicht im Wiedergabeverlauf von Youtube gespeichert.
Wenn ich allerdings auf meinem Desktop im Browser Youtube anschaue, gibt es keine Anfrage an s.youtube.com und der Wiedergabeverlauf funktionert trotzdem.
Also Youtube scheint den Traffic von Desktop Browsern und der App ganz unterschiedlich zu handhaben.
Wäre dankbar, wenn jemand mir sagen könnte, wie ich die Werbung auch in der App blocken kann.
Das würde mich auch interessieren, denn in Videos eingebettete Werbung in der YouTube-App ist die Königsdisziplin – und diese Video-Werbung habe ich bisher noch nicht aus den Apps weg bekommen… :-(
Das würde mich auch mal brennend interessieren: Also warum kann man mit Hilfe eines beliebigen Adblockers im Webbrowser die YT Werbung komplett blocken, aber in den mit Hilfe von Pi-Hole nicht. Was können die Adblocker, was Pi-Hole nicht kann? Oder (was wo ich eher die Ursache vermute) was ist im Webbrowser anders als in der App?
Ganz einfach, ein Adblocker im Browser scanned die einzelnen Teile der Website (DOM) und kann so am Inhalt erkennen, was es ist.
Pi-Hole und andere DNS Blocker haben naturgemäß keinen Zugriff auf den tatsächlichen Inhalt sondern kennen nur den Server, der angefragt wird. Youtube mischt hier sehr gerne Werbung und echten Content auf einem Server, weswegen DNS-Blocker an dieser Stelle einfach ins leere laufen.
Die regex ist sehr unzuverlässig und läß sehr viele werbund durch
Bei mir hat der Regex nicht funktioniert.
Folgende Probleme:
Beispieldomains von youtube ads:
r3—sn-hoxu-h0js.googlevideo.com
r2—sn-hoxu-h0js.googlevideo.com
Zur Vereinfachung nummeriere ich die beschriebenen stellen:
r [0-9-] – sn- [a-z0-9] -[0-9a-z]{4} .googlevideo.com
1 2 3 4 5 6 7
– das – in 2 ist meiner Meinung nach hinfällig, da immer eine zahl auf das r folgt
– das – in 3 kommt mehrmals vor
– 5 funktioniert mit den Beispiel Domains auch nicht, das es nur ein Zeichen beschreibt – die yt domains haben mehrere (meist 4)
– bei 7 habe ich noch die punkte escaped (macht keinen unterschied, ist nur der schönheithalber, da immer ein . kommen muss)
Durch die Korrektur dieser Punkte komme ich auf folgendes Pattern:
r[0-9]-*sn-[a-z0-9]*-[0-9a-z]{4}\.googlevideo\.com
Ich selbst habe an einem weiteren Regex experimentiert, der bis jetzt keine Probleme macht und tendenziell zuverlässiger funktioniert als der obere:
r{1}\d.*sn.*\.googlevideo\.com
Zur Erklärung:
r{1} > string beginnt mit einem einzelnen r
\d > es folgt eine zahl
.* > beliebige zeichen
sn > sn
.* > beliebige zeichen
\.googlevideo\.com > domainende immer googlevideo.com
Edit: Ich habe festgestellt mehrere folgende leerzeichen werden gekürzt, daher:
Zur Vereinfachung nummeriere ich die beschriebenen stellen:
r [0-9-] – sn- [a-z0-9] -[0-9a-z]{4} .googlevideo.com
1– 2—3–4——-5———6—————-7
Edit:
pihole kennt die \d (digits) syntax nicht, daher [0-9]
r{1}\d.*sn.*\.googlevideo\.com
->
r{1}[0-9].*sn.*\.googlevideo\.com
r{1}[0-9].*sn.*\.googlevideo\.com
führt bei mir zum Nichtladen der Videos.
Ich habe mir selbst eine Regex zusammengebaut
r[0-9]{1,2}—sn-[a-z0-9]{6,8}.googlevideo.com
die der des Authors rechte nahe kommt
r[0-9]+—sn-.*\.googlevideo\.com$
Geht aber mit beiden nicht richtig, die Videos laden dann nicht. Mir kommt es vor, dass wenn gemäß Regex ein oder mehrere Werbevideos abgefangen werden, das eigentliche YT Video einfach nicht im Anschluss geladen wird.
Kann es sein, dass die Regex Variante nicht mehr funktioniert? Habe zumindest mit “r[0-9-]-sn-[a-z0-9]-[0-9a-z]{4}.googlevideo.com” null Erfolg – Werbung in Hülle und Fülle.
Der Admin hat es oben geschrieben es muss ein ^ vor dem r eingefügt werden also
^r[0-9-]-sn-[a-z0-9]-[0-9a-z]{4}.googlevideo.com
Grüße
Also ich habe bisher mit dem folgenden Ausdruck die besten Erfolge erzielt:
^r[0-9]{1,2}-*sn-[a-z0-9]*-[0-9a-z]{4}.googlevideo.com
Es ist aus einigen der obigen zusammengesetzt. Ich werde jetzt noch die Variante, dass der letzte 4-er-Block optional ist testen:
^r[0-9]{1,2}-*sn-[a-z0-9]*(-[0-9a-z]{4})?.googlevideo.com