挖掘视频网站【搜狐】上被截断的视频的地址--006
【转载请注明来源:http://blog.csdn.net/lileiyang12/article/details/18599305】
有了优酷系列的视频分析过程:
接下来开始分析搜狐网站的视频地址:
测试使用的视频《龙门飞甲》:http://tv.sohu.com/20120314/n337759289.shtml
准备工作依然是打开浏览器,F12,点开NetWork,输入网址,回车。
说一下分析的经验:
主要靠的是浏览器自带的分析工具,那么,按照时间顺序向下浏览NetWork里边的文件,点击第一个,也就是URL请求的地址,右边会显示你请求的内容:请求头、响应头。由于想要的是分析视频,那么按照经验,想要播放视频,必然会得到视频地址。而视频地址的获取主要是服务器发过来个json或者xml之类的文件,里边包含视频的所在服务器ip地址、文件所在路径、文件名字、分段视频列表等等,之后使用JS计算或者flash播放器内部计算来得到视频真实地址,之后就可以发送请求进行播放。因此,先找找哪些请求返回来的JSON中包含视频信息,点开上边截图显示的右边的Response:
接下来一个个的向下点左边的文件,找到了这里:
右边那个JSON使用json格式工具,比如JSON在线工具
左边的请求是:
结果是:
{ "preview": 2, "holiday": 0, "p2pflag": 1200, "isp2p": 0, "id": 607759, "prot": 2, "ct": 4008, "nt": 11, "allot": "220.181.61.212", "reserveIp": "61.135.183.45", "vt": 1, "tn": 5, "sp": 1024, "status": 1, "wexp": 0, "play": 1, "pL": 30, "url": "http://tv.sohu.com/20120314/n337759289.shtml", "uS": -1, "fms": 0, "fee": 0, "caid": 1, "caname": "电影", "pid": 1006637, "isdl": 1, "ispv": 0, "isNewsLogo": 0, "preload": 0, "systype": 0, "age": "5岁以下", "year": 2011, "areaId": 55, "mainActorId": "1366;1035;1167;1383", "act": "", "tv_application_time": "2012-03-14 23:39:00", "catcode": "100106;100121", "pvpic": { "big": "", "small": "" }, "tvid": 472341, "islpc": 0, "syst": 1390272335800, "data": { "tvName": "龙门飞甲", "subName": "", "ch": "tv", "fps": 25, "ipLimit": 0, "width": 640, "clipsURL": [ "http://data.vod.itc.cn/tv/20120314/472341-607759-b2521d2e-a14f-46b1-b7ea-7ad6073a5a43.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-f26292cf-50cf-43e8-a50b-ec56e2a693a5.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-dcfa796a-0968-440e-a213-5c00ecc0b24b.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-0ab61188-6586-45c5-911e-aac3d6b0f54b.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-d0ee6d5c-9d80-48b0-8b3b-4f984a228cc1.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-6679492a-0a81-4d07-8237-ae8515dd5af7.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-276a13eb-c9cf-4a67-9b5c-59671f31e597.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-75a8dc22-9022-4fb0-a452-0ca9520e3216.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-85daf1c6-2b0f-470a-9523-32e84db58358.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-d054c50d-7436-427c-a724-2527bcf39299.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-f5664c8b-e151-453d-b69b-46de20e3e942.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-95355875-0e39-4269-ad20-38ee9294d987.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-d5d85a53-d266-45cf-bb50-9b8e1b6fcab1.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-a42e8dc7-f1db-49a7-aad6-cd489003f63e.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-4f3c298f-4fbb-49d4-87b7-42f915d7f68b.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-4a98164c-70a4-45d5-a774-c4844c411224.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-a864a7a3-717b-4354-a008-06f0b6b23c91.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-1e23dbae-65dd-4778-b833-203bc99398a0.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-7ca23abc-a6d3-455c-943f-7042e04acd57.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-6719f27a-daf3-4d96-9524-7c5b99dab640.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-ad856ce5-70f5-406f-a2b2-a17c133d5bea.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-08407f91-42c0-496c-b286-1800dc5a8c2b.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-5487b4be-4795-4848-8bbd-47f7ac30b0c0.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-a7ac81cd-a68b-401f-867c-5e2119687f25.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-162b3b28-fe2e-4d44-946c-d11acfe3379f.mp4" ], "version": 1, "clipsBytes": [ 28252418, 24970383, 21456445, 26422757, 27092428, 22268676, 20906399, 15873435, 16570782, 13974968, 14788221, 12468624, 12666239, 12219759, 10762192, 13093933, 16932430, 25243503, 18036436, 15573281, 15224361, 14201060, 18650763, 14952043, 10670753 ], "num": 1, "coverImg": "http://photocdn.sohu.com/vrs/20130926/kissId94532_tvId472341.jpg", "height": 272, "totalDuration": 7342.66, "totalBytes": 443650833, "clipsDuration": [ 298.422, 299.885, 296.332, 292.013, 296.843, 283.213, 291.247, 285.488, 298.12, 299.003, 291.41, 299.932, 285.93, 298.213, 291.2, 297.4, 299.932, 296.402, 295.055, 290.898, 295.497, 297.982, 297.122, 281.402, 283.88 ], "relativeId": 607760, "norVid": 607760, "highVid": 607759, "superVid": 607761, "oriVid": 607762, "totalBlocks": 25, "ck": [ "7oJ0x6f9RfxxM4BeWl-GGTI09JH6nvnR", "PZcBM2hjbSJ3arMWneU7TXfH2ay8Xe78", "Z6HrAldZ33bHP6tojiW5vwnKIb5LGNmx", "uo-muSa8Htw1XMlRNWKzjANbZ4GKSG2a", "e5arctCQhH7U9M3zRw95pWzawirdUYOQ", "efmLRa_sN6nZ-yCvjb26S4HxZczYmLlQ", "8m2ZhxWOVmJQj2GD9ngwnIHgfiTXBMhr", "EWHojPSNsYuUvemIag5hO8_59XSX9MKS", "gWZRgBpv6XHJX3jn9PAOTGcl6nOeAKev", "iftTglDHpDl3MIuj-dMnwbx7o-Sw6E6l", "PoW5zXB18yjA4BbamXBL68J2Fk1aFAZ6", "59hkAkdbbbY8G6tdjLcuKdUDXS5OfO1_", "dF5nBtAHjLajuPs-WGsydLu2Fk6Kza7R", "bu_8D2PbhdP9d193uGAukmG6k0iLD2bA", "0-8gkEFFpiPA6GVK9_QGTfDG8OtcYix4", "TtLcLBO8SFAyuf45z7Q5RU2ChhtVIw_R", "0j9szuuBFhwInq0xkPfsa81K7K_lERkB", "zWFmR699PK2bQcW5mA85YEPldPtz4qWo", "G8E2WkQTZDOzDvEMQSmMdfeyXZnSIxyL", "Yhu_RRn41v__uUCOwsHKhP7PBN5xBpmd", "IM_JgFzGiTFfHCPHeERbJtTnVAobTWZ0", "_NGccKpgzS560mJgZAEPGNOhCV594-3V", "HWH-5NEVsuQu9r5k8jNzyUO5oSw3CHw7", "MPftMeOX7UTI-bQE_1-CaZomFYTiydPV", "PmUOjp4BF18i5o5RCV4grkVbfxret24P" ], "hc": [ "PVF4Z25AJJZXW3WS4OADDQTKIAG6ESXB", "Q3PE4WVSNUKSSJL2T5GSH7Z6YVJAVRT7", "26UYK7VURWNTWZXW27PFZCEST2PRI37Y", "6J7K7OOYRXGMHQXBI3YGG6LXBR5G2TGY", "MR4UQ775QPZ45Z6QMAN73IGRLPKIXUYZ", "5AFHAG5OYN6FB3MTCYKBTHYUN45PSFJX", "OXJTMNL5HTG3XZ3TLKTVBDNLHFJCQTKX", "V7AKJLCTU6WOCJSM25FOBIYYEFYM66S7", "AG3KLLTJ66ZCP3EWKZNT4YIFGUZJXWHQ", "5YFQK7OEEKESRPW5VXOCGJZ2AW3I7WPC", "YWQT5INZL75WX7B2DELFU4UWTO4SL4HD", "EBKKEZI3L7T22AKP3IQL7JQXHOZENNMQ", "SYB2YBT4N3XQMO7T5TBPU2Z2D4N5RYO3", "LE5ZWIOZ7TZUXJG5MACYZ6PWLGIG3NRH", "C6WGGCFET5HJ7BFLKRI6A74C4YJ3AWIR", "5MR5L3DBZXXLFOYGAAXTTTWIWPJLY56N", "4JJFNUNK3W5JLPYTWQRO63TLSHPEVI36", "V24XGXG6WBANY7D2VGS2YS3SXDYFF5ZI", "DZNEZ64YMLIBJC7J5Z5KORT7TTOQEPBV", "AZMM4MXQHCC3HNO2IZVPGBU22E7C36PP", "KZUI67VU26D3A4TEIYRHTRNR2EL7QI4A", "LCOA6BAS4M27Q6LBHILOYJGGWPVYBZQQ", "WNFO6S5GYRH6Y3BR65E4WYMX244ECKHA", "DUWZM5UEXU346MKTMCNVO7YFVWXP3KC2", "HJQERMAFNF6ZBMS6FDSSQVPI3NWBUNKY" ], "su": [ "/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4", "/86/30/fIuBk1pxFinLTD2feOXzP1.mp4", "/232/142/WDZnKDwiuAiNCIlTkb8S62.mp4", "/85/160/Gh8rSjbi9YRrJgNNucf9R3.mp4", "/26/217/NRuOwK0xVmYsvWUo4Zosq.mp4", "/220/14/NEa4xu94OTKBDTAMXIxoz2.mp4", "/15/171/N7jghkahm3vK9ptSj6i2E5.mp4", "/105/89/HPv5DSlHQYCTHqZqzOJgL4.mp4", "/176/34/Pmy7aYAXTHBQdurn6XbEw1.mp4", "/137/112/pdDihBIw1n3qDfYfh5VAU3.mp4", "/33/166/JVdATRFlXKAA2pdlh1xyX.mp4", "/63/26/eIu9WIpsWJ7Z5WoN7Geyk2.mp4", "/196/232/2uYIeTNQXM4ihhWzAB99V.mp4", "/102/230/Nq25l1AMHZxZoot99EQMy.mp4", "/191/239/9A2f5aI6lgh7AVv4rtfiX5.mp4", "/55/121/gBg0DvypTX9j9fRJMdBOD.mp4", "/74/61/266e8rRyhXYdEnS6Yxmhm4.mp4", "/19/58/o5CsaF9LhZkNUJ7quvJNo1.mp4", "/81/235/9t3FWnnAKmUBR4OJ80lYM2.mp4", "/115/75/LH7qhVYF0DE5oeOox89oO7.mp4", "/243/253/oH5Wl8hpa33RL4NywqzbQ1.mp4", "/186/218/AMmCjJ6vn3E54DGC9gzmg.mp4", "/124/14/G2ZyqS6wVcZRd3OEaAHTD1.mp4", "/167/241/Xv8TjrTBA2DkS8Fx72fqk7.mp4", "/146/149/r3pdxSvnDcAoR5aRDFxFD4.mp4" ], "sT": 0, "eT": 0, "eP": [ { "k": 280, "v": "李连杰造船厂暗杀东厂督主", "url": "", "pt": 1 }, { "k": 925, "v": "铁索飞仙 蒙面剑客解救范晓萱", "url": "", "pt": 1 }, { "k": 3614, "v": "周迅李宇春地道暗战 陈坤完美分饰两角", "url": "", "pt": 1 }, { "k": 5462, "v": "李连杰陈坤身绑铁链沙暴中互博", "url": "", "pt": 1 }, { "k": 6291, "v": "范晓萱深藏不露众人皆中计", "url": "", "pt": 1 } ], "adpo": null, "xlClipsDuration": [ 0 ], "xlClipsBytes": [ 0 ], "xlClipsUrl": null }, "oriType": 2, "fnor": 0, "keyword": "龙门飞甲", "company": "4", "plcatid": 1, "cmscat": "251366993;261789159;261789173;274093193;326636571;337759289", "hcap": 1, "scap": null }一般会觉得clipsURL直接就是视频地址,可是想到优酷那繁琐的加密方式,搜狐应该不会这么容易让你获取,果然,打开并不是视频地址。
虽然不是想要的直接结果,但是看看里边的内容,一定与最终视频的地址关系密切,那么就继续向下找:
找到它,虽然右边也有json ,但是格式化后查看,都是与当前播放视频无关内容,pass,继续:
状态200,文本 statusText是success,应该是通知客户端这边(其实是浏览器的flash播放器)视频存在之类的,能够访问到,那么接下来肯定有视频地址请求了,继续:
看到了吗?上边那个是视频地址请求,将请求信息发到服务器,服务器会将视频所在的地址信息发回来,而那个Response里边的
http://218.240.33.197/sohu/7/和D4xUCza6hPwGyHDL_peieaKyWNKt7SZeTNapAw..
不就是下边那个视频播放请求的部分内容吗?看到光明了。
看一下下边那个画红线的mp4请求的详细内容:
http://218.240.33.197/sohu/7/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4?key=D4xUCza6hPwGyHDL_peieaKyWNKt7SZeTNapAw..&ch=tv&catcode=100106;100121&prod=flash&plat=flash_WindowsXP&n=11&a=4008&cip=118.186.136.18&vid=607759&uid=13901896888128344404&ta=+I/jAZ9FuHq0qEgxSjpZSNQvFkI%3D
回想一下优酷视频请求的url:
才想到,搜狐这个url后边那一堆,可能也不需要,仅仅这样:
点开发现,真的是我们想要的那个视频:
距离结果更近一步了。208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4是哪来的成为关键了,看下之前的那些json,找到了:
"su": [ "/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4", "/86/30/fIuBk1pxFinLTD2feOXzP1.mp4", "/232/142/WDZnKDwiuAiNCIlTkb8S62.mp4", "/85/160/Gh8rSjbi9YRrJgNNucf9R3.mp4", "/26/217/NRuOwK0xVmYsvWUo4Zosq.mp4", .....................(省略)第一个就是我们要的,那么其他的是不是就是其他分段的视频呢?将第二个与它们合并:
http://218.240.33.197/sohu/7/86/30/fIuBk1pxFinLTD2feOXzP1.mp4?key=D4xUCza6hPwGyHDL_peieaKyWNKt7SZeTNapAw..
不能播放,为什么?莫非也跟优酷还是类似的,服务器地址和后边的key值是一对一的匹配的?那么就想它们怎么获得的:
右边是:
左边红线是视频地址请求,这个直接得到真实地址。
左边点击的那个(不是画红线的)url是:
分解一下是:
http://220.181.61.212/
prot=2
file=/tv/20120314/472341-607759-b2521d2e-a14f-46b1-b7ea-7ad6073a5a43.mp4
new=/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4
idc=208
key=7oJ0x6f9RfxxM4BeWl-GGTI09JH6nvnR
vid=607759
uid=13901896888128344404
ta=+I/jAZ9FuHq0qEgxSjpZSNQvFkI%3D
t=0.9551833313889802
这些应该不是全部都要才能获取信息,那么组合一下,猜测:肯定会需要服务器地址http://220.181.61.212/,而仔细看的话会发现很多请求都会加上一个vid,这个是视频的id,所以也必须要,仅仅有这两个一定不行,否则就失去了加密的意义了,那么那个key数值一定会有,因为它是加密的关键,请求就变成了:
http://220.181.61.212/?vid=607759&key=7oJ0x6f9RfxxM4BeWl-GGTI09JH6nvnR
访问一下失败,看来光有视频的vid没有视频名字也不行,那么加上它:
还是无法播放,继续看,感觉new=/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4跟视频有关系,加上它:
还是失败,为啥呢?额,是不是它们的顺序有要求,那么按照完整的url的顺序试试:
我们精简的:
居然意外的得到视频了,不过不是很稳定,有时候这种方法得到的视频地址部分有效部分无效,所以为了稳定点,按照人家的获取方法一步步模拟吧。
继续,上边的prot=2,看来很有用,没有它,有时候是视频,有时候无法访问,所以加上它:
http://220.181.61.212/?prot=2&file=/tv/20120314/472341-607759-b2521d2e-a14f-46b1-b7ea-7ad6073a5a43.mp4&new=/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4&key=7oJ0x6f9RfxxM4BeWl-GGTI09JH6nvnR&vid=607759
也就是说上边那个完整的url内容,只需要这几项就够了,接下来寻找这几项的内容如何获取:
在上边那个json中,寻找服务器地址:220.181.61.212/试试,真的有:
"allot": "220.181.61.212",同样,prot也有。
继续,找file的值:/tv/20120314/472341-607759-b2521d2e-a14f-46b1-b7ea-7ad6073a5a43.mp4,也有clipsURL:
"clipsURL": [ "http://data.vod.itc.cn/tv/20120314/472341-607759-b2521d2e-a14f-46b1-b7ea-7ad6073a5a43.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-f26292cf-50cf-43e8-a50b-ec56e2a693a5.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-dcfa796a-0968-440e-a213-5c00ecc0b24b.mp4", "http://data.vod.itc.cn/tv/20120314/472341-607759-0ab61188-6586-45c5-911e-aac3d6b0f54b.mp4", ....................(省略)第一个就是,
继续,找new的值:/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4,在这里su:
"su": [ "/208/44/JS5ypGgH9kV1xsHPGF3ZS4.mp4", "/86/30/fIuBk1pxFinLTD2feOXzP1.mp4", "/232/142/WDZnKDwiuAiNCIlTkb8S62.mp4", .....................(省略)第一个就是,继续找key 的数值:7oJ0x6f9RfxxM4BeWl-GGTI09JH6nvnR,在这里ck:
"ck": [ "7oJ0x6f9RfxxM4BeWl-GGTI09JH6nvnR", "PZcBM2hjbSJ3arMWneU7TXfH2ay8Xe78", "Z6HrAldZ33bHP6tojiW5vwnKIb5LGNmx", "uo-muSa8Htw1XMlRNWKzjANbZ4GKSG2a", "e5arctCQhH7U9M3zRw95pWzawirdUYOQ",
而vid在哪呢?先到这个json是如何获取的呢?
也就是说不会从这个json中读取的,那么向上找,还是没有找到,结果将页面的源码打开看一下,找到了,页面右键---查看源代码:
可是它是第一页请求的时候就直接返回的,还是后期js动态加入的呢?
再回过来看一下第一页的请求:
看来是请求的时候直接返回来的,好了,当前页面视频真实地址找到了,整理一下:
第一步:
通过第一页返回来的源代码,找到vid
第二步:
通过http://hot.vrs.sohu.com/vrs_flash.action?vid=607759&af=1&bw=NaN&plid=1006637&uid=13901896888128344404&out=0&g=8&referer=http%3A//tv.sohu.com/20120314/n337759289.shtml&t=0.5271239313296974得到视频列表的json,等等,这个请求又是那么长,很多都是不必要的,精简之后是:
http://hot.vrs.sohu.com/vrs_flash.action?vid=607759
第三步:
总结这个url的由来:
[prot=2&]去掉的时候有时候能够直接得到视频地址,不需要下边步骤。
是:
http://+allot+?file=clipsURL[i]的部分内容+&new=+su[i]+&key=+ck[i]+vid,通过它获取
http://218.240.33.197/sohu/7/|208|118.186.136.18|D4xUCza6hPwGyHDL_peieaKyWNKt7SZeTNapAw..|1|1|11|4008
之后就是每一个分段的视频的真实地址了:
http://218.240.33.197/sohu/7/+su[i]+D4xUCza6hPwGyHDL_peieaKyWNKt7SZeTNapAw..
具体实现代码,弄好了再分享吧。
做好了,效果图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。