Erhalten Sie direkte Link Videos von Vimeo in PHP

8

Ich möchte einen direkten Link zu Videos von Vimeo mit einem PHP-Skript. Ich habe es geschafft, sie manuell zu finden, aber mein PHP-Skript funktioniert nicht. Hier ist die Initiative: Zum Beispiel nahm ich dieses Video: Ссылка

Wenn Sie auf die Seite gehen, generiert Vimeo eine Signatur, die dem aktuellen Zeitstempel und diesem Video zugeordnet ist. Diese Information wird in einer JavaScript-Variablen um Zeile 520 herum gespeichert: window.addEvent ('domready', function () {

Wenn Sie dann auf Wiedergabe klicken, liest der HTML5-Player diese Variable und sendet eine HTTP-Anforderung:

%Vor%

Aber es funktioniert auch mit:

%Vor%

Wenn diese URL nicht mit der IP-Adresse geöffnet wird, die Ссылка geöffnet hat, wird der HTTP-Code 200 mit einer Fehlermeldung zurückgegeben.

Wenn diese URL mit der korrekten IP-Adresse geöffnet wird, wird der Header "Location" umgeleitet, um auf die Videodatei zu verweisen: http://av.vimeo.com/XXX/XX/XXXX.mp4?aksessionid=XXXX&token=XXXXX_XXXXXXXXX

Wenn ich diesen Link http://player.vimeo.com/play_redirect?... manuell erstelle ("Rechtsklick" & gt; "Quellcode" & gt; "Zeile 520") funktioniert es.

Aber mit PHP und Regex gibt es HTTP code 200 mit einer Fehlermeldung zurück.

Warum?

Aus meinen Beobachtungen überprüft Vimeo nicht die Header der HTTP-Anfrage für http:// player.vimeo.com/play_redirect?... GET , HEAD , mit Cookies, ohne Cookies, Referrer etc. ... ändert sich nicht.

Bei PHP verwende ich die Funktion file_get_contents() und get_headers() .

%Vor%     
Sony 08.07.2012, 22:08
quelle

2 Antworten

4

Der Algorithmus sieht so aus:

  • Eingabedaten: vimeoUrl.
  • content = getRemoteContent (vimeoUrl).
  • Analysiere den Inhalt, um den Wert von data-config-url zu finden und zu extrahieren Attribut.
  • Navigiere zu data-config-url und lade den Inhalt als JSON-Objekt: $ video = json_decode ($ this- & gt; getRemoteContent ($ video- & gt; getAttribute ('data-config-url')));
  • Gibt $ video- & gt; request- & gt; files- & gt; h264- & gt; sd- & gt; url zurück - dies wird a zurückgeben direkter Link für Videos in SD-Qualität.

Hier ist meine einfache Klasse, die für diesen Moment arbeitet.

%Vor%

Verwenden:

%Vor%     
Alexander Yarovoy 11.04.2014 10:57
quelle
0

Versuchen Sie, für jede Anforderung einen gültigen Benutzeragenten zu den Headern hinzuzufügen. Dazu müssen Sie stattdessen cURL oder HttpRequest file_get_contents () verwenden.

Nach solchen Manipulationen habe ich einen funktionierenden Link zum Herunterladen der Videodatei bekommen.

Hier mein Code:

%Vor%     
Empty 12.07.2012 09:54
quelle

Tags und Links