转水木清华帖子:迅雷协议分析笔记_20071118

发信人: RunningOn (挥着翅膀的男孩), 信区: Python
标 题: 迅雷协议分析笔记_20071118
发信站: 水木社区 (Sun Nov 18 22:28:58 2007), 转信

  前几天想出个主意想做个Linux下的迅雷。今天抽了点时间搞了一下下,分析出了迅雷的索引服务器地址与使用的端口,算是完成了第一步吧。发在这里,也算是笔记。如果有人也感兴趣,不妨看看。

  参考文献:

http://student.bnu.edu.cn/bbs/archiver/tid-3086.html

  写得很不错,原文在btbbs.org,不过我打不开这个BBS。但文章是06年12月的,文中的IP地址与端口现在迅雷都已经换了,所以只能作为参考。同理,本文也可能随时过时,所以读者请注意发文时间为2007年11月18日,转载请注明来源水木社区,作者RunningOn。

  迅雷的原理,就是在下载文件时,向服务器询问会有哪些地方还有相同的文件,如果有,有同时在这些地方一起下载,以达到加速的目的。上面提到的服务器,不妨称为索引服务器。迅雷使用的是被称为p2sp的技术。

  索引服务器有三个:58.254.39.4, 58.254.39.6 和 58.254.39.8。当这三个服务器都无法连接时,就不能搜索到其它有相同文件的站点,因此无法加速下载。
  迅雷索引服务器直接使用80端口(根据参考文献,迅雷以前曾用其它端口,80端口以前仅作为备用端口),因为80端口是浏览网页的端口,封它的代价太大,所以要禁迅雷一般不能用封端口的办法,只能封IP。
  当三个索引服务器的IP都被封时,用迅雷下载会依次发生以下现象:
  1.迅雷尝试连接58.254.39.4,会尝试三次,三次的timeout分别(精确)是3, 6, 12秒。
  2.尝试连接58.254.39.6,也是三次,方法同1
  3.尝试连接58.254.39.8,同1
  4.如果以上都失败,则休息120秒,然后返回1。
  在连接索引服务器的同时,如果原始连接(就是在网页上要用迅雷下载的链接)可以下载,就会并行地下载。

  迅雷使用的端口和IP地址众多,有论坛和各种网页(广告)的地址,垃圾信息众多,没有好的网络工具进行过滤。我在分析时利用了python帮助分析。方法是:
  准备九个要下载的文件的地址
  对每个要下载的文件,做以下工作:
  1.打开ethereal,将缓冲设为100M,开始抓包
  2.用迅雷下载文件
  3.不必等2进行完毕,停止抓包,将数据导出为文本文件。
  4.停止下载
  这样得到九个文本文件。用python抓出每个文本文件中出现过的IP,重复的不计,分别存到九个新的文本文件ip1.txt~ip9.txt中
  再用python分析这九个新的文本文件,统计每个IP出现的次数,将出现了多次的IP打印出来,去掉那些肯定不是迅雷服务器的IP(比如自己的IP以及DNS的IP等),得到大约十个”可疑”的IP地址。
  打开防火墙(我用的天网),封掉这些IP地址,发现迅雷不能使用,说明所有的服务器地址都在那十个中。然后再手动排除,最后得到迅雷索引服务器的地址。
  IP的分析只需要简单的正则表达式,数据结构用字典,很容易,代码就不贴了,相信也没人想看代码。

发信人: xxxss (请输入新的昵称), 信区: Python
标 题: Re: 迅雷协议分析笔记_20071118
发信站: 水木社区 (Sun Nov 18 23:02:43 2007), 转信

我建议你先这样:

找几个服务器地址(测试用的),是下载同一个文件的,把他们的地址存成某种形式,
比如文件啦,数据库啦,你会啥用啥。然后
1。用python写个程序去获得这些地址。最开始可以是直接读文件,
之后可以换成C/S模式,服务器存放刚才那个地址列表,客户端去读取。
2。用python写个程序去调用某个牛b下载软件去那个列表上的各个地址分块下载那个文件.当然要是你牛,可以不用调用别人的,自己拿python写个分块下载软件。
3。上面两个都做完了,雏形有了,该作增加地址资源表的功能了,客户端每次增加一个
下载任务,就到服务器的资源列表库里面查找,找到有同样的文件同样的地址,就
把列表读回来,如果库里没有,在下载完成后算文件的校验值,相同的话就把这个地址
也存到库里成为新资源。
4,后面就是完善了。

这样你能早点出点原型和成果,而且少浪费点时间做无用功,
你要做的东西的技术难度主要在分块下载软件这块,至少我觉得是,因为我不知道哪个
现成的分块下载软件比较好用的,你既然要做linux迅雷,那估计下载软件这块你得自己
写,或者拿人的来改。
没有分块下载功能模块,你干别的都是扯淡。。
其次就是和服务器交互这块,这个在初期可以简单点,问题不大。

最后的资源管理,这个没啥技术难度,主要是市场因素。。用的人多资源多,
这也是迅雷唯一和别的下载软件不一样的地方。
初期别把注意力放在这,没蛋用,你把迅雷研究的再透,他的核心价值是那些资源。

添加一条评论 »本文还没有评论

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Powered by Proudly powered by WordPress.