根据你的代码,你并没有下载编码视频文件,而是下载了用于播放视频的Flash应用程序(以CWS格式)。该应用程序在浏览器中执行,动态加载和播放视频。您需要进行一些逆向工程来确定实际的视频源。以下是我的尝试:
解压SWF文件
首先,将你提到的58K文件保存到硬盘上,命名为test.swf
(或类似名称)。
然后可以使用小型Perl脚本cws2fws来完成解压缩:
perl cws2fws test.swf
这会在相同的目录下生成一个名为test.fws.swf
的新文件。
在FWS文件中搜索配置URL
我使用了一个简单的
strings test.fws.swf | grep http
这将生成:
...
cookieOhttp://www.videodetective.net/flash/players/flashconfiguration.aspx?customerid=
...
有趣。让我们尝试将已知的customerid
、playerid
和publishedid
参数放到此URL中:
http://www.videodetective.net/flash/players/flashconfiguration.aspx?customerid=300120&playerid=351&publishedid=319113
如果我们在浏览器中打开它,就可以看到播放器配置的XML文件,而该文件又指向...。
如果我们在浏览器中打开它,就可以看到播放器配置的XML文件,而该文件又指向
http://www.videodetective.net/flash/players/playlist.aspx?videokbrate=450&version=4.6&customerid=300120&fmt=3&publishedid=&sub=
现在,如果我们打开它,我们最终可以看到源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视频文件,任务完成。
用Python脚本自动化整个过程
这是完全不同的任务(留给读者作为练习)。