打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
360软件管家通信协议分析

360软件管家通信协议分析07/05/2010

曾经说过360利用云计算打压竞争对手的事情,今日一改往事之郁闷,我专门来篇文章夸奖下360安全卫士。咳咳!今天不完全是写360安全卫士的,我喜欢其中的一个叫做软件管家的功能,坦白说,我有点喜欢新软件,喜欢没事升级升级,尤其是chrome,一有新版本出来,我立马升级,好不含糊!国内这种软件管家很多的,不过我个人觉得360软件管家速度比较快。这点上,360的软件管家立功了,因为公司强制每台机器必须安装360,所以在公司,软件升级这很轻松,可是家里电脑我不想安装这玩意儿,于是我想,我只要弄到我想要升级的软件URL不就可以下载了么?基于这么一点朴素的想法,我就打算分析下360软件管家是通信协议是啥?

随便弄一个抓包工具,比如Wireshark,一看,原来是HTTP协议,这样的话实际上可以用我以前介绍的神器-Fiddler来分析更简单。经过一段时间的抓包,有了一点比较笨的思路:先通过关键字定位到想要的软件,然后获得该软件的ID,再查询一次,得到下载地址。比较有用的数据是这样子的:

GET http://soft.360.cn/baoku/index.php?c=Search&a=getSoftList&cver=v1&kw=91&appver=2.6.1.1004&uid=1&pid=h_home&m=da13c0cdf6109a3c58e0e378826fd01c HTTP/1.1Accept: */*Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; .NET4.0C; .NET4.0E)Host: soft.360.cnConnection: Keep-AlivePragma: no-cacheCookie: B=ID=497891276160941:V=2:S=41529b7136

看请求部分,GET的几个传值kw是搜索关键字,就是在360软件管家界面搜索框中输入的东西,appver很明显就是软件管家的版本号,不用理会,m是一个固定串不知道是否和机器相关,目前这部分都没有做校检,保持不变即可,另外服务端也没有检测Cookie,所以上面的请求Cookie也可以不用修改,只要修改kw后面的内容即可.
返回的格式是这样的:

<?xml version="1.0" encoding="gbk" ?> <ret><retinfo/><softs title=""><soft><id>103326</id><os>Win7/Vista/Win2003/WinXP/Win2000/WinNT/WinME/Win9x</os><ver>1.12.1.109625</ver><surl>http://soft.360.cn/static/baoku/info_5_0/softinfo_103326.html</surl>?<logo>http://img.360.cn/images/2008/360baoku/logo2/91Divine2.png</logo><size>51818131</size><free>2</free><brief>一款由网龙公司自主研发的免费算命软件。知命而...</brief><ptime>2010-07-01</ptime><bname>91算命</bname><vname>91算命 1.12.1</vname><plugin>2</plugin></soft></softs></ret>

就是个标准的XML了,如果软件的版本比你安装的新,就可以考虑下载了哈!ID已经包含在上面的XML里面了,下面再进行一个请求,获得指定软件ID的下载地址,RAW数据是这样子的:

GET http://q.soft.360.cn/get_download_url.php?type=download_url&soft_ids=10149&appver=2.6.1.1004&uid=1&pid=h_home&m=da13c0cdf6109a3c58e0e378826fd01c HTTP/1.1Accept: */*Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.3; .NET4.0C; .NET4.0E)Host: q.soft.360.cnConnection: Keep-AlivePragma: no-cacheCookie: B=ID=497891276160941:V=2:S=41529b7136

这就不解释了哈,从服务端返回的数据是这样子的:

<?xml version="1.0" encoding="gbk" ?> - <ret>  <retinfo code="0" msg="" total="1" success="" empty="" /> - <softs>- <soft>  <pnum>5</pnum>   <id>10149</id>   <os>Win7/Vista/Win2003/WinXP/Win2000/WinNT/WinME/Win9x</os>   <ver>2.8.2.126</ver>   <size>38735006</size>   <vname>91手机助手 for iPhone 2.8.2.126</vname> - <durls>- <![CDATA[ pdown://p2=301DBDF56E9D9DE308244E5967248D82C7FAE017|p3=20|p4=4800|p5=6|h1=10149_109492|h3=120|h7=5|b5=360软件管理|b6=91手机助手 for iPhone 2.8.2.126|b7=1|http://softdl1.360.cn/91assistant/91assistant_iphone_2.8.2.126.exe;http://softdl4.360.cn/91assistant/91assistant_iphone_2.8.2.126.exe  ]]>   </durls>- <dname>- <![CDATA[ 91手机助手 for iPhone_2.8.2.126.exe  ]]>   </dname>  </soft>  </softs>  </ret>

呃。。。。上下数据不配套哈!!不过没有关系,这并不影响讲解,看到上面xml的durls了么?那就是华丽的下载地址哈,这里我们也明白了为什么360软件管家下载的比别人快了吧?它有自己的N台加速服务器,而官方的原始下载链接通常被放在最后面,显然优先级是最低的。至于前面pdown://p2这样子的地址猜测是P2P下载用的,可以不用理会。
到这里就完全OK了,你可以用任何语言来写一个客户端,这样可以不用安装庞大的360安全卫士了!最后,我想说下:本文纯属闲的蛋疼、消遣作乐、学习研究之目的而撰,并没有任何商业企图或者阴谋攻击之成分。

| 12条评论标签:       

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
免费学习电脑的网站或软件
简单概述 .NET Framework 各版本区别
电脑往iphone5s/5c传照片图文教程
浅谈Visual Studio.NET的学习
C#学习笔记(一)——软件构建与.NET平台
nginx分流日志.
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服