抓取网页视频工具(如何拿到优酷来讲的播放地址?|大神)
优采云 发布时间: 2021-09-18 20:04抓取网页视频工具(如何拿到优酷来讲的播放地址?|大神)
莫特·姚:
前言(废话):
前段时间,由于公司的需要。因此,我们应该研究如何获得视频屏幕的播放地址。一般来说,网站很容易获得普通的视频播放地址。但对于优酷来说,腾讯等大型视频资源站很难获得视频资源。普通网站您可以通过网页直接抓取视频屏幕的播放地址。但是这些大的不起作用。这些网站由防盗链制成。以优酷为例。首先,他使用自己的SWF播放器,然后服务器将异步地向页面播放器加载一部分参数。播放器将在内部分析这些参数,然后获得视频的播放地址。这个解析过程很复杂
起初,我用Fiddler 4抓包,但我能捕捉到很多有用的信息。起初,我想使用反向JS,但后来我发现它似乎与JS没有多大关系。然后我使用jsop捕捉关键代码。我发现他的视频信息是异步加载的,这表明jsoup无法捕获它。后来,经过仔细观察,我发现他的所有请求都是由SWF玩家发出的。在反编译之后,我别无选择,只能捕获他的SWF:(如果它只是一个简单的网页应用程序,您可以使用它的SWF,然后获取网页上name=“flashvars”部分的值,然后将该值发送给SWF播放。)
这是最主要的
可能知道优酷的加密方法是
/player/getFlvPath+“/sid/”+$sid+““+No+”/st/“+thisVideoType+”/fileid/”+id
可能在这种格式中,sid是securityid,然后添加no(number),然后下面的fileid也是加密的,而不是简单的ID。通常,会有一个令牌、K和EP参数,它们是重要的参数。最后,以这个地址为例,您只需要获得一个JSON字符串就可以获得播放地址
[{"fileid":"0300080100579F87DDDF300157E54E465E9572-D357-57B7-15CA-646DEC5748A9.mp4","server":"http://117.41.231.17/youku/696AF5871C487D59853F424D/0300080100579F87DDDF300157E54E465E9572-D357-57B7-15CA-646DEC5748A9.mp4"}]
与上面的一样,虽然服务器可以获取视频的地址,但/Youku/后面的随机代码是一种*敏*感*词*加密。换句话说,它每隔几个小时就会改变一次,也就是说,不可能一次得到一个永久地址
优酷的视频下载都在客户端,也就是说,如果网络端想获取地址,普通的方法是行不通的。后来,我在客户机上进行了数据包捕获,然后我惊讶地发现TMD根本无法捕获任何有用的信息。我别无选择,只能感叹客户太愚蠢了。每次单击下载新视频时,我都会查看数据包捕获信息。它是空的,好像什么都没发生过。如果你不这样做,你只能走反编译之路。。(免费版本的反编译器只能查看,不能复制,更不用说调试了..操…)
我们谈了这么多,现在说到点子上了。你得到的是一个强大的工具捕捉视频。其原理是,上述SWF反编译并捕获加密方法,然后解析网页请求,然后从视频站服务器骗取地址
首先,该语言基于python。首先(至少)去官方下载3.0因为这个版本有pip3.安装后准备环境
这里我不多说了:
然后打开CMD命令输入
pip3 install --upgrade you-get
获得成功后获得的基本用法。上面的链接是
接下来是关键
如果您只想获取地址,可以在其前面添加一个命令
--json
you-get --json youwannaURL
你可以找到地址
通过PIP3安装的东西通常放在Python文件夹/lib/site包中/
Extractor.py是主层之后的功能层。你可以进去看看。有很多方法,例如
如果您得到的URL没有参数,您将执行下载的第一个If的else语句直接下载视频。如果有--JSON参数,则执行此If
下载功能位于common.py中
您可以将段落添加到输出中。或者使用return阻止下载
返回到输出JSON_uuoutput.py
你可以对我这样做,选择你需要的字段,然后以文件的形式输出它。每个人都很高兴,并得到了地址
您可以更改代码以获得所需的更多函数~