网页视频抓取工具(如何拿到优酷来讲的播放地址?|大神)

优采云 发布时间: 2022-01-27 09:24

  网页视频抓取工具(如何拿到优酷来讲的播放地址?|大神)

  出自莫特姚之手:

  前言(废话):

  前段时间,我是因公司需要。所以我们要研究如何获取视频画面的播放地址。一般普通的网站的视频播放地址还是很容易得到的。但对于优酷来说,腾讯这样的大型视频资源站很难拿到视频资源。普通网站可以通过网页直接抓取视频的播放地址。但是这些大的不行,这些网站都是用防盗链做成的。以优酷为例。首先,他使用自己的 SWF 播放器,然后服务器会异步加载一段参数给页面播放器。播放器内部会解析这些参数,然后获取视频的播放地址。这个解析过程比较复杂。

  一开始我用fiddler4抓包,能抓到很多有用的信息。一开始是想用反向JS来做的,后来发现它的东西好像跟JS没什么关系。然后我用jsop抓取关键代码,发现他的视频信息是异步加载的,也就是说jsoup抓不到。,然后仔细观察,他所有的请求都是SWF播放器发出的。没办法,只能抓他的swf反编译了:(如果只是简单的网页应用,可以用它的swf然后抓取网页上name="flashvars"段的值,然后将此值发送到 swf 以播放它。)

  这是主要的事情。

  你大概知道优酷的加密方式是

  /player/getFlvPath+"/sid/"+$sid+"_"+No+"/st/"+thisVideoType+"/fileid/"+id

  大概这个格式的sid是securityId然后加上No(数字)和后面的fileId也是加密的,不是简单的ID。一般都会有token,K,ep参数是比较重要的参数。最后,如果你拿这个地址,你只是得到一串可以获取播放地址的JSON。

  [{"fileid":"0300080100579F87DDDF300157E54E465E9572-D357-57B7-15CA-646DEC5748A9.mp4","server":"http://117.41.231.17/youku/696AF5871*敏*感*词*87D59853F424D/0300080100579F87DDDF300157E54E465E9572-D357-57B7-15CA-646DEC5748A9.mp4"}]

  和上面一样,虽然服务器可以获取到视频的地址,但是/youku/后面的一串乱码是SEED加密的。也就是每隔几个小时就会改变一次,也就是不可能得到一个一次都不会改变的地址。

  优酷的视频下载都是客户端的,也就是说网页要抢地址,普通的方法是行不通的。后来我在客户端做了一个数据包抓包,惊讶的发现TMD根本抓不到任何有用的信息。每次点击下载新视频,然后查看抓包信息,都是空的,好像什么都没发生一样。除了反编译,别无他法。. (免费版的反编译工具只能查看,不能复制,更别说调试了……我操……)

  聊了这么多,现在进入正题。You-get 是一款强大的视频捕捉工具。原理就是将上面的swf反编译然后通过加密的方式捕获,然后解析网页请求,然后从视频站服务器骗取地址。

  首先,这种语言是基于 Python 的。去官网下载最新版本(至少3.0以上),因为这个版本自带pip3.再配置环境。

  这里我就不多说了:

  然后打开cmd命令输入

  pip3 install --upgrade you-get

  get you-get 获取成功后,上面链接了基本的使用方法。

  接下来是关键。

  如果只想获取地址,可以在前面加上命令

  --json

  you-get --json youwannaURL

  获取地址

  通过 pip3 安装的东西一般放在你的 Python 文件夹 /Lib/site-packages/

  extractor.py 是主层之后的功能层。进去看看的方式有很多,比如

  不带参数的you-get URL会执行本次下载的第一个if的else语句,直接下载视频。如果有--json参数,就是if执行

  下载的函数在common.py

  您可以向我添加这样的段落以查看输出。或者使用 return 来阻止下载。

  回到json_output.py下的输出json端

  您可以对我这样做,选择您需要的字段,然后将其输出为文件。大家很高兴,得到了地址。

  更多想要的功能可以自己改代码~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线