你见过 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 (这就是我说的爬虫项目)

5184 次点击
所在节点    分享创造
97 条回复
AstroProfundis
2016-02-29 06:27:03 +08:00
弱弱问一下,国外很多版权保护组织用来抓盗版下载者的是不是也是类似的东西
znoodl
2016-02-29 07:22:52 +08:00
肯定见过,要不然你以为那些 bt 站哪来的
irockytan
2016-02-29 07:46:46 +08:00
好像很有意思
CupTools
2016-02-29 07:51:53 +08:00
ericls
2016-02-29 08:16:17 +08:00
磁力站就这么来的啊
Xxss
2016-02-29 08:24:03 +08:00
很酷
jedyu
2016-02-29 09:12:53 +08:00
scarlex
2016-02-29 09:24:48 +08:00
readme 上面由错字, reross -> feross
CrazySpiderMan
2016-02-29 09:50:33 +08:00
@jedyu 小虾开源的手撕包菜里的 simdht_worker.py, simMetadata.py 就是我写的. 前者直接从我 github 弄过去的, 后者间接从我这里得到的(没开源). :)
CrazySpiderMan
2016-02-29 09:51:34 +08:00
@AstroProfundis 可能噢. 细思极恐!
CrazySpiderMan
2016-02-29 09:53:58 +08:00
@znoodl 有些 BT 站是纯 BT 站, 就是靠别人上传的, 不是自己主动到 DHT 网络里抓取的.
CrazySpiderMan
2016-02-29 10:02:56 +08:00
@vitovan @iugo 看起来没收到我的 AT ?
v1024
2016-02-29 10:34:51 +08:00
跑了一下 很快就抓到了 牛逼
wtbhk
2016-02-29 10:39:25 +08:00
Cool!
zhizhongzhiwai
2016-02-29 11:07:05 +08:00
你说 python 在网络 io 上不如 nodejs , 这个不太靠谱吧, 你用过 python gevent 吗?
CrazySpiderMan
2016-02-29 11:08:01 +08:00
@zhizhongzhiwai 几年前用过. 可能我太笨, 用不太好.
MyFaith
2016-02-29 11:11:14 +08:00
求问, Python 版的是哪个
CrazySpiderMan
2016-02-29 11:14:34 +08:00
@MyFaith Python 版的完整代码我没开源. 只开源了其中 DHT 爬虫部分. 地址: https://github.com/Fuck-You-GFW/simDHT

完整版只有我少数几个朋友有. 我这不把 Python 版的给重写成了 Node.js 嘛, 而且真的比我那 Python 版好多了.
ELIOTT
2016-02-29 11:19:38 +08:00
root@eu:~/p2pspider# node example.js

/root/p2pspider/example.js:7
btclient.on('complete', (metadata, infohash, rinfo) => {
^
SyntaxError: Unexpected token >
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
root@eu:~/p2pspider# node -v
v0.10.22

請問要如何解決?
vdo
2016-02-29 11:20:02 +08:00
几年前就玩过了

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

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

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

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

© 2021 V2EX