bt种子怎么用,种子链接如何用

历史早期的BT下载主要是通过开放的网站,种子链接如何用,进行种子资源的公布。在利用tracker中心服务器完成下载peer的交换,最终实现从下载用户的电脑中获取资源。在这个过程中,存在两个风险比较大的

历史

早期的BT下载主要是通过开放的网站,种子链接如何用,进行种子资源的公布。在利用tracker中心服务器完成下载peer的交换,最终实现从下载用户的电脑中获取资源。

在这个过程中,存在两个风险比较大的点:

第一个公布种子的网站,种子文件包含了所需要下载资源的全部信息,很容易被检测出种子内容是否合规,从而关闭种子公布资源站点。

1、打开百度网盘,点击“我的”。2、点击“离线下载”。3、选择新建BT任务,点击“确定”。4、点击“自动扫描本地种子文件”。5、点击“重新扫描”,稍等片刻。5、选择需要解析的文件,点击“保存到网盘”即可。

第二个提供tracker的中心服务节点,这个也是很容易从种子中查询到的,很容易被封杀。导致P2P自由的分享环境被打破。

torrent and magnet

可以使用百度网盘内的“离线下载”功能,具体操作如下:1、手机端登录百度网盘APP,首页界面即可看到【我的工具】-点击【全部工具】,选择传输工具中的【离线下载】,即可新建链接任务及新建BT任务,选择下载任务类型后粘贴下载。

首先从第一步获取种子开始,我们一般想找一部电影/游戏或者一些其他资源,一般都是网盘搜索,或者去BT站,PT去找种子,或者论坛上去找链接。先介绍下种子和磁链的关系,种子一般以.torrent结尾的索引文件。

torrent

d8:announce62: by13:uTorrent/221013:creation datei1523099215e8:encoding5:UTF-84:infod6:lengthi23715250176e4:name14:SKY HUNTER.iso12:piece lengthi4194304e6:pieces113100:xxx

这种被序列化的信息就是种子了,里面使用的是一种明文的序列化方法。bencode 第二节简单介绍。

反序列化里面主要包含以下信息:

announce:Tracker的主服务器

announce-list:Tracker服务器列表

comment:种子文件的注释

comment.utf-8:种子文件注释的utf-8编码

creation date:种子文件建立的时间,是从1970年1月1日00:00:00到现在的秒数。

encoding:种子文件的默认编码,比如GB2312,Big5,utf-8等

info:所有关于下载的文件的信息都在这个字段里,根据下载的是单个文件还是多个文件,子字段的项目会不同。

files:表示文件的名字,大小,该字段包含如下三个子字段:

length:文件的大小,用byte计算

1、安装好两个app:百度云和迅雷并注册好账户。2、打开百度网盘,找到你已经保存到云盘里的种子文件。点击右侧的向下小箭头。3、点击“下载”,选择最下方的“传输列表”。4、选择你要下载的文件。5、点击打开。进入选择下载。

path:文件的名字,在下载时不可更改

path.utf-8:文件名的UTF-8编码。

多文件Torrent的结构的树形图为

Multi-file Torrent├─announce├─announce-list├─comment├─comment.utf-8├─creation date├─encoding├─info│ ├─files│ │ ├─length│ │ ├─path│ │ └─path.utf-8│ ├─name│ ├─name.utf-8│ ├─piece length│ ├─pieces│ ├─publisher│ ├─publisher-url│ ├─publisher-url.utf-8│ └─publisher.utf-8└─nodes

单文件Torrent的结构的树形图为

Single-File Torrent├─announce├─announce-list├─comment├─comment.utf-8├─creation date├─encoding├─info│ ├─length│ ├─name│ ├─name.utf-8│ ├─piece length│ ├─pieces│ ├─publisher│ ├─publisher-url│ ├─publisher-url.utf-8│ └─publisher.utf-8└─nodes

magnet

为了解决第一种子文件包含的内容信息太多,容易被检测中其中的关键信息。第二种子文件过大,不太容易扩散分享。出现了一种替代种子文件的信息字符串就是磁力链接。形如:magnet:?xt=urn:btih:b7d9b9d9df8d7678af1f2542677e195fdbdb1674

其中主要字段是 btih,其实这里的值就是bt种子文件中info字段sha1值的base32编码后的字符串。

bencode

种子文件的bencode 包含四种类型的编码:

string类型

string类型的编码格式为[length]:[string]。以字符串的长度开头,加一个冒号,并以字符串内容结束。

示例:&34; => 3:abc

int类型

int类型的编码格式为i[int]e。以i开头,加上数字,以e结尾。

示例:123 => i123e

List<object>类型

bt种子怎么用

List<object>类型的编码格式为l[object]e。以l开头,加上列表中各个元素的编码(元素的类型同样为BEncoding支持的类型),以e结尾。

示例:List<&34;,123> => l3:abci123ee

Dictionary<string,object>类型

Dictionary<string,object>类型的编码格式为d[Key-Value Pair]e。以d开头,加上字典中每个键值对的编码,以e结尾。

以上编码list和dictionary支持嵌套。bencode编码方式也被用在后续的BT查询消息的构建上。

1、电脑端操作(最简便):直接双击种子,点开始下载即可。2、手机端操作(安卓系统):网盘直接点击种子选择下载,用百度网盘打开即可。3、手机端操作(苹果系统):苹果系统不同于安卓,先保存种子文件,再在自带的Safari浏览。

去中心化的peer交换网络 DHT

在去中心化的交换网络上,每个用户(node)都会存储一部分种子信息和种子索引信息。这些索引信息里面包含自己正在下载的资源(peer)、自己周边正在下载的资源信息(peer)、以及一些可能拥有某种子资源的信息(node)。当我们获取到某个种子或者磁链时,就会到这个网络中查询哪些用户在进行这个种子的资源下载,获取这些用户的peer信息(包含ip port token),然后和这些peer进行连接,获取资源。在查询的过程中,主要利用krpc进行调用,krpc是一种基于udp的rpc调用服务。

krpc

基本结构如下:

{&34;:&34;,--transcationID2^16two byte&34;:&34;, --message type query->q response->r error->e&34;:&34;.--ping find_node get_peers&34;:{}&34;&34;:--query params}

一条 KRPC 消息由一个独立的字典组成,其中有 2 个关键字是所有的消息都包含的,其余的附加关键字取决于消息类型。每一个消息都包含“t”关键字,它是一个代表了 transaction ID 的字符串类型。transaction ID由请求节点产生,并且回复中要包含回显该字段,所以回复可能对应一个节点的多个请求。transaction ID应当被编码为一个短的二进制字符串,比如 2 个字节,这样就可以对应 2^16 个请求。另一个每个 KRPC 消息都包含的关键字是“y”,它由一个字节组成,表明这个消息的类型。y 对应的值有三种情况:q 表示请求,r 表示回复,e 表示错误。

主要包含以下四个操作:

ping

检测节点是否存活。

最基础的请求是一个ping。&34;=&34;,一个ping请求有一个参数,&34;,它的值是一个20字节的字符串,包含网络字节排序的发送者的节点ID。一个ping的适当回复有一个关键字&34;,包含发出回复的节点的节点ID。

arguments:{&34; : &34;}response: {&34; : &34;}Example Packetsping Query = {&34;:&34;,&34;:&34;,&34;:&34;,&34;:{&34;:&34;}}bencoded = d1:ad2:id20:abcdefghije1:q4:ping1:t2:aa1:y1:qeResponse = {&34;:&34;,&34;:&34;,&34;: {&34;:&34;}}bencoded = d1:rd2:id20:mnopqrstuvwxyz123456e1:t2:aa1:y1:re

find_node

查找节点。

find_node 被用来查找给定 ID 的节点的联系信息。这时 KPRC 协议中的 &34; == &34;。find_node请求包含 2 个参数,第一个参数是 id,包含了请求节点的ID。第二个参数是 target,包含了请求者正在查找的节点的ID。当一个节点接收到了 find_node 的请求,他应该给出对应的回复,回复中包含 2 个关键字 id 和 nodes,nodes 是一个字符串类型,包含了被请求节点的路由表中最接近目标节点的 K(n) 个最接近的节点的联系信息。在规范的DHT网络中,K(n)建议值是8。

arguments:{&34; : &34;,&34; : &34;}response: {&34; : &34;,&34; : &34;}Example Packetsfind_node Query = {&34;:&34;,&34;:&34;,&34;:&34;,&34;: {&34;:&34;,&34;:&34;}}bencoded = d1:ad2:id20:abcdefghij:target20:mnopqrstuvwxyz123456e1:q9:find_node1:t2:aa1:y1:qeResponse = {&34;:&34;,&34;:&34;,&34;: {&34;:&34;,&34;: &34;}}bencoded = d1:rd2:id20:abcdefghij5:nodes9:def456...e1:t2:aa1:y1:re

get_peers

查找文件peer。

get_peers 与 torrent 文件的 infohash 有关。这时 KPRC 协议中的 &34;=&34;。get_peers 请求包含 2 个参数。第一个参数是 id,包含了请求节点的 ID。第二个参数是info_hash,它代表 torrent 文件的 infohash。如果被请求的节点有对应 info_hash 的peers,他将返回一个关键字 values,这是一个列表类型的字符串。每一个字符串包含了 &34; 格式的 peers 信息。如果被请求的节点没有这个 infohash 的peers,那么他将返回关键字 nodes,这个关键字包含了被请求节点的路由表中离 info_hash 最近的 K 个节点。

arguments:{&34; : &34;,&34; : &34;}response: {&34; : &34;,&34; :&34;,&34; : [&34;,&34;]} or: {&34; : &34;,&34; :&34;,&34; : &34;}Example Packetsget_peers Query = {&34;:&34;,&34;:&34;,&34;:&34;,&34;: {&34;:&34;,&34;:&34;}}bencoded = d1:ad2:id20:abcdefghij:info_hash20:mnopqrstuvwxyz123456e1:q9:get_peers1:t2:aa1:y1:qeResponse with peers = {&34;:&34;,&34;:&34;,&34;: {&34;:&34;,&34;:&34;,&34;: [&34;,&34;]}}bencoded = d1:rd2:id20:abcdefghij:token8:aoeusnth6:valuesl6:axje.u6:idhtnmee1:t2:aa1:y1:reResponse with closest nodes = {&34;:&34;,&34;:&34;,&34;: {&34;:&34;,&34;:&34;,&34;: &34;}}bencoded = d1:rd2:id20:abcdefghij:nodes9:def456...5:token8:aoeusnthe1:t2:aa1:y1:re

announce_peer

发起请求节点。

这个请求用来表明发出 announce_peer 请求的节点,正在某个端口下载 torrent 文件。announce_peer 包含 4个参数。第一个参数是 id,包含了请求节点的 ID;第二个参数是 info_hash,包含了 torrent 文件的infohash;第三个参数是 port 包含了整型的端口号,表明 peer 在哪个端口下载;第四个参数数是 token,这是在之前的get_peers 请求中收到的回复中包含的。收到 announce_peer 请求的节点必须检查这个 token 与之前我们回复给这个节点get_peers 的 token 是否相同。如果相同,那么被请求的节点将记录发送 announce_peer 节点的 IP 和请求中包含的port 端口号在 peer 联系信息中对应的 infohash 下。

arguments:{&34; : &34;, &34;: <0 or 1>, &34; : &34;, &34; : <port number>, &34; : &34;}response: {&34; : &34;}Example Packetsannounce_peers Query = {&34;:&34;,&34;:&34;,&34;:&34;,&34;: {&34;:&34;,&34;: 1,&34;:&34;,&34;: 6881,&34;: &34;}}bencoded = d1:ad2:id20:abcdefghij:implied_porti1e9:info_hash20:mnopqrstuvwxyz1234564:porti6881e5:token8:aoeusnthe1:q13:announce_peer1:t2:aa1:y1:qeResponse = {&34;:&34;,&34;:&34;,&34;: {&34;:&34;}}bencoded = d1:rd2:id20:mnopqrstuvwxyz123456e1:t2:aa1:y1:re

DHT and Kademlia

DHT (Distributed Hash Table)分布式哈希表,Kad网络是其的一种实现方式。Kademlia协议(以下简称Kad)是美国纽约大学的PetarP. Maymounkov和David Mazieres.在2002年发布的一项研究结果《Kademlia: A peerto -peer information system based onthe XOR metric》。

nodeid

2^160位(bit)的标志id,可以是本机mac的sha1值。在DHT分享网络中,资源的info-hash正好也是160位(bit)。在利用kad网络,将info-hash存储于与其相近的多个node中,方便在查询过程中利用get_peer进行快速逼近。在如何判定是否与其相近,kad网络利用的是xor运算。

xor distance

Kademlia 根据两个标示符之间的距离来把 <key , value> 对分配给特定的节点。对于两个 160 位标示符 x 和 y , Kademlia 把它们之间的距离定义为二者按位异或( XOR )结果的整数值, d(x,y)=x ⊕y 。

同时,XOR 也刻画出了隐含在我们基于二叉树描绘的系统中距离的概念。在160 位ID 的满二叉树中,两个IDs 间的距离大小就是包含它们的最小子树的高度。当树不是满的时,距离ID x 最近的叶子就是其ID 和x 具有最长的公共前缀的那个叶子。如果树中有空的分支,那么具有最长公共前缀的叶子就会有多个。此时,我们基于该树的空分支,把x 对应的位取反得到ID x’ ,那么距离x’ 最近的叶子即为距离x 最近的叶子。利用xor的距离测算,最坏O(n)即可获得到查询结果。

1、如果你的电脑里已经装了迅雷,那么只要双击你的bt种子文件就能自启用迅雷下载此种子文件所对应的文件(电影游戏等)。2、或者打开迅雷软件,在左上部有一个新建右面有一个倒立的黑小三角,点击一下。3、会弹出提示,打开。

routing table

路由表是一颗二叉树,其叶子是 k-buckets 。每个 k-bucket 存放着具有某些公共 ID 前缀的节点。前缀就是该 k-bucket 在二叉树中的位置。了因此,每个 k-bucket 覆盖了 ID 空间的某个范围,所有 k-bucket 合起来完整覆盖了整个 160 位 ID 空间。

节点是根据需要动态分配到路由树中的。一开始,节点A的路由树只有一个节点——覆盖整个 ID 空间的单个 k-bucket 。当A通过find_node或者get_peer获取一个新节点的联系信息时,就会试图把其插入到相应的 k-bucket 中。如果该 bucket 不满,简单将其插入即可。否则,如果该 k-bucket 的区间范围包含了A自己的节点 ID ,那么该 bucket 会分裂为两个新的 buckets ,原有的内容会被划分到这两个 buckets 中,接着重复插入过程。如果 k-bucket 已满且不含有A的节点 ID ,那么就直接丢弃这个新的联系信息。需要注意的是P2P节点在线时间是不稳定的,需要定期去ping检测每个k-bucket捅中的节点,如果死掉则剔除掉。按照beps005规范没有更新的节点15分钟需要检测一次。每次krpc操作中可以正常响应的则认为是活跃节点。

1、打开迅雷软件。2、点击左上角处的新建按钮,弹出新建任务对话框。3、点击“打开BT种子文件”选项,打开选择种子文件对话框。4、找到种子所在的位置,选择种子文件,点击打开!出现BT任务,文件设置选项对话框,选择文件下载的。

在Kad网络中还存在一种高度不平衡的二叉树均衡的过程,在BT的DHT网络中,目前没有看到使用。

BT 爬虫实现要点

1.先伪装自己向公共节点进行find_node 查询,将自己加入网络。

&34;,&34;,&34;。

2.在返回的find_node中,替换返回nodeid的某些n位,造成与返回node节点id不在区间内,继续探索整个网络节点分布。

func CreateRandomFindNode(target string) (res []byte,transid string) {msg := make(map[string]interface{})msg[&34;] = TCIDMNGR.GetTranscationID()msg[&34;] = &34;msg[&34;] = &34;msg[&34;] = map[string]interface{}{&34;: target[:15] + OwnNodeID.ToString()[15:],&34;: target}return []byte(PackageMessage(msg)),msg[&34;].(string)}

3.一般BT爬虫被动接收announce_peer 从peer的信息中使用peer wire protocol 获取 metadata 即种子信息。然后分析torrent中的信息确认文件内容。

4.注意进行ip黑名单过滤,DHT网络中,存在很多这样爬虫,在实现过程中,发现北美有个ip爬虫疯狂变更nodeid进行find_node 请求,把内存塞满的情况(1G),注意控制本地DHT表的总节点数。

5.加速搜索过程,在获取get_peer请求时进行递归get_peer请求,注意控制深度。可以扩大K-bucket桶的大小,降低二叉树的深度。

6.在使用peer wire protocol过程中,因为运营商对P2P封锁,很多情况下下载种子失败,可以使用知名种子库进行info-hash下载。

7.注意控制udp发包速度,以免被主机商防火墙误以为中毒。

PT

额外提一点,关于现在的PT,PT网络是禁止开启DHT,防止资源外泄。在PT站发布的种子都会包含PT站的私有tracker服务地址,每个会员下载的种子也会包含自己的私有token,当种子泄露到BT上时,PT管理员很容易封禁掉该会员的信息。PT致力于打造高端高活跃的P2P分享网络。

出处:

上一篇 2023年01月06 02:03
下一篇 2023年03月15 03:13

相关推荐

  • 为什么来姨妈想吐,大姨妈疼得想吐是几级

    月经跟头痛有什么关系?有些女生来月经时,会头痛,这在学术上叫做“经期头痛”。来大姨妈期间想吐,临床上经常出现,主要原因可能和激素水平是有一定关系的,但是具体的机制目前仍不是很清楚。在大姨妈期间会出现很

    2023年04月17 281
  • 怎样玩奶妈视频教程

    DNF奶妈速成该怎么玩儿?对于如今的DNF玩家来说是一个练小号的大好机会,由于有了实史诗之路的活动,在外加像素等级大冒险提供的一些材料,跳跳圈怎么玩视频教程,那么在这个情况下练小号就特别方便了。,那么

    2023年01月03 227
  • 产后能瘦多少斤,产后42天体重下降标准图

    很多妈妈好奇,当生下宝宝那一刻,体重会掉多少斤?产妇分娩,产后42天体重下降标准图,娩出的基本上是胎儿的重量,失去的羊水、胎盘、体液和血液的重量,这些重量相加,大概有4.5千克左右。当然产妇的个体情况

    2023年03月21 245
  • 原始人是怎样生活的,原始人女人生孩子

    在这片神奇而广袤的土地上,孕育了的古老文明,塑造出一个伟大的民族——中华民族。在长期的历史发展进程中,原始人女人生孩子,中华民族创造了悠久辉煌的中华文化。我们知道,中华文明是世界上唯一没有中断的文明,

    2023年01月02 285
  • 新生儿一天喝多少奶粉,1-30天新生儿奶量标准

    1-30天新生儿奶量标准,对于宝宝喝奶量,有很多新手父母都一知半解,每次在喂宝宝喝奶的时候都不能确定到底应该喂多少,下面是我为大家整理的关于新生儿奶粉量标准是多少,如果喜欢可以分享给身边的朋友喔!新生

    2023年03月27 260
  • 亲子鉴定多少钱,偷偷做亲子鉴定怎么做

    ​如何选择靠谱的亲子鉴定机构?亲子鉴定费用是多少?1、专业,正规的亲子鉴定机构,偷偷做亲子鉴定怎么做,都是经国家司法部门,一般是省司法厅批准的。有司法鉴定许可证号,司法厅网站可查询。对样本的鉴定结果,

    2023年02月17 265
  • 怎样可以怀男孩,怀男宝女宝hcg最大区别

    正在备孕的夫妻,怀男宝女宝hcg最大区别,常常会遇到家里老人给的压力。例如说要是能生个大胖小子就好了之类的要求。甚至有的家人还会找一些偏方来调理,希望能生男孩。这种生男孩的偏方到底靠谱吗?他们到底是有

    2023年01月02 209
  • 为什么16岁了还是平胸,16岁了还平胸是不是不发育了

    小区楼下内衣店的老店员闲聊中提到,16岁了还平胸是不是不发育了,“旁边大学的好多女学生上大学了才知道自己该穿文胸了”。临床中也会遇到一些十几岁的孩子穿错内衣影响胸部发育,导致扁平胸、胸部外扩和副乳等问

    2023年04月12 211
  • 父亲节的礼物怎么做,送给父亲节的礼物该怎么做

    成长的路上有父亲为我们遮风挡雨。现在长大了该表达对爸爸的感谢之情,如果不知道为爸爸做什么的话,不妨来做张贺卡吧。父亲节手工礼物简单又漂。工具:卡纸、画笔、双面胶、剪刀1、首先裁剪一张黑色的卡纸和一张白

    2023年02月05 238
  • 9个月多少周,孕9个月是38周还是36周

    怀孕33周到36周,按照医学上的界定来说属于孕9个月,已经超过8个月了。这几周发育是相当迅速的,我们分别来说下这几周的发育情况吧。33周到36周发育指标1、33周发育指标:宝宝长43厘米,重量2000

    2023年03月08 223
  • 为什么生完孩子会漏尿,顺产后尿不受控制流出

    最近很多妈妈都在吐槽,顺产后尿不受控制流出,孕晚期的时候漏尿频繁,因为增大的子宫压迫膀胱,但是都生完宝宝了,为什么还漏尿?!有时候打个喷嚏就感觉会有尿液默默流出,甚至都没法大笑和咳嗽;跑几步路也会漏尿

    2023年04月11 270
  • 勃不起来是因为什么,有精子不硬是什么原因

    第十讲日月运转的影响“日月为期度”,“日月”是指太阳月亮,“为期度”,每天每月每年的运转都有周期性。在我们中国历法上,十天叫做一旬,一个月有三旬,这些数字大概记一下,都是中国文化,实际上现在民间还在用

    2023年04月23 241
  • 婴贝儿加盟费多少钱

    俗话说,男儿有泪不轻弹。当一场培训,当一场演讲,当每一个视频映入眼帘时,眼泪直流。或许是因为团队中成员的一句话,或许因为培训讲师的一个表情动作,婴贝儿骗局,又或许是感同身受,总之,刘长燕老师的整场培训

    2023年04月06 285
关注微信