我已经编写了代码,生成了视频链接,如下面的一个。 一旦获得,我尝试以这种方式下载:
import urllib.request
import os
url = 'http://www.videodetective.net/flash/players/?customerid=300120&playerid=351&publishedid=319113&playlistid=0&videokbrate=750&sub=RTO&pversion=5.2%22%20width=%22670%22%20height=%22360%22'
response = urllib.request.urlopen(url).read()
outpath = os.path.join(os.getcwd(), 'video.mp4')
videofile = open(outpath , 'wb')
videofile.write(response)
videofile.close()
我只得到那个目录下一个58kB的文件,无法读取。有人能告诉我正确的方向吗?
使用您的代码,您在这里下载的不是编码的视频文件,而是用于播放视频的flash应用程序(CWS格式)。它在浏览器中执行并动态加载和播放视频。你需要应用一些逆向工程来找出真正的视频源。以下是我的尝试:
解压缩SWF文件
首先,以
test.swf
(或类似文件)的名称保存硬盘上提到的58K文件。 然后,您可以使用小型Perl脚本cws2fws来实现:这将在同一目录中生成一个名为
test.fws.swf
的新文件在FWS文件中搜索配置URL
我用了一个简单的
结果是:
很有趣。让我们尝试将已知的
customerid
、playerid
和publishedid
参数放到这个URL:如果我们在浏览器中打开它,我们可以看到播放器配置XML,它反过来指向
现在如果打开它,我们终于可以看到源URL:
现在我们可以下载这个h264视频文件,我们已经完成了。
在Python脚本中自动化整个过程
这是一个完全不同的任务(留给读者作为练习)。
相关问题 更多 >
编程相关推荐