Wie interagieren Sie mit Netflix Cadmium Video Player auf dem Client?

10

Ich habe einen Netflix-Account und ich habe unter seinem Video-Player, der in Google Chrome läuft, unter die Haube geschaut. Netflix ruft seinen Videoplayer "Cadmium" auf und das Javascript macht alle Funktionen und Event-Handler verfügbar, die Sie erwarten, wie Abspielen, Stoppen, Pause, Stummschalten usw. Ich baue eine kleine Chrome-Erweiterung, die es mir ermöglicht, dieses Cadmium zu nennen Player-Funktion, aber der schwierige Teil für mich ist herauszufinden, wie man eine Instanz des Players erstellt, damit ich anfangen kann, anzurufen. Das Javascript ist groß, komplex und etwas unklar. Sobald ich eine Instanz dieses Players erstellen kann, denke ich, dass es einfach ist, Anrufe in die Funktionen zu tätigen.

Hier ist ein relevanter Teil von js:

%Vor%

In den Chrome-Entwicklungstools kann ich einen Haltepunkt innerhalb dieses Blocks festlegen, und die Ausführung trifft den Haltepunkt, wenn ich auf dem Netflix-Videoplayer auf die Schaltfläche "Stumm" klicke. Die Netflix js ist (nicht überraschend) durch Methodenumbenennung stark verschleiert. Ich habe versucht, durch den Code im Debugger zu gehen und habe hundert Kaninchenlöcher durchgebrochen, nie in der Lage, meinen Weg an die Spitze des Stapels zu finden, so dass ich denselben Aufruf (oben auf dem Stapel) machen konnte, um den Benutzer zu simulieren Stummtaste. Ich habe auch versucht, programmtechnisch auf den Mute-Button des UI-Players zu klicken, der meine Bedürfnisse genauso gut erfüllen würde, aber sie haben ernsthafte Abwehrmechanismen und drehen mich wie ein Top.

Da es über 100.000 Javascript-Zeilen gibt und ich nicht sicher bin, welche Brocken genau für diesen Beitrag relevant sind, möchte ich vorschlagen, dass Sie Netflix in Chrome laden, Dev-Tools öffnen, einen Film abspielen und den Inhalt prüfen Pause oder Stummschaltung. Die Interaktion mit diesen Videoplayer-Steuerelementen führt Sie in das Javascript-Labyrinth, in dem ich versuche, zu sehen, wie ich die Aspekte des Players programmgesteuert steuern kann (nur von dev tools ist das in Ordnung). Eine weitere wichtige Sache, die ich herausfinden muss, ist, wie man den Videoplayer abfragt, um die aktuelle Zeit des abspielenden Videos zu bestimmen.

Irgendwelche Ideen, wie ich diese Nuss knacken kann? (Danke im Voraus!)

    
HerrimanCoder 01.02.2017, 17:04
quelle

1 Antwort

7

Bei Chrome wird die Wiedergabe mit HTML 5-Video wiedergegeben.

Sobald Sie das <video> -Tag-Element aktiviert haben, können Sie die HTML 5-Video-API verwenden :

Ruft das <video> -Element

ab %Vor%

70143639 ist die ID des Videos, wie in Ссылка

Verbleibende Zeit (HH: mm)

%Vor%

Abgelaufene Zeit (Sekunden)

%Vor%

Aktualisierungen der abgelaufenen Zeit

%Vor%

Beachten Sie, dass ich nicht die gleichen Ergebnisse wie mit video.currentTime erhalte, Sie müssen möglicherweise einen Offset basierend auf der Differenz verwenden. Es kann auch etwas in der Spezifikation erklärt werden: Ссылка

Wiedergabe

%Vor%

Pause

%Vor%

Gehe in der Zeit hin und her

Mit freundlicher Genehmigung von Rebellion : netflix.cadmium.UiEvents.events.resize[1].scope.events.drage‌​nd[1].handler(null, {value: 600, pointerEventData: {playing: false}}); Dabei ist 600 die Anzahl der Sekunden, die gesucht werden soll.

Beachten Sie, dass ich in "Whoops, etwas schief gelaufen ..." mit dieser:

%Vor%

Auch mit Pausen- und Play-Anrufen. Dies ist, was diese Demoseite tut, Sie müssen möglicherweise die vollständige Spezifikation auf Suche .

Stummschalten und stummschalten

%Vor%

Wie video.currentTime , dies ist eine schreibbare Eigenschaft.

    
pyb 05.02.2017, 00:08
quelle

Tags und Links