Nach einigen Stunden des Debugging fand ich den Täter. Es scheint, es war tatsächlich ein teilweiser Rollout / AB-Test von Facebook.
Genauer gesagt handelt es sich um ein Flag mit dem Namen disableDuplicatePlayingRequest von VideoPlayerExperiments, das in die Seitenquelle für Ihr Profil geladen wird. Wenn diese Einstellung aktiviert ist, true
müssen Sie das Video vor dem Ändern der Uhrzeit anhalten. Andernfalls wird das Video einfrieren / hängen bleiben.
Nun gibt es keine einfache Lösung für die Lösung. Es scheint in Verschlüssen verwendet zu werden, so dass es nicht einfach ist, es zu ändern. Zumindest aus dem, was ich gesehen / getestet habe.
Die einzige Möglichkeit, die ich umgehen konnte, bestand darin, das Skript https://www.facebook.com/rsrc.php/v3iTQQ4/yd/l/fb_LT/JTeC8QI2Wlf.js
( später editieren : Name / Speicherort des Skripts ändert sich häufig, ich habe ein Tutorial hinzugefügt, um das richtige zu finden) von Facebook zu laden und mit der Hilfe eine angepasste Version des Skripts zu laden einer Erweiterung, die die Prüfung aus der Datei umgeht:if (c('VideoPlayerExperiments').disableDuplicatePlayingRequest && this.isState('playing')) return;
Wenn sich jemand für die Erweiterung interessiert, wird dies als Ressourcenüberschreibung bezeichnet, die Verwendung ist jedoch nicht so einfach. Sie benötigen einen Server zum Hosten der modifizierten js-Datei und einige Header-Regeln, um CORS und CSP zu umgehen.
PS Ich habe hier eine Community-Frage erstellt, um Antworten von Facebook zu erhalten. Jeder kann helfen, indem er die Frage wählt (oder auf dem Handy mag).
PS2: Ok, um dieses Problem tatsächlich zu beheben, müssen Sie Chrome verwenden und die nächsten Schritte ausführen:
Geh auf FB und logge dich ein. Durchsuchen Sie alle js-Quellen nach dem Flag disableDuplicatePlayingRequest . Wenn Sie nicht wissen, wie das geht, können Sie dieses Tutorial verwenden
Nachdem Sie die Datei gefunden haben, die sie enthält, verwenden Sie die
{}
Schaltfläche (Pretty Print) und kopieren Sie dann den gesamten Inhalt aus der Datei in einen Texteditor. Gehen Sie zu der Zeile, die etwas ähnelt,if (c('VideoPlayerExperiments').disableDuplicatePlayingRequest && this.isState('playing')) return;
und entfernen oder kommentieren Sie sie. Sie müssen diese Datei jetzt speichern und auf einen Server hochladen. Ich kann meine Datei nicht freigeben, da FB dies für einen Verstoß gegen die Bedingungen hält. Sie müssen dies also selbst tun. Denken Sie an die öffentliche Zugriffs-URL für die Datei.Installieren Sie die Ressourcen-Überschreibungserweiterung aus dem Chrome-Store
Öffnen Sie die Optionen der Erweiterung. In der Tab-URL eingeben
*facebook.com*
Fügen Sie eine Änderungskopfregel hinzu. In der
For:
Eingabehttps://www.facebook.com*
. Jetzt geh hineinEdit headers
. Wir werden nur mit Antwort-Headern arbeiten, verwenden Sie also nur den zweiten Abschnitt. Fügen Sie 2 Satzsatzregeln fürContent-Security-Policy
und hinzuX-Content-Security-Policy
. Jetzt müssen wir Ihren Server zu der von FB verwendeten Richtlinie hinzufügen. Gehen Sie dazu zurück zur Facebook-Seite und zur Registerkarte Dev Console> Network. Wählen Sie eine der .js-Dateianforderungen aus. In den Antwortkopfzeilen sehen Siecontent-security-policy
. Kopieren Sie das Ganze anschließend:
in einen Texteditor. Es sollte mit anfangendefault-src...
. Suchen Sie nunblob:;script-src
nach und fügen Sie die Domäne hinzu, die Sie zum Hosten Ihrer js-Datei verwenden. Zum Beispielxyz.com
oder*.xyz.com
(wenn Sie eine Subdomain verwenden). Lassen Sie vor und nach dem Leerzeichen Leerzeichen, damit die vorhandene Zeichenfolge von Richtlinien nicht beeinträchtigt wird. Verwenden Sie nun diese neue Zeile und geben Sie sie in die 2 Wertefelder der Set-Header-Felder der Erweiterung ein. Sie sollten beide identisch sein. Jetzt benötigen wir eine weitere SatzkopfregelAccess-Control-Allow-Origin
mit einem Wert von*
. Klicken Sie auf Schließen, um zum Hauptmenü zurückzukehren.Fügen Sie eine weitere Änderungskopfregel hinzu. Dieses Mal verwenden wir es für Ihre Domain, um sicherzustellen, dass Sie auch dort die richtigen Header haben. Geben Sie im
For:
Feld den genauen Link ein, auf den Ihre geänderte Datei im Internet zugreifen kann. Bevorzugtes https. Die Verwendung von http oder einer lokalen Datei kann Probleme verursachen. Gehen Sie jetzt in den Abschnitt für Änderungsheader der Regel. Wir werden hier auch den Antwortabschnitt verwenden. Wählen Sie in den Voreinstellungen dieAllow outside content
Option aus, um automatisch 2 Regeln für Sie hinzuzufügen. Nach diesen 2 benötigen wir eine weitere SatzkopfregelAccess-Control-Allow-Origin
mit einem Wert vonhttps://www.facebook.com
. Klicken Sie nicht auf Schließen und kehren Sie zum Hauptmenü zurück.Der letzte Schritt ist das Ersetzen der FB-js-Datei durch Ihre geänderte Datei. Fügen Sie dazu eine Regel für URL -> URL hinzu. In der
From:
die Datei aus Schritt (1) hinzuzufügen. Als zusätzliche Anmerkung ändert sich dieser Link regelmäßig, da Facebook ihn alle 1-3 Tage aktualisiert. Sie müssen es auch ändern, wenn Sie feststellen, dass Videos wieder einfrieren. Sie können Schritt (1) folgen, um den neuen Link dafür zu erhalten. Jetzt müssen Sie imTo:
Feld Ihren Link auf die geänderte Datei setzen. Eine letzte Sache ist zu überprüfen, dass alle diese 3 Regeln auf gesetzt sindON
. Nun, Videos sollten wieder so funktionieren wie früher.
PS3: Die gespeicherten Erweiterungsregeln finden Sie hier . Sie müssen die Namen xyz.co
und https://xyz.co/modified.js
durch Ihre eigenen Namen ersetzen . Sie erscheinen jeweils 2 mal. Vergewissern Sie sich danach, dass die Dateiverbindung, die die enthält, disableDuplicatePlayingRequest
korrekt ist.