抓包分析教程

直接上教程,使用工具:Fiddler抓包工具,AS3发编译工具(对一些把加密算法写在swf文件里的各种key算法,如letv或者youku),swf_reader_2.3(直接从内存把源码抽出来)。
来个简单的视频网站:新浪视频。
新浪视频:http://video.sina.com.cn/m/201407030553446_64062687.html
1.打开Fiddler.

这个时候最好不好打开网页或者需要request的软件,因为Fiddler会抓取本机所有放送request的包,不利于分析。
2.打开上面的视频地址:http://video.sina.com.cn/m/201407030553446_64062687.html

去除所有的静态资源,放心红框出是get的url。把他复制出来:

http://v.iask.com/v_play.php?vid=134919546&uid=null&pid=1000&tid=2&plid=4001&prid=0&referrer=&ran=0.2542205140925944&r=video.sina.com.cn&v=4.1.42.55&p=i&k=e831fa04bcbf6a6521976005

经测试,实际的request地址只需要下面几个参数:

"http://v.iask.com/v_play.php?vid={$vid}&ran={$rand}&p=i&k={$k}"

这就是最后新浪视频地址取出的xml文档。
上面三个参数具体的获得方法:
1、$vid
直接抓http://video.sina.com.cn/m/201407030553446_64062687.html的内容用正则匹配出vid,正则的pattern可以这样:

 preg_match('/vid:\'([0-9]+)\'/', $content, $matches);

2、$rand,$k这2个参数需要破解新浪的swf文件。

http://p.you.video.sina.com.cn/swf/quotePlayer20131203_V4_4_42_15.swf?vid=112471779
下载这个swf文件,需要用它来提取$k算法

用swfread把源码从内存中抽出来。保存到某个文件夹里。

在保存好的文件夹里,将文件按大小排序

选第二个swf用AS3打开,如下图

蓝色框中的代码就是$k的算法,有乱码?不用担心,按照乱码的格式可以拼接出来一个算法函数(php版)

function Sina_k($vid) {
  $rand = rand(0,100000)/100000;
  $str1 = "Z6prk18aWxP278cVAH";
  $str = $vid.$str1.$rand;
  $hash = md5($str);
  $k = substr($hash,0,16);
  return "http://v.iask.com/v_play.php?vid=".$vid."&ran=".$rand."&p=i&k=".$k;
}

可以看到其中有个变量[$t = time()/1000]我省略了,实际运用中,这个变量不对算法的生成有影响。Sina_k($vid)中参数传递的就是前面页面抓到的$vid。这样新浪的xml地址就拼接出来了。
xml地址都拼接出来了,其中的播放地址大家就可以用正则抓出来了。
==============================================================
工具可能大家不方便找,我直接贴上来。等级太低,附件不够,上到百度网盘了。
swfreader:
http://pan.baidu.com/s/1CjfyA

as3:
http://pan.baidu.com/s/1eQqwodc

Fiddler:
http://pan.baidu.com/s/1i3f0Nhb

合集下载:链接: http://pan.baidu.com/s/1kTgJciF 密码: muoh

点赞