最近对 DHT 网络感兴趣,于是自己用 Nodejs 撸了个 DHT 爬虫
最近对 DHT 网络感兴趣,于是自己用 Nodejs 撸了个 DHT 爬虫
自己撸的一个 nodejs 版 dht 爬虫,用来加入 dht 网络,获取 infohash ,代码见 gayhub.
gayhub: https://github.com/beilunyang/dhtCrawler
从昨天晚上 8 点开爬至今,已经用我 5 美刀的 DO vps 爬了 1200 多万 infohash 。。由于还没搞定 metadata 获取的代码,所以具体有多少真实种子还不知道(手工试了几个,发现获取率还挺高的)。
我遇到的问题,以及一些琐碎都已经在代码里注释了,欢迎对 dht 感兴趣的新人参考(大佬们,多给点意见( ⊙ o ⊙ )啊!)。
node js 比 python 还牛逼?
求教使用教程
见文档
>采用 nodejs 编写,由于 js 天生优秀的异步非阻塞 io 支持,无需向 python 等其他语言一样采用超时机制同步等待响应,所以速度非常快。
…Python 也有协程,有 async/await 。原生支持异步。看看 uvloop 你就知道有多快
注意蜜罐
已充电。。对 python 的了解并不多,只用过 python2 ,没接触过 python3, 在我映像中 python2 异步一般都是通过 twisted ,谢谢指正。
有什么 dht 的入门资料?
gevent 对 windows 的支持貌似不怎么好,而且 js 天生就是异步,觉得还是 js 更省事。 golang 完全没接触过(๑•ั็ω•็ั๑)
http://github.com/Fuck-You-GFW/p2pspider
这个, 我写的, 可以获取 metadata, 也是 Node.js 写的, 1300+ star
我大 C#使用异步之后会更快吧~
膜拜大角虫
实现过一个 ruby 的,在国内非公网的 ip 上爬,并且拿到 infohash 在各个种子网站上下载,内容丰富~
期待 c#版
不错,先学习了
您好,我测试了一下,速度确实很快,但是还没有成功解析一个了,我这里有一个 python 实现的,获取的能一多半解析吧,但是速度太慢了,想问下楼主,您现在还搞这个么?
收藏了
对 DHT(分布式哈希表)网络感兴趣并尝试用 Node.js 实现一个 DHT 爬虫是一个很好的学习和实践项目。DHT 网络通常用于去中心化的文件共享和分布式数据存储,比如 BitTorrent 协议中的 DHT。
下面是一个简单的 DHT 爬虫示例,它使用 bittorrent-dht
这个 Node.js 库来查找并连接到 DHT 网络中的节点。这个示例将展示如何初始化 DHT 客户端、监听路由事件并打印找到的节点信息。
首先,确保你已经安装了 bittorrent-dht
:
npm install bittorrent-dht
然后,你可以使用以下代码来创建一个 DHT 爬虫:
const DHT = require('bittorrent-dht');
const dht = new DHT();
dht.on('error', (err) => {
console.error('DHT error:', err);
});
dht.on('peer', (peerInfo, rinfo) => {
console.log('Found peer:', peerInfo, 'from', rinfo);
});
dht.listen(6881, () => {
console.log('DHT client listening on port 6881');
// 查询某个 info hash(例如一个 torrent 的 info hash)
const infoHashBuffer = Buffer.from('your_info_hash_here', 'hex');
dht.announce(infoHashBuffer, 6881, () => {
console.log('Announced info hash to DHT');
});
});
在这个示例中,your_info_hash_here
应该替换为你要查询的 torrent 的 info hash 的十六进制字符串。这个爬虫会监听 DHT 网络中的路由事件,并打印找到的 peer 的信息。
请注意,DHT 网络中的节点可能会对你的查询进行响应,但也可能不会。此外,请确保你的操作符合相关法律和道德准则。