利用DHT网络原理制作bt采集蜘蛛

dhtcrawler最早的版本有很多问题,修复过的最大的一个问题是关于erlang定时器的,在DHT实现中,需要对每个节点每个peer做超时处理,在erlang中的做法直接是针对每个节点注册了一个定时器。这不是问题,问题在于定时器资源就像没有GC的内存资源一样,是会由于程序员的代码问题而出现资源泄漏。所以,dhtcrawler第一个版本在节点数配置在100以上的情况下,用不了多久就会内存耗尽,最终导致erlang虚拟机core dump。找了台服务器将磁力链接爬虫架设起来http://www.51bt.cc(51搜索)大家可以看下。


除了这个问题以外,dhtcrawler的资源收录速度也不是很快。这当然跟数据库和获取种子的速度有直接关系。尤其是获取种子,使用的是一些提供info-hash到种子映射的网站,通过HTTP请求来下载种子文件。我以为通过BT协议直接下载种子会快些,并且实时性也要高很多,因为这个种子可能未被这些缓存网站收录,但却可以直接向对方请求得到。为此,我还特地翻阅了相关协议,并且用erlang实现了(以后的文章我会讲到具体实现这个协议)。


后来我怀疑get_peers的数量会不会比announce_peer多,但是理论上一般的客户端在get_peers之后都是announce_peer,但是如果get_peers查询的peers恰好不在线呢?这意味着很多资源虽然已经存在,只不过你恰好暂时请求不到。实际测试时,发现get_peers基本是announce_peer数量的10倍。


将hash的获取方式做了调整后,dhtcrawler在几分钟以内以几乎每秒上百个新增种子的速度工作。然后,程序挂掉。


从dhtcrawler到今天为止的dhtcrawler2,中间间隔了刚好1个月。我的所有业余时间全部扑在这个项目上,面临的问题一直都是程序的内存泄漏、资源收录的速度不够快,到后来又变为数据库压力过大。每一天我都以为我将会完成一个稳定版本,然后终于可以去干点别的事情,但总是干不完,目前完没完都还在观察。我始终明白在做优化前需要进行详尽的数据收集和分析,从而真正地优化到正确的点上,但也总是凭直觉和少量数据分析就开始尝试。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
早先年,驰骋网络,积累了很多源代码…… 互联网的基因、骨头里就是自由、分享,非常感谢没有墙的时代,无限怀念,想想当时的BBS,俱往矣~ 如今的互联网却在疯狂的过滤、筛选、删除,有了N多的墙…… 不知道说什么好,很多的资源因为商业利益的原因从如今臭名昭著的搜索引擎中被删除,恐怕是很担忧后起之秀…… 遗憾的是互联网不但是必须自由的,而且是创新的天地,前辈们结实的臂膀就是无私奉献给后来者攀登的,而决不是扼杀…… 最近看到网络上的商业争吵,很是气愤~!!! 于是就开始重新注意网络蜘蛛…… 很难过,网络上已经很难找到免费的、有价值的蜘蛛代码~ 每一个程序人(包括国外的)如果没有demo,又从何入手??? 可笑的人,可笑的世界,一个自由的网络被勒上了无形的缰绳,网络上哪些免费的、有价值的资源正被搜索引擎“淡”化,包括谷沟(早先一睹古够地图后就下了结论:互联网摧毁一切!),不是吗?看看全世界的墙,从太极看:物极必反,自由的极端就是地狱、牢笼……任何东西都有互反的作用,美味的食物都带“毒”,但人们选择容忍、忽略,存在有不用付出代价的东西吗?! 我翻出我的布袋,把它们依然放回它们应该呆的地方,让更多的人们得到启发,开始创新之旅,期待您的精彩,感谢曾经自由的(不被看重)网络~~~ ------------------------------- 这个是完整的项目源代码,原汁原味,无需多舌~ 搞程序,必须e文过关,自己琢磨去吧~ 我们记住一点: 互联网上流转的都是数字,那些非数字的东西只是方便更多人使用,网络上“散布”的什么反向搜索等等只是一种愚笨的方法而已,实际上蜘蛛是根本不需要DNS、注册机构什么劳什子的,它只需要不知疲倦地啃噬不同国家地区的IP,并不是所有的IP都注册、登记哦~ 把不“规则”的物料抓回来,接着才是反向等方式的数据整理,蜘蛛织网、缝补都是需要时间积累的,这些原始的东西才是人们真正感兴趣的东西,“归置、加工”后只是一种规则下的苟且或商业的需要罢了…… 所以这个蜘蛛只需要你给(小小更动)它喂食(IP库)~ 它就会不知疲劳地四处爬,抓回的东西…… 怎么组织数据(库)才是搜索引擎的关键~!!! 抓回来就看你怎么折腾、运作了,可以肯定的是: 互联网需要的就是千奇百怪的、五花八门的搜索引擎~!!! 目前的数量远远不够,远远不够,这将是它的魅力,需要大家的智慧和义务劳动,在摧毁一切之前我们尽心营造和谐,呵呵~ ===================================== 忘记了…… 再来说下用途: 比如你在某网站,看到想看的图片,但要注册什么的看不到,还有其它资源~ 怎么办呢? 就用蜘蛛吧,把地址准确输入,它就会自动给你爬出来…… 可以设定要抓取的文件类型,…… 比如图片什么的,征婚网站有很多mm图片,就是看不到,怎么办? 用爬虫吧,当然爬虫只能爬所有http资源,数据库中的就得用另法了,呵呵~

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值