V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
am0zing
V2EX  ›  分享创造

[分享] 基于 nodejs 开发的“磁力链接”爬虫

  •  2
     
  •   am0zing · 2015-03-30 16:17:20 +08:00 · 9639 次点击
    这是一个创建于 3522 天前的主题,其中的信息可能已经有所发展或是发生改变。
    学习nodejs,顺便写来玩玩的,可以抓取dht网络里活跃的资源,也就“bt下载”的资源。

    爬虫在一台1核1G的VPS上跑了几个月了,目前收集到300W+资源。

    成品地址: http://findit.so

    Github地址: https://github.com/keenwon/antcolony
    第 1 条附言  ·  2015-04-01 09:38:08 +08:00
    AntColony的原理是伪装成一个p2p节点,接受别人的"查询",例如有别的节点会问你:“你有没有在下载infohash是0000000...的资源啊?或者知不知道谁在下载呢?”根据协议规则,AntColony会告诉它几个“最佳”节点,对方会继续向这些节点查询它要找的infohash。

    而此时,AntColony就知道了“有人在下载infohash是0000000...”的资源了,AntColony会记录下来这个infohash,去第三方的种子托管服务器下载这个infohash对应的种子,然后解析种子文件,把这个资源的标题,文件列表,大小等信息索引下来,访问http://findit.so就可以搜索到了。

    原理就这样。
    第 2 条附言  ·  2015-04-05 17:27:30 +08:00
    有朋友尝试部署AntColony,遇到不少问题,今天我搞了一台vps,从头到尾部署了一遍,写了个文档,需要的可以看看 https://github.com/keenwon/antcolony/blob/master/doc/%E9%83%A8%E7%BD%B2%E6%96%87%E6%A1%A3.md
    第 3 条附言  ·  2016-01-03 20:20:34 +08:00
    原来的域名失效了,新地址 http://findit.keenwon.com
    20 条回复    2016-01-03 20:23:47 +08:00
    Themyth
        1
    Themyth  
       2015-03-30 17:25:41 +08:00
    不错,自动入库的么
    am0zing
        2
    am0zing  
    OP
       2015-03-30 17:28:36 +08:00
    @Themyth 整个过程分多个进程的,有负责爬资源的(收集种子的infohash);有负责下载资源的(下载种子文件);有负责入库的(解析下载到的种子文件,存入mongodb)
    yimity
        3
    yimity  
       2015-03-31 09:30:02 +08:00
    不错,star 了。
    solupro
        4
    solupro  
       2015-03-31 09:44:13 +08:00
    感谢分享,一直想学习DHT,但一直没静下心来(/´Д`)/
    am0zing
        5
    am0zing  
    OP
       2015-03-31 09:58:43 +08:00
    @yimity
    @solupro
    多谢支持!
    sewyu
        6
    sewyu  
       2015-03-31 10:24:13 +08:00
    先学习一下怎么用,纯粹是感兴趣,非常感谢分享
    kofj
        7
    kofj  
       2015-03-31 11:51:25 +08:00
    比我golang写的好多了,点个star.之前的codeit.cn也是磁力搜索引擎,结果搜索内容都太敏感了,又是cn域名,不得不停了下来.
    am0zing
        8
    am0zing  
    OP
       2015-03-31 12:00:31 +08:00
    @kofj 磁力搜索这种东西,内容没有不敏感的,终究只能玩玩了。。。
    goodbest
        9
    goodbest  
       2015-03-31 12:13:21 +08:00
    能说一下现在数据库用了多少空间么?
    am0zing
        10
    am0zing  
    OP
       2015-03-31 12:48:53 +08:00   ❤️ 1
    @goodbest
    mongodb 312W条数据,将近10G,mongo实际占用大概12G,数据备份压缩后大概1.7G
    目前VPS总共只有20G,所以爬虫已经停了好些天了
    goodbest
        11
    goodbest  
       2015-03-31 12:53:51 +08:00
    @am0zing 感谢。看起来也挺多的。

    你代码里的female、male、queen啥的是模拟雌雄蚁的角色么?挺有意思的
    am0zing
        12
    am0zing  
    OP
       2015-03-31 12:57:01 +08:00
    @goodbest 是滴,动物世界看多了。。。
    julor
        13
    julor  
       2015-03-31 16:35:29 +08:00
    很不错,刚才用“少妇”做关键字,找到一些好东西!
    am0zing
        14
    am0zing  
    OP
       2015-03-31 17:00:36 +08:00
    @julor -_-|||
    atshow
        15
    atshow  
       2015-04-05 02:08:23 +08:00
    赞,这得持续抓才有价值。
    am0zing
        16
    am0zing  
    OP
       2015-04-08 14:56:23 +08:00
    @atshow 是的,但是mongodb真的太tmd浪费硬盘了,已经养不起了
    youxiaer
        17
    youxiaer  
       2015-08-17 02:33:19 +08:00
    楼主,问一下,从infohash找到对应的种子文件,只能从指定的网站上面去下载吗?
    am0zing
        18
    am0zing  
    OP
       2015-10-13 13:48:57 +08:00
    @youxiaer
    好久没上了,我该设置个邮件提醒什么的。
    不一定的要从指定网站下载,你可以根据 infohash 下载种子文件,就像迅雷一样,输入磁力链接,他会先下载种子文件,然后开始下载实际内容。
    不过如果从 infohash 下载种子文件这块,我没去研究, bittorrent.org 有相关文档,直接从第三方网站下载是最省事的。
    la0wei
        19
    la0wei  
       2015-11-10 10:54:46 +08:00
    有什么 vps 对这方面限制少的?
    am0zing
        20
    am0zing  
    OP
       2016-01-03 20:23:47 +08:00
    @la0wei vps 限制了什么?可以用 digitalocean : https://www.digitalocean.com/?refcode=6f104d26aad1 ,用这个链接可以赚 10 刀,当然我也可以赚 哈哈。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1131 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:01 · PVG 03:01 · LAX 11:01 · JFK 14:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.