コードでは、ここではエンコードされたビデオファイルをダウンロードするのではなく、ビデオの再生に使用されるフラッシュアプリケーション(CWS形式)をダウンロードしています。これはブラウザで実行され、動画を動的に読み込んで再生します。実際のビデオソースを理解するには、リバースエンジニアリングを適用する必要があります。
まずSWFファイルを解凍、58Kは、あなたが名前test.swf
の下で、あなたのハードディスク上に言及したファイルを保存(または似):次はそれで私の試みです。 あなたは、そのための小さなPerlスクリプトcws2fwsを使用することができます。
perl cws2fws test.swf
これはファイルFWS内のコンフィギュレーションURLの検索と同じディレクトリ
にtest.fws.swf
という名前の新しいファイルになり
私はシンプル
strings test.fws.swf | grep http
使用収率:
...
cookieOhttp://www.videodetective.net/flash/players/flashconfiguration.aspx?customerid=
...
興味深い。のは、このURLに私たちの知らcustomerid
、playerid
とpublishedid
引数を入れてみましょう:
http://www.videodetective.net/flash/players/flashconfiguration.aspx?customerid=300120&playerid=351&publishedid=319113
我々はブラウザでそれを開くと、私たちは順番に
http://www.videodetective.net/flash/players/playlist.aspx?videokbrate=450&version=4.6&customerid=300120&fmt=3&publishedid=&sub=
に私たちを指すプレーヤ構成XMLを、見ることができます私たちがいることを開くと
は今、私たちは最終的に元のURLを見ることができます:
http://cdn.videodetective.net/svideo/mp4/450/6993/293732.mp4?c=300120&r=450&s=293732&d=153&sub=&ref=&fmt=4&e=20111228220329&h=03e5d78201ff0d2f7df9a
今、私たちは、このH264ビデオファイルをダウンロードすることができ、我々は仕上げですed。
Pythonスクリプトでプロセス全体を自動化
これは(読者への課題として残して)全く異なるタスクです。
このコードを試してください:http://stackoverflow.com/questions/2678051/cant-download-youtube-video – Sologoub
@Sologoub:質問とは何が関係していますか? –
私がリンクしているコードは、彼がそれを理解したいと思えば、作業開始として使用することができます...あなたが指摘したように、エラーはより明白であるようです。 – Sologoub