立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 4110|回复: 0

[PHP 教程] you-get 一个很强的视频地址抓取工具的方法

[复制链接]

111

主题

16

回帖

1819

积分

大学四年级

Rank: 6Rank: 6

积分
1819
发表于 2018-1-16 00:28:20 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前段时间,我因公司需求。所以要去研究如何拿到视屏的播放地址。一般普通的网站的视屏播放地址还是很好拿到的。但是对于优酷,腾讯这样的大型视屏资源站就很难拿到视屏资源了。普通的网站你通过网页就可以直接抓取到视屏的播放地址。但是这些大型就不行,这些网站都是做了防盗链的。就拿优酷来讲,首先他用了自己的SWF播放器,然后服务器会异步加载一段参数到页面播放器上去。播放器内部会对这些参数进行一个解析,然后获取到视频的播放地址。这个解析过程是比较复杂的。
  最开始我用fiddler4去抓包,还是能够抓到很多有用信息的。最开始想用逆向JS去做,但是后来发现它的东西好像和JS关系不太大,然后我又用jsop去抓关键代码,发现,他的视屏信息是通过异步加载的,表示jsoup抓不到,后来仔细观察发现,他的请求一本都是SWF播放器发出来的,没办法,只能把他的SWF抓下来,做了一个反编译后:(如果只是简单的网页套用的话,可以用它的swf然后去抓网页上name="flashvars" 段的value,然后把这段value发给swf后就能播放了。)

you-get 一个很强的视频地址抓取工具的方法

you-get 一个很强的视频地址抓取工具的方法
这边就是主要的东西。
大概知道优酷的大概加密方式就是
  k.youku.com/player/getFlvPath+"/sid/"+$sid+"_"+No+"/st/"+thisVideoType+"/fileid/"+id
  大概就是这个格式 sid 就是securityId 然后加上No(编号)然后后面的 fileId也是经过一系列加密的,并不是简单的ID。一般是会有一个token  ,K ,ep 参数是比较重要的参数 最后拿这个地址你只是获取到了一串能够获取播放地址的JSON
  1. [{"fileid":"0300080100579F87DDDF300157E54E465E9572-D357-57B7-15CA-646DEC5748A9.mp4","server":"http://117.41.231.17/youku/696AF5871C487D59853F424D/0300080100579F87DDDF300157E54E465E9572-D357-57B7-15CA-646DEC5748A9.mp4"}]
复制代码
就如上面这个一样,虽然server能够获取到视频的地址,但是/youku/后面的那串乱码是一个SEED加密。也就是说没多少个小时就会变一次,也就是不可能一次拿到一个永远不变的地址的。
  优酷的视频下载全是走的客户端,也就是说网页端想要抓取地址,普通的方法是行不通的。后来我对客户端进行一个数据抓包,然后惊奇的发现TMD根本抓不到任何有用信息,只能无奈的感叹这客户端太尼玛屌了。每次我点击下载新视频后再看看抓包信息,空空如也像什么也没发生过。没办反只能走反编译的路了。。(反编译工具免费版只能看,,不能复制更别说调试了。。、。。我操。。。)
      扯了这么多,现在进入正题了。you-get 是一个强大的抓取视频的工具,原理就是上面的swf反编译后抓取了加密方式,然后对网页请求进行一个解析,然后从视屏站服务器中骗取地址出来。
     首先这个语言是基于Python 的 先去官方下载最新的(至少3.0以上)的版本,因为这个版本自带pip3.下好后配好环境
     这边我就不多说了:http://www.jianshu.com/p/a3f8df948395
     然后打开cmd命令 输入
  1. pip3 install --upgrade you-get
复制代码
来获取 you-get 获取成功后基本的使用方法上面链接有。
     接下来就是关键了。
     如果你是只想获取地址的话可以在前面 加  命令
  1. --json
复制代码
  1. you-get --json  youwannaURL
复制代码
 即可获取到地址
通过pip3安装的东西一般放在 你的Python文件夹/Lib/site-packages/  下
  extractor.py 是main 层后的 功能能层。 可以进去看看 有很多方法 ,比如

you-get 一个很强的视频地址抓取工具的方法

you-get 一个很强的视频地址抓取工具的方法
you-get  URL这种不带参数的话 就会执行这个download 的第一个if 的else语句 直接下载视频。如果有了 --json 参数的话,就是执行的这个if
下载的功能在 common.py里面

you-get 一个很强的视频地址抓取工具的方法

you-get 一个很强的视频地址抓取工具的方法
可以向我这样加一段来输出看。或者用return阻断下载,。
回到输出json这边来在json_output.py 下

you-get 一个很强的视频地址抓取工具的方法

you-get 一个很强的视频地址抓取工具的方法
可以向我这样,选取自己需要的字段,然后用文件的形式把它输出。皆大欢喜,拿到了地址了。
更多想要的功能可以自己改代码~

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程【道勤网】 ( 皖ICP备15000319号-1 )

GMT+8, 2024-4-27 02:21

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表