你见过 Web 爬虫, 可是你见过 P2P 爬虫吗?

2016-02-29 06:09:02 +08:00
 CrazySpiderMan

网络爬虫爱好者为了爬取视频, 图片, 文档, 软件, 可能只想到写一个 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 不是很熟, 代码写得不是很好.

Star 到 1000 的时候, 我会写个文章, 给感兴趣但看不懂相关协议的人讲讲原理, 让每个人都可以写属于自己的 P2P 爬虫建立私人海盗湾. 包教会!

如果有兴趣, 可加 QQ 群即时交流: 145234507 (不用微信群是因为很蛋疼)

@vitovan @iugo (这就是我说的爬虫项目)

5001 次点击
所在节点    分享创造
97 条回复
AlexaZhou
2016-02-29 15:13:53 +08:00
@CrazySpiderMan
客气啦,我觉得 p2pspider 也很不错,这个想法很棒,再完善完善,可能成为一个超叼的开源项目

大家一起加油⛽️⛽️
msg7086
2016-02-29 15:22:32 +08:00
@CrazySpiderMan 耐艹请支付对应的价格。低价又耐艹的 VPS 必然是辣鸡。
jasontse
2016-02-29 15:30:44 +08:00
@CrazySpiderMan
我刚才 SSH 回家里的 RPi 上运行,现在路由器的连接数全满。😹
cnnblike
2016-02-29 16:01:47 +08:00
卧槽,这个好强啊!
PandaSaury
2016-02-29 16:08:43 +08:00
为毛没有 PHP 版本的?
CupTools
2016-02-29 16:10:11 +08:00
@CrazySpiderMan
@jasontse

机房 G 口,独服+SSD 在跑,仍然掉链。应该是哪里有内存泄漏了
CupTools
2016-02-29 16:11:20 +08:00
skylancer
2016-02-29 16:37:58 +08:00
“这几天, 我用 Node.js 重写了我去年用 Python 写出的 DHT 爬虫 + BT 客户端 = P2P 爬虫. 为什么用 Node.js 重写呢? 除了我闲得蛋疼外, 还有个原因是 Node.js 在这个 Network IO 操作频繁的项目上, 性能非常非常牛逼, 占用也非常少! 不过代码难写倒是真的. 我花了好多天才重写出来”

老实说我还以为是 MingGe 附体
CrazySpiderMan
2016-02-29 16:43:55 +08:00
@skylancer 哈哈. 我喜欢 MingGe 的那狂放的气质. 搞程序就是要这么自大, 在别人的打击下, 成长得更快.
123s
2016-02-29 17:21:09 +08:00
你写构造函数还是用旧的写法啊。
完全 ES6 化
第一条就不符合,当然我只是吐槽一下而已,很好的项目。
CrazySpiderMan
2016-02-29 17:22:43 +08:00
@123s 所以是待做嘛. 先实现, 再慢慢进化. 因为我一开始就不是很懂 ES6. ES5 + ES6 混着来的.
hyq
2016-02-29 18:06:32 +08:00
已经运行起来!!!!四国义
CrazySpiderMan
2016-02-29 19:49:29 +08:00
@CupTools 我看你 Linux 玩得挺转的. 我都忘了好多 Linux 命令了.
leon3333
2016-02-29 20:00:06 +08:00
有意思,已 star ,有时间玩一下
bearqq
2016-02-29 20:58:02 +08:00
有人吐槽连接数的问题,其实你的 python 版一样有,不要问我 vps 怎么被封的
Garantion
2016-02-29 21:10:06 +08:00
小心蜜罐。
CrazySpiderMan
2016-02-29 21:19:02 +08:00
@Garantion 看样子你研究得还挺深的. 是的, 有蜜罐. 我见过好多次了.
Garantion
2016-02-29 21:42:25 +08:00
@CrazySpiderMan 看来老司机还留了一手啊……
wbsdty331
2016-02-29 21:44:16 +08:00
Ed2k Shareaza 呢
CupTools
2016-03-01 03:49:05 +08:00
@CrazySpiderMan 睡了一觉起来, 13M 。然而线程全部挂了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/259754

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX