技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 360软件管家通信协议分析

360软件管家通信协议分析

浏览:3354次  出处信息

曾经说过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.1
Accept: */*
Accept-Encoding: gzip, deflate
User-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.cn
Connection: Keep-Alive
Pragma: no-cache
Cookie: 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.1
Accept: */*
Accept-Encoding: gzip, deflate
User-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.cn
Connection: Keep-Alive
Pragma: no-cache
Cookie: 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安全卫士了!最后,我想说下:本文纯属闲的蛋疼、消遣作乐、学习研究之目的而撰,并没有任何商业企图或者阴谋攻击之成分。

建议继续学习:

  1. 介绍几个QQ开源项目及协议下载    (阅读:8947)
  2. websocket 通信协议    (阅读:5456)
  3. MySQL协议分析    (阅读:4773)
  4. 大佬与大话 之 阿里:绝不和360合作    (阅读:4162)
  5. 简明HTTP协议    (阅读:3860)
  6. SNMP概述–运维必知的协议基础    (阅读:3954)
  7. 即时通信与浏览器多TAB通信    (阅读:3561)
  8. Nginx的master和worker进程间的通信    (阅读:3701)
  9. TCP协议状态详解    (阅读:3674)
  10. 360的产品经    (阅读:2776)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1