ProjekteNerdkrams
Wie man man­che Streams im Web­brow­ser (oft) kosten­los frei­schal­tet

(Aus aktu­el­lem Anlass.)

Das fast ein­zig Schö­ne an einem Web­brow­ser ist, dass Din­ge, die er dar­stellt, zuvor kom­plett auf eurem Rech­ner vor­han­den sein müs­sen. Die Wirk­sam­keit irgend­wel­cher Schutz­maß­nah­men irgend­wel­cher Anbie­ter endet aller­dings (grob dar­ge­stellt) exakt in dem Moment, in dem es um Daten geht, die auf eurer Fest­plat­te lie­gen. Ist ja eure und die Daten habt ihr vom Anbie­ter frei­wil­lig dort­hin geschickt bekom­men.

Nun gibt es eini­ge tech­nisch offen­sicht­lich weni­ger ver­sier­te Anbie­ter von Video­streams, die trotz­dem ver­su­chen, aus den Daten, die sie euch (oft gegen vor­he­ri­ge Zah­lung) frei­wil­lig geschickt haben, zusätz­li­chen Pro­fit zu schla­gen. Das sieht dann unge­fähr – mal mit bes­se­rer Gram­ma­tik, mal nicht – so aus:

(Den – absicht­lich nicht all­zu kom­pli­zier­ten – Bei­spiel­code zum Her­um­spie­len habe ich euch hier hoch­ge­la­den.)

Jetzt könn­te man hier dem Wunsch nach­ge­ben, noch ein Gros vir­tu­el­le Gum­mi­punk­te in den jewei­li­gen Video­stream zu stecken, wenn man mit sei­nem Geld nichts Bes­se­res anzu­fan­gen weiß. Wir – das dra­ma­tur­gi­sche Wir – ist aber spar­sam, arm und außer­dem tech­nisch ver­siert, also schau­en wir mal, was wir da machen kön­nen, ohne dem Kapi­ta­lis­mus wei­ter nach dem Mun­de zu reden.

Wir ver­wen­den hier­zu das ille­ga­le Hacker­tool „F12-Taste“ (es han­delt sich um eine Taste auf eurer Tasta­tur, es steht F12 dar­auf und es ist die rich­ti­ge, sofern ihr mit Win­dows oder einem unixo­iden System unter­wegs seid, das nicht gera­de macOS ist; dort kommt ihr viel­leicht mit Cmd+Option+I wei­ter), behelfs­wei­se – falls ihr zum Bei­spiel kei­ne F12-Taste habt – den Menü­ein­trag „Web­in­spek­tor ein­blen­den“ oder „Ele­ment unter­su­chen“ oder wie immer er in eurem Web­brow­ser hei­ßen mag. Das sieht dann unge­fähr so aus:

Over­lay ent­fer­nen

Seht ihr die­ses oder ein ähn­li­ches Sym­bol im unte­ren Teil des Fen­sters?

Mit ihm könnt ihr euch im Quell­code­baum der Sei­te grob zum Video­teil durch­han­geln. Im offe­nen „Inspek­tor“ seht ihr dann, wel­ches Ele­ment gera­de aus­ge­wählt ist, wenn ihr im Quell­code eine immer fei­ne­re Aus­wahl trefft. Irgend­wann trefft ihr auf den ner­vi­gen Text („Over­lay“), der meist eine ein­deu­ti­ge CSS-Klas­se oder eine ein­deu­ti­ge ID hat. Hier ist es das Ele­ment mit der Klas­se video-overlay. Merkt euch das für spä­ter.

Im Quell­codeedi­tor im (meist) unte­ren Teil des Brow­ser­fen­sters könnt ihr das Ele­ment per Druck auf die Lösch­ta­ste auf eurer Tasta­tur (oder über das Kon­text­me­nü des Ele­ments) ein­fach ent­fer­nen. Viel­leicht ist das Pro­blem damit schon gelöst.

Oh nein, das Video ist immer noch ver­schwom­men!

Wenn ihr das Over­lay ent­fernt habt, aber das Video immer noch nur ver­schwom­men zu sehen ist, dann haben die Ent­wick­ler eine zusätz­li­che Hür­de ein­ge­baut, näm­lich einen CSS-Fil­ter.

Im Wesent­li­chen bedeu­tet das: Dem Brow­ser wur­de mit­ge­teilt, dass er dem Video einen Ver­schwim­men­fil­ter (man­che ken­nen das von Insta­gram) über­wer­fen soll. Hier­für ist die CSS-Eigen­schaft filter zustän­dig; im Bei­spiel­code liegt die­se direkt auf dem Video.

Im „Inspek­tor“ habt ihr unter ande­rem auch einen Tab für eine Java­Script-Kon­so­le, im Bei­spiel heißt sie „Con­so­le“, bei euch viel­leicht anders. Über die­se kön­nen wir den Fil­ter vom Video – das heut­zu­ta­ge meist, so auch hier, ein­fach als <video>-Tag ein­ge­bun­den ist – ein­fach ent­fer­nen, und das für alle Vide­os auf der Sei­te zugleich:

const videos = document.querySelectorAll("video");
videos.forEach(video => {
    video.setAttribute("style", "filter: none");
});

Klappt (meist).

(Es gibt Son­der­fäl­le. Bei Fra­gen hel­fe ich in den Kom­men­ta­ren.)

Oh nein, ich konn­te das Video kurz sehen, doch es ver­schwand sofort wie­der! (Oder: Oh nein, ich will das nicht jedes Mal von Hand machen!)

Eini­ge der Pro­gram­mie­rer von Web­sites, die ver­su­chen, euch mit sol­cher­art Taschen­spie­ler­tricks das Geld aus der Tasche zu ent­locken, sind zumin­dest gewieft genug, um zu begrei­fen, dass man­che Wer­be­blocker bereits ihren Over­lay­kä­se zu ent­fer­nen imstan­de sind. Zwecks Gewinn­ma­xi­mie­rung ver­zö­gern sie das Laden ihrer Tech­nik­ver­hin­de­rung, so dass die Vide­os manch­mal erst ver­zö­gert, manch­mal auch alle paar Sekun­den ver­schwom­men dar­ge­stellt wer­den. Manch­mal will man auch ein­fach nicht dau­ernd in der Kon­so­le rum­fuhr­wer­ken, bloß um kurz ein Video zu sehen. Kein Pro­blem: Auto­ma­ti­sie­ren wir eben auch unse­ren Web­brow­ser!

Das geht mit „User­scripts“, also Java­Script-Datei­en, die ihr selbst schreibt oder schrei­ben lasst und beim Laden einer Sei­te auto­ma­tisch aus­füh­ren lasst, ziem­lich gut, wenn ihr Bock auf ein biss­chen Pro­gram­mie­ren habt. Als recht gut nutz­bar hat sich unter den mei­sten Brow­sern Vio­lent­m­on­key erwie­sen, höchst­wahr­schein­lich gibt es aber auch für euren Web­brow­ser (Safa­ri, mobi­le Brow­ser – vie­les ist mög­lich) ein ent­spre­chen­des Hel­fer­lein.

Eine klei­ne Ein­füh­rung in das The­ma User­scripts gibt es unter ande­rem bei Webo­Graph, was wir damit vor­ha­ben, ist ein­fach: Wir wol­len das, was wir oben gemacht haben, bei jedem Laden eines neu­en Vide­os (und regel­mä­ßig) auto­ma­tisch machen las­sen. Im Fol­gen­den neh­me ich an, dass die betrof­fe­ne Video­sei­te unter https://example.net/video/<ein Video> zu fin­den ist.

Der Code:

// ==UserScript==
// @name        Videoentzerrer
// @author      tux0r
// @namespace   tuxproject.de
// @description Ein Videoentzerrer.
// @include     /example.net\/video\/.*/
// @version     1.0
// @license     CDDL-1.1; https://spdx.org/licenses/CDDL-1.1.html#licenseText
// @run-at      document-idle
// ==/UserScript==
 
// Die "Aufräumfunktion" definieren wir hier als Funktion,
// so dass wir sie wiederholt aufrufen können:
function cleanVideos() {
    // 1. Overlays wegwerfen:
    const overlays = document.querySelectorAll(".video-overlay");
    if (overlays.length > 0) {
        // Nur weitermachen, wenn wir Overlays haben.
        overlays.forEach(overlay => {
            overlay.parentNode.removeChild(overlay);
        });
 
        // 2. filter:blur() entfernen:
        const videos = document.querySelectorAll("video");
        videos.forEach(video => {
            video.setAttribute("style", "filter: none");
        });
    }
 
    // 3. Die Funktion alle fünf Sekunden wieder ausführen,
    //    falls ein neues Video erschienen ist:
    setTimeout(cleanVideos(), 5000);
}
 
// Folgender Code wird automatisch ausgeführt (dafür ist
// das @run-at oben da). 
cleanVideos();

Wie ihr die­ses Script ladet, hängt vom User­script­ver­wal­ter ab. Meist genügt es, die Datei irgendwas.user.js, also hier etwa entzerrer.user.js, zu nen­nen und in das Brow­ser­fen­ster hin­ein­zu­zie­hen.

Schluss­wor­te

Vor­sorg­lich wei­se ich dar­auf hin, dass die Nut­zungs­be­din­gun­gen von kom­mer­zi­ell ori­en­tier­ten Strea­ming­web­sites oft eine Pas­sa­ge beinhal­ten, in der im Wesent­li­chen steht: Lasst das. Ich emp­feh­le also unbe­dingt, ent­we­der die­sen Trick nur auf Web­sites anzu­wen­den, in denen er nicht gegen die Regeln ver­stößt, oder die erste Regel des Fight Clubs zu befol­gen, was den Umgang mit die­ser Tech­nik betrifft. Dar­über hin­aus gilt: Euer Brow­ser, eure Regeln.

Viel Erfolg.

Senfecke:

  1. Dan­ke für’s Tei­len!

    Auf Nicht-macOS kommt man alter­na­tiv übri­gens auch mit Strg + Shift + I ans Ziel. Es Ist bemer­kens­wert wie vie­le Wege in die­se Ent­wick­ler­werk­zeu­ge füh­ren …

Comments are closed.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr …
 

Erlaubte Tags:
<strong> <em> <pre> <code> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <tt> <span style=""> <strike>

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.