之前战♂了几天的渣浪,头十分的晕…..
大家都知道,渣浪更新了算法,无法继续解析视频了
原来的调用代码:
http://v.iask.com/v_play.php?vid=XXXXXXXX
现在的调用代码:
http://v.iask.com/v_play.php?vid=&uid=&pid=&tid=&plid=&referrer=&ran=&isAuto=&prid=&r=&v=&p=i&k=
WTF要不要这么多?
其实现在实际的是:
http://v.iask.com/v_play.php?vid=&ran=&p=i&k=
如果不这么调用,就会返回
<?xml version="1.0" encoding="UTF-8"?> <video> <result>error</result> <type>13</type> <message><![CDATA[非法请求]]></message> </video>
经查证,参数k是由vid、ran、和当前时间算出来的,也就是说,只有使用正确的k,才能获取视频列表
正文开始:
授人以鱼,不如授人以渔。我就简单讲讲破解的方法。
使用软件:swf_reader_2.3、ASV2010、flashplayerdebugger
用flashplayerdebugger打开这个地址:
http://p.you.video.sina.com.cn/swf/quotePlayer20131203_V4_4_42_15.swf?vid=112471779
其中vid任意更换.
然后打开swfreader,File-Load From Memory,Proccess选择flashvideodebbug,然后按Find Swf
将出现的可能的swf全选,导出到一个文件夹
按大小排列,从上往下用ASV2010打开(一般都是第二个)
切换到脚本,com/sina/proxy/GetIAskXML,这就是全部的获取代码了
AS3代码
public function func6(param1:Number, param2:Number) : String { var vid:* = param1; var rand:* = param2; var f1:* = function (param1:Number) : Number { var _loc_2:* = param1.toString(2); var _loc_3:* = _loc_2.substring(0, _loc_2.length - 6); var _loc_4:* = parseInt(_loc_3, 2); return parseInt(_loc_3, 2); } ; var Str1:* = "Z6prk18aWxP278cVAH"; var Date1:* = new Date(); var Num:* = this.f1(int(Date1.time / 1000)); var str:* = vid.toString() + str1 + Num + rand.toString(); var hash:* = MD5.hash(str); var encode:* = hash.substr(0, 16).toString() + Num.toString(); return "&p=i" + "&k=" + encode; }
PHP:
$vid = $_GET['id']; $rand = rand(0,100000)/100000; $code1 = code(time() /1000); $str1 = "Z6prk18aWxP278cVAH"; $str = $vid.$str1.$code1.$rand; $hash = md5($str); $k = substr($hash,0,16).$code1; echo curl("http://v.iask.com/v_play.php?vid=".$vid."&ran=".$rand."&p=i&k=".$k);
有同学问我,怎么修改Mukioplayer啊?
找到src\org\lala\media\SinamediaProvider.as
protected function getXMLUrl(vid:String):String { return 'http://v.iask.com/v_play.php?vid='+ vid; }
修改为
protected function getXMLUrl(vid:String):String { var rand:* = Math.random(); var f1:* = function (param1:Number) : Number { var _loc_2:* = param1.toString(2); var _loc_3:* = _loc_2.substring(0, _loc_2.length - 6); return parseInt(_loc_3, 2); } ; var Str1:* = "Z6prk18aWxP278cVAH"; var Date1:* = new Date(); var Num:* = this.f1(int(Date1.time / 1000)); var str:* = vid.toString() + str1 + Num + rand.toString(); var hash:* = MD5.hash(str); var encode:* = hash.substr(0, 16).toString() + Num.toString(); return 'http://v.iask.com/v_play.php?vid='+ vid + "&ran=" + rand + "&p=i&k=" + encode; }
5 条评论
相对湿度 · 2015 年 1 月 26 日 下午 9:25
又失效了,又换算法了
jiangming1399 · 2015 年 2 月 1 日 上午 8:38
没换算法,在最后加上&r=video.sina.com.cn&v=4.1.43.10
风水先生 · 2014 年 5 月 4 日 下午 12:58
现在是2014年5月4日,虽然破解成功并可以播放。但用除新浪播放器之外的任何第三方播放器播放时都会出现每隔几秒就缓冲的情况,并且到一定程度就再也无法继续缓冲导致视频无法播完。但在新浪网站上看同一个视频却没有任何问题。求高人研究。
D君 · 2014 年 4 月 14 日 下午 12:52
能说下如何修改才能使MUKIOPLAYER解析新浪视频吗,没有基础的人看了什么都不懂。。。望解答!
jiangming1399 · 2014 年 4 月 19 日 上午 9:02
找到srcorglalamediasinamediaprovider.as,修改getXMLUrl,改成return ‘http://v.iask.com/v_play.php?vid=’+ vid + func6(vid,0.123123);并在上面添加func6就OK了