你见过 Web 爬虫, 可是你见过 P2P 爬虫吗?
发布于 25 天前 作者 laomayi 848 次浏览 最后一次编辑是 20 天前 来自 分享

网络爬虫爱好者为了爬取视频, 图片, 文档, 软件, 可能只想到写一个 Web 爬虫, 从各大网站爬取. 但是你知道吗? 这个世界上, 还有 DHT 协议, BitTorrent 协议.

想想看, 全世界每天有那么多人通过 BT 种子 & 磁力链接下载资源(有你懂滴的资源), 如果写个爬虫, 从 DHT 网络里"监听"人们正在下载的资源, 然后把这个资源的种子信息给下载并保存下来. 打造成属于自己的海盗湾!

这几天, 我用 Node.js 重写了我去年用 Python 写出的 DHT 爬虫 + BT 客户端 = P2P 爬虫. 为什么用 Node.js 重写呢? 除了我闲得蛋疼外, 还有个原因是 Node.js 在这个 Network IO 操作频繁的项目上, 性能非常非常牛逼, 占用也非常少! 不过代码难写倒是真的. 我花了好多天才重写出来.

爬虫运行演示视频: http://v.youku.com/v_show/id_XMTQ4NTIzMDU2MA==.html

默认参数下, 在最便宜的日本区 Vultr VPS 运行 24 小时, 可”监听"到 50 万 个 BT 种子信息. 我那个 Python 版的爬虫(只开源一部分), 已经爬了 1400 万种子信息, 连续运行了一年多.

我平常下载资源, 都是从我私人种子数据库里搜索, 然后拿磁力链接去下载. 比如搜索引擎找不到的新电影, 我都能从我数据库找到.

代码在这里: https://github.com/Fuck-You-GFW/p2pspider

求 Star !

如果你对此也有研究, 建议你看看 README.md, 列有这个项目如何发展的计划. 如果你对此感兴趣, 请 fork 它, 贡献你的智慧.

如果你对 Node.js 比较熟练, 也欢迎你重构我的代码, 我对 Node.js 不是很熟, 代码写得不是很好.

19 回复

加起来不过1000行吧

必须要在VPS执行吗?我在本地执行,感觉没任何日志输出呀。 还有个问题,下载后的种子保存在哪里了呢?

初略的看了一下代码,你是不是在某几个站里面爬到里面所有的磁链接,然后用node某些模块通过磁链接来下载?

@tanshanli 建议公网的主机来运行. 局域网里几乎无效. 保存种子的代码需要自己去写, 方便定制. 因为有些人想保存到 json 文件里, 有的想远程传输到别的服务器去.

@satrong 恰恰相反, 我是真的从 DHT 网络里爬取的. 你在代码里看到的网址, 那是初始节点. 是加入 DHT 网络, 就好像你要加入某个圈子, 总得有个人带你进这个圈子对吧?

我没用"某些Node 模块"去下载磁力链接. 都是自己造的轮子.

@laomayi 看着很牛逼的样子,我得好好的阅读代码了

对dht协议很感兴趣呢,只是不用qq群。。。

@reverland QQ群只是用来快速交流. 虽然看起来很 Low, 但是有用就行.

@laomayi 不low啊。。。不用而已。。。

楼主的github 用户名霸气侧漏啊

用了一下。。。就出现番号了。。。

看来dht最活跃的还是这东西啊。。。。

mark,不为用,只为源码

@timqian 哈哈, 都只有你注意到了我用户名.

@youxiachai 哈哈, 别说话, 赞我.

@laomayi 把你的代码用 ES6 重写了下,已发 pull request

回到顶部