主页 > imtoken钱包如果关网 > 洪流搜索引擎的原理是什么?

洪流搜索引擎的原理是什么?

imtoken钱包如果关网 2023-02-13 05:33:12

【一步一步教你写一个BT种子嗅探器】原理

前言

看到了lantern,一个非常流行的绕墙工具,使用了P2P的思想,想了解一下P2P相关的协议。看了最流行的BT协议的官方文档后,萌生了实现BT协议的想法。顺便说一下,我按照协议实现了一个BT种子嗅探器。

也有人将BT种子嗅探器称为BT种子爬虫。个人感觉它的行为特征和传统的网络爬虫有很大区别,但是和sniffer很像,所以暂且称它为BT种子sniffer。

接下来会写一系列文章来介绍它的原理和具体实现。本文先勾勒大纲,介绍其工作原理,以把握全局。后续文章将介绍具体细节。

种子帝bt种子搜索_鲨鱼bt种子搜索_bt种子搜索

背景知识

在讲原理之前,你必须对BitTorrent(BT)协议有一些基本的了解,才能理解接下来要讲的嗅探器。BT协议实际上是一个协议簇,BEP-3是它的基本协议内容,其他的大部分都是围绕这个扩展或补充的。要从 BitTorrent 网络下载资源,必须存在以下部分:

客户端在下载资源时,首先根据bencode(bencode是BT协议中的编码方式)对torrent文件进行解码,获取Tracker服务器的地址和资源信息,并与Tracker服务器通信获取其他拥有下载了资源(其他人已经下载了资源)。拥有资源的客户端或发布资源的人),然后与这些对等方进行通信以获得他们想要的部分,即相互通信。由于文件被分成许多块同时从不同的地方下载,这就是为什么 BitTorrent 通常下载速度很快。

bt种子搜索_鲨鱼bt种子搜索_种子帝bt种子搜索

DHT 协议

从上面我们知道Tracker服务器在下载资源的过程中起着至关重要的作用。只有通过它,我们才能得到其他对等体的信息,然后下载,但这也成为了BT协议的一个弱点。如果 Tracker 服务器挂掉或被阻塞或阻塞,整个网络瘫痪。由于有些资源是受版权保护的,有些资源是受限制的,比如色情资源,Tracker 服务器很容易被强制关闭或被屏蔽。后来聪明人发明了另一种协议bt种子搜索,分布式哈希表,简称DHT。该协议用于弥补这一弱点。

BT协议套件中的DHT协议是基于Kademlia协议的,其基本思想很好理解。DHT由很多节点组成,每个节点保存一张表,表中记录了自己的好友节点。当你向一个节点A查询另一个节点B的信息时,A会查询自己的好友列表。如果包含B,那么A会返回B的信息,否则A会返回离B最近的k个节点。然后你再次向k个节点查询B的信息,这样循环下去,直到查询到B的信息。查询到 B 的信息后,应该向所有之前查询到的节点发送一个通知,告诉他们你有 B 的信息。

bt种子搜索_种子帝bt种子搜索_鲨鱼bt种子搜索

比如我现在想要Angelababy的微信(呃……我该怎么办),我会从我的微信好友中挑选出k个最有可能认识她的人,然后问他们有没有Angelababy的微信帐户。信号,如果他们中的一个知道,那他就把Angelababy的微信给我,我就不继续问别人了。如果他不认识他,他会在他的微信朋友中向我推荐最有可能认识Angelababy的k个人,然后我会继续与这k个人,以此类推,直到我问为止。好了,既然有了Angelababy的微信,那我就跟之前问过的大家说一下,我有Angelababy的微信了。

客户端在下载资源时,会通过上面的方法找到peers信息,让大家充当tracker,解决了上面的问题。

嗅探器原理

bt种子搜索_鲨鱼bt种子搜索_种子帝bt种子搜索

终于到了核心部分。

BT 种子嗅探器使用 DHT 协议获取对等方信息,并将向他之前查询过的节点发送通知。这是嗅探器的核心。

剩下的就是让我们获得更多的节点来通知我们。那么我们如何让更多的节点通知我们呢?

鲨鱼bt种子搜索_种子帝bt种子搜索_bt种子搜索

这就是BT torrent sniffer的工作原理,保持简单:)

洪流下载器

在BT网络中,通过上述原理接收到的信息不是种子,而是发送者的ip和端口,以及种子的infohash(可以理解为种子的id)。如果我们想得到种子,还有很多工作要做。这涉及到另一个非常重要的协议 BEP-09。BEP-09 指定如何通过种子信息哈希获取种子。

这里不说,只说大体流程。首先与我们收到的报文中的ip:port建立TCP连接,然后发送握手报文,并通知对方支持BEP-09协议,然后向对方请求种子信息,收到后对方返回的种子信息bt种子搜索,依次或同时请求各个区块。收集完所有块后,拼接起来,通过sha1算法计算出它们的infohash。如果 infohash 值与我们请求的相同,则保存,否则丢弃。

应用

这样就可以获得大量的洪流信息,可以索引,构建自己的BT洪流搜索引擎,构建自己的海盗湾。但是需要注意版权问题和色情资源问题。