繁体   English   中英

DHT Torrent 索引站点如何有效地抓取 infoHashes?

[英]How does DHT torrent indexing sites scrape infoHashes efficiently?

我对 DHT 种子索引站点的工作原理很感兴趣。 我有使用 nodejs 编写的 inhoHashes 工作刮板库。 一开始我尝试在NAT后面执行,但效率不高,然后我用公共IP去了BSD服务器,情况确实更好。 在关于这个主题的许多出版物中,我了解到最好的解决方案是运行多个虚拟 DHT 节点以更快地抓取 infoHashes。 我有代码可以启动多个 DHT 节点实例,这些实例使用唯一的 NODEID 并在自己的端口上运行。

我的 nodejs 代码:

"use strict"

const DHT = require('bittorrent-dht')
const crypto = require('crypto');

let DHTnodeID = []
for(let i = 1; i<=10; i++){
  DHTnodeID.push({[i]:crypto.createHash('sha1').update(`myDHTnodeLocal${i}`).digest('hex')}) //Give each node unique hash ID
}

let dhtOpt =  {
  nodeId: '',      // 160-bit DHT node ID (Buffer or hex string, default: randomly generated)
  //bootstrap: [],   // bootstrap servers (default: router.bittorrent.com:6881, router.utorrent.com:6881, dht.transmissionbt.com:6881)
  host: false,     // host of local peer, if specified then announces get added to local table (String, disabled by default)
  concurrency: 16, // k-rpc option to specify maximum concurrent UDP requests allowed (Number, 16 by default)
  //hash: Function,  // custom hash function to use (Function, SHA1 by default),
  //krpc: krpc(),     // optional k-rpc instance
  //timeBucketOutdated: 900000, // check buckets every 15min
  //maxAge: Infinity  // optional setting for announced peers to time out
}

var dhtNodes = []
for(let i = 1; i<=DHTnodeID.length; i++){
  dhtOpt.nodeId = DHTnodeID[i-1][String(i)]
  dhtNodes.push(new DHT(dhtOpt))
}

let port = 6881 //run 10 DHT nodes
for(let item of dhtNodes){  
  item.listen(port, listenFce)
  item.on('ready', readyFce)
  item.on('announce', announceFce)

  port++
}

然后我找到了一个大学研究项目,其中有以下陈述:

提高吞吐量最明显的方法是使用多个 DHT 节点而不是一个。 由于针对潜在 DoS 攻击的基于 IP 地址的过滤,在单个 IP 地址上使用多个端口不被认为是可行的选择。 相反,索引器被设计为在多台主机或多宿主主机上运行。 各个实例通过共享关系数据库同步它们的索引活动,该数据库存储发现的信息哈希和每个 .torrent 文件的当前处理阶段。

作者:Aaron Grunthal - 埃斯林根应用科学大学

如果上述说法属实,是否意味着我的 10 个节点 DHT 实例将被视为 DoS 攻击,我是否会受到某种惩罚? 如果这是真的,那么那些网站(DHT 种子索引站点)如何处理这个问题? 是否有可能在一台服务器上使用一个公共 IP 运行高效的 infoHash 抓取工具? 显然,我执行的实例越多,得到的哈希值就越多,但上面的语句让我担心。 非常感谢您提前。

如果上述说法属实,是否意味着我的 10 个节点 DHT 实例将被视为 DoS 攻击,我是否会受到某种惩罚?

这取决于网络中其他节点的实施质量。 高级实现将实施各种清理策略,以保持其路由表免受恶意对等方的攻击。 其中一种策略是每个 IP 地址只允许一个路由表条目。

如果这是真的,那么那些网站(DHT 种子索引站点)如何处理这个问题?

他们可能会操作恶意节点,试图进入比正常节点更多的路由表,但会被上述清理策略所抵消,因此是一种不可靠(并且对生态系统有害)的策略。 它们还可以从您报价中提到的多个 IP 地址运行。

是否有可能在一台服务器上使用一个公共 IP 运行高效的 infoHash 抓取工具?

BEP 51支持从单个主机进行高效索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM