前两天写了一个python脚本,试图以分析网页源码的方式获得优酷视频的下载地址,结果只获得视频的纯播放地址,下载纯播放地址获得的文件也没法正常播放视频。html
这里共享一下播放地址获得的方法(想看的能够展开折叠):python
# 实验视频地址:http://v.youku.com/v_show/id_XMTY3OTYyODM2NA==.html?f=27873045&from=y1.2-3.2 # 解析到播放地址:http://static.youku.com/v1.0.0646/v/swf/loader.swf?VideoIDS=XMTY3OTYyODM2NA==&ShowId=0&category=98&Cp=0&Light=on&THX=off&unCookie=0&frame=0&pvid=1470928536391FWGhzj&uepflag=0&Tid=0&isAutoPlay=true&Version=/v1.0.159&show_ce=0&winType=interior&Type=Folder&Fid=27873045&Pt=1&Ob=1&plchid=&playmode=2&embedid=AjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw=&ysuid=1470556998734i3T&vext=bc%3D%26pid%3D1470928536391FWGhzj%26unCookie%3D0%26frame%3D0%26type%3D1%26fob%3D1%26fpo%3D1%26svt%3D0%26cna%3DpcwtEK7f7lUCAXDtLY6srtly%26emb%3DAjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw%3D%26dn%3D%E7%BD%91%E9%A1%B5%26hwc%3D1%26mtype%3Doth&cna=pcwtEK7f7lUCAXDtLY6srtly&pageStartTime=0 # 但这不是下载地址,汗 # 解析方法: # <div class="player" id="player"...<object type="application/x-shockwave-flash" # data="(.*?)" ... id="movie_player">... # <param name="flashvars" value="(.*?)">... # 正则提取出items,(.*?)处为提取对象,存储在items中 # items[0] = 'http://static.youku.com/v1.0.0646/v/swf/loader.swf' # items[1] = 'VideoIDS=XMTY3OTYyODM2NA==&ShowId=0&category=98&Cp=0&Light=on&THX=off&unCookie=0&frame=0&pvid=1470928536391FWGhzj&uepflag=0&Tid=0&isAutoPlay=true&Version=/v1.0.159&show_ce=0&winType=interior&Type=Folder&Fid=27873045&Pt=1&Ob=1&plchid=&playmode=2&embedid=AjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw=&ysuid=1470556998734i3T&vext=bc%3D%26pid%3D1470928536391FWGhzj%26unCookie%3D0%26frame%3D0%26type%3D1%26fob%3D1%26fpo%3D1%26svt%3D0%26cna%3DpcwtEK7f7lUCAXDtLY6srtly%26emb%3DAjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw%3D%26dn%3D%E7%BD%91%E9%A1%B5%26hwc%3D1%26mtype%3Doth&cna=pcwtEK7f7lUCAXDtLY6srtly&pageStartTime=0' # url = items[0] + '?' + items[1] # url就是播放地址
今天在研究盗链时,心想可不能够直接在优酷返回的包里找到视频的下载连接。网络
琢磨了一秒钟,内心面以为这个方法应该是可行的,因而打开抓包神器wireshark。app
启动的同时,在优酷主页里随便点开一个视频,让它开始播放。wireshark里很快出现不少包,我加上筛选条件“http”,让它只抓取http协议相关的包。ide
其中重点关注 info 中开头为 GET 方式请求的包,由于这种包最容易分析,音视频图片的下载连接每每就包含在这些包的应用层里面。ui
例如上图获得的就是一张logo的图片。url
我在这里面找与视频相关的包的连接,大概找到两种:spa
这两种连接打开就能够播放,但也并非所有均可以。并且我点开了好多连接,能播放的基本都是广告…… 3d
而后我对 /youku 开头的进行了重点分析,别问我为何,男人的直觉 =_=code
对连接进行复制以后,尝试用迅雷下载,结果发现文件十分的小,并且下载以后也没法播放。
相似的连接还有不少段,它们下载获得的文件名同样,可是大小不一样,并且单独下载以后都没法播放。我猜这是TCP协议分块传输的关系。
这个时候我发现连接后面有一些参数,因而我把整个连接粘贴到记事本里,而后把参数部分删掉。
获得新的连接,把它复制到迅雷中,发现能够下载,并且大小和以前比不可同日而语。
我猜测这个视频应该是能够播放的,果不其然,下载以后打开果真能够顺利播放,并且正是我在网页中播放的视频。
到这里基本能够肯定这个方法是能够得到优酷的视频下载连接,可是还有点小问题,用咱们获得的连接下载的视频只有6分钟,而原视频有26分钟,可想而知,下载的视频应该是完整视频的一部分。但我想其它部分的连接就在wireshark中,用一样的方法分析包就能够获得其它部分的连接。在这里我就不一一实验了。
这种方法获取优酷视频的下载连接的方法是利用了wireshark软件进行抓包,经过抓取网络中传输的包并进行分析,直接获得请求的视频的地址,而后进行下载。
Freecode# : www.cnblogs.com/yym2013