互联网冲浪膜法:Magnet磁链与ed2k

Magnet磁链

磁力链接是对等网络中进行信息检索和下载文档的程序。和基于位置连接的统一资源定位符不同,磁力链接是基于元数据文件内容,也就是说,磁力链接不基于文件的IP地址和定位符,不依赖一个处于启
动状态的主机就可以下载。

BitTorrent协议下载的特点

下载的人越多,提供的带宽也就越多,下载速度越快。拥有完整文件的用户也会越来越多,使得文件“寿命不断延长”,即“热门资源”

磁力链接参数规则

磁力链接由一组参数构成,以协议头magnet开头,参数顺序无顺序规则,常用的规则如下:

1
2
3
magnet:? xl = [字节大小]& dn = [文件名(已编码URL)]& xt = urn: tree: tiger: [ TTH hash(Base32) ]

INFORM7

种子发布

发布者根据需要发布的文件生成一个.torrent文件,也就是种子文件,它本质上就是一个文本文件,包含了如下内容:

  • Tracker信息:存储BT下载中需要用到的Tracker服务器地址和针对Tracker服务器的设置
  • 文件信息:将需发布的文件分成大小相等的虚拟块,把每个块的索引信息和Hash验证码写入文件信息
    因此,种子文件就是被下载文件的索引

种子下载

首先拿到相应的种子文件(或磁力链接),使用BT客户端进行下载。BT客户端先解析种子文件得到Tracker地址,再连接Tracker服务器,Tracker服务器回应下载请求,提供下载者和其他下载者的IP(也>包括发布者),下载者再连接其他下载者(基于DHT网络,请看下方解释)。根据种子文件中的文件信息,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。下载者每得到一个块,就计算>块的Hash验证码与种子文件中对比,一样则块正确,不一样则需要重新下载这个块。

DHT网络:Distributed Hash Table,分布式哈希表。是一种分布式存储方式。DHT网络是Tracker-less的,不依赖于其他Tracker服务器。每个客户端负责一个小范围的路由,并负责存储一小部分数>据,实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连接Tracker就可以下载,软件会在DHT网络中寻找下载同一文件的其他用户并与之通信,从而下载文件。

热知识:一般来说,BT工具下载到最后都会停顿一会儿。大概率是在校验已下载的资源是否正确,一般不会很久。但国内有些应用在下载到99.99%时卡住,多半是平台在拿你的上行带宽给其他VIP用户提
供下载。

关于磁力链接和种子

磁力链接是基于文件内容的Hash值来链接文件,生成唯一文件识别符,在DHT网络中定位下载文件的。实际上还是通过种子来进一步下载,但由于现在对种子封锁严重,传播种子容易被和谐,作为文本的>磁链更易于传播

  • 种子:稳定性高,信息多,不利于传播
  • 磁链:不稳定,仍需获得种子,但便于扩散

种子与磁链是可以互相转换的,详情Google。在Python中,libtorrent库也封装了BT相关的内容


Magnet磁链案例

完整磁力链接

1
2
3
magnet:?xt=urn:btih:1852322df25b7117f8d2a11d46d032418e584a71&dn=[www.domp4.cc]教父3.1990.BD1080p.中文字幕.170分钟版.mp4&tr=https://tracker.iriseden.fr:443/announce&tr=https://tr.highstar.shop:443/announce&tr=https://tr.fuckbitcoin.xyz:443/announce&tr=https://tr.doogh.club:443/announce&tr=https://tr.burnabyhighstar.com:443/announce&tr=https://t.btcland.xyz:443/announce&tr=http://vps02.net.orel.ru:80/announce&tr=https://tracker.kuroy.me:443/announce&tr=http://tr.cili001.com:8070/announce&tr=http://t.overflow.biz:6969/announce&tr=http://t.nyaatracker.com:80/announce&tr=http://open.acgnxtracker.com:80/announce&tr=http://nyaa.tracker.wf:7777/announce&tr=http://home.yxgz.vip:6969/announce&tr=http://buny.uk:6969/announce&tr=https://tracker.tamersunion.org:443/announce&tr=https://tracker.nanoha.org:443/announce&tr=https://tracker.loligirl.cn:443/announce&tr=udp://bubu.mapfactor.com:6969/announce&tr=http://share.camoe.cn:8080/announce&tr=udp://movies.zsw.ca:6969/announce&tr=udp://ipv4.tracker.harry.lu:80/announce&tr=udp://tracker.sylphix.com:6969/announce&tr=http://95.216.22.207:9001/announce

AWK

必要参数

磁链原文(切分,前半段)

1
2
3
magnet:?xt=urn:btih:1852322df25b7117f8d2a11d46d032418e584a71

ROUTEROS
  • magnet: 协议名
  • xt: eXact Topic,资源定位点
  • urn: Uniform Resource Name,统一资源定位符
  • btih: BitTorrent info hash,哈希值(哈希方法名),可以使用SHA1、MD5等,是必备参数

可选参数

一般来说,一个磁力链接拥有上面的参数即可找到资源,其他可选参数如下:

  • dn: display name,向用户显示的文件名
  • tr: tracker,表示tracker服务器地址的地址
  • kt: 关键字,更笼统的搜索,置顶搜索关键字而不是特定文件
  • mt: 文件列表,链接到一个包含磁力链接的源文件

磁链原文(切分,后半段)

可以看到基本都是tracker服务器地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
&dn=[www.domp4.cc]教父3.1990.BD1080p.中文字幕.170分钟版.mp4
&tr=https://tracker.iriseden.fr:443/announce
&tr=https://tr.highstar.shop:443/announce
&tr=https://tr.fuckbitcoin.xyz:443/announce
&tr=https://tr.doogh.club:443/announce
&tr=https://tr.burnabyhighstar.com:443/announce
&tr=https://t.btcland.xyz:443/announce
&tr=http://vps02.net.orel.ru:80/announce
&tr=https://tracker.kuroy.me:443/announce
&tr=http://tr.cili001.com:8070/announce
&tr=http://t.overflow.biz:6969/announce
&tr=http://t.nyaatracker.com:80/announce
&tr=http://open.acgnxtracker.com:80/announce
&tr=http://nyaa.tracker.wf:7777/announce
&tr=http://home.yxgz.vip:6969/announce
&tr=http://buny.uk:6969/announce
&tr=https://tracker.tamersunion.org:443/announce
&tr=https://tracker.nanoha.org:443/announce
&tr=https://tracker.loligirl.cn:443/announce
&tr=udp://bubu.mapfactor.com:6969/announce
&tr=http://share.camoe.cn:8080/announce
&tr=udp://movies.zsw.ca:6969/announce
&tr=udp://ipv4.tracker.harry.lu:80/announce
&tr=udp://tracker.sylphix.com:6969/announce
&tr=http://95.216.22.207:9001/announce

BASH

eD2k链接

wD2k链接是指示在eDonkey网络上存储的文件,eDonkey是分布式、基于服务器的P2P文件分享网络。与magnet类似,但magnet使用的算法不仅限于ed2kHash。ed2k链接同样可以通过迅雷等App下载到资源,ed2k链接在国内俗称电驴。

eD2k链接格式

ed2k://|类型|其他信息|/
ed2k://:协议名,注明该协议是ed2k协议
类型:链接类型,三种链接类型分别是:file(文件)、server(服务器)、serverlist(服务器列表)
其他信息:具体的其他信息,例如文件名、文件大小、文件哈希、IP地址端口等,如存在多个则使用|分开

eD2k链接格式

典型的基础的ed2k文件链接需要包含三样信息:

文件名

文件大小(单位字节)

文件的ed2kHash值(MD4算法的变体)

例如:

1
2
3
4
ed2k://|类型|文件名|文件大小|ed2kHash|/
ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|/

GHERKIN

有的ed2k链接包含了一或多个来源的IP端口,例如

1
2
3
4
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|/|sources,<IP:PORT>|/
ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|/|sources,202.89.123.6:4662|/

GHERKIN

有的ed2k链接包含根Hash值,用于传输文件时纠正恢复,例如

1
2
3
4
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|h=<根Hash>|/
ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|h=SQ7LUTYUSMDBP2TVE2M7T6VUBLU324KF|/

GHERKIN

少部分链接包含如下几种参数:

1
2
3
4
5
6
7
# 包含完整的Hashset,可确保文件的正确和发布新的/罕见的文件
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|p=<Hash Set>|/

# 包含兼容HTTP来源的ed2k链接,如
ed2k://|file|<文件名>|<文件大小>|<文件Hash>|s=<文件的HTTP地址>|/

GHERKIN

ed2k链接案例分析

完整电驴链接
ed2k://|file|【高清MP4电影www.domp4.cc】慈禧秘密生活.1994.127分钟完整版.DVDRip.国粤双语.中字.mkv|2650427059|50E58646F85EA2EF6CB866969B6C7592|h=NZG53QOLS3CXXT2USAIY6XRPV4V27O77|/

1
2
3
4
5
6
7
8
协议名:   ed2k://
文件类型: file
文件名: 【高清MP4电影www.domp4.cc】慈禧秘密生活.1994.127分钟完整版.DVDRip.国粤双语.中字.mkv
文件大小: 2650427059
eD2kHash: 50E58646F85EA2EF6CB866969B6C7592
根Hash: h=NZG53QOLS3CXXT2USAIY6XRPV4V27O77

JBOSS-CLI

ed2k与magnet磁链

ed2k和bt磁链发展这么些年,很多专业名词例如Tracker、server、DHT网络、KAD网络等,不是此处解释的重点,我不再赘述。

  • magnet磁链: 去中心化的BitTorrent,基于DHT网络,文件需要发布者做种,支持IPv6
  • ed2k:描述KAD网络中文件的一段字符,基本中心服务器,文件是基于文件分享的,不支持IPv6

(补充,转)手搓一个种子

比较简单的方式是直接使用BT(BitTorrent)软件创建,我下面将使用「比特彗星(BitComent)」软件为您演示种子和磁力链的创建方法。

首先,点击文件、制作Torrent文件。

制作Torrent文件

制作Torrent文件

然后选择您要共享的文件或文件夹、填写Tracker服务器及DHT网络节点列表:

1
2
3
4
5
https://tracker.renfei.net:443/announce
udp://tracker.publicbt.com:80/announce
udp://tracker.openbittorrent.com:80/announce

AWK

这里我使用了一个我站提供的Tracker服务器「https://tracker.renfei.net:443/announce」,为了确保种子存活率,您可以为种子添加更多的Tracker服务器,您可以通过网络搜索得到更多Tracker服务器的列表,这里推荐一个Github项目,上面维护了很多Tracker服务器的列表:https://github.com/XIU2/TrackersListCollection

然后您还可以填写发布者的信息,例如名称、网址、说明,这些不是必须的,可以不填。

制作Torrent文件信息

制作Torrent文件信息

点击制作按钮,就可以生成一个BT(BitTorrent)种子.torrent文件,并且在我们的列表里已经可以看到这个文件的任务,我们还需要点击开始,这样才能加入网络,让别人来下载。我们右击新建的这个任务,选择「复制磁链」就得到了磁力链接。到这里我们就创建了一个BT(BitTorrent)种子和磁力链接,下面是我本次教程创建的种子和磁链,来试试吧。

获得磁力链接

获得磁力链接

注意事项

当您创建发布种子以后,全网只有你一个人拥有全部文件,所以你不能下线,需要持续为其他人提供下载,也就是做种,一旦你下线了,这个和种子就暂时死亡了,因为在BT网络上其他人没有这个文件,所以需要等一段时间,下载的人多了,做种的人多了,你就可以离线了,就行成了下载的人越多速度越快的情况。

同样,别人寻找你的时候,也是通过Tracker服务器,你链接的Tracker服务器越多,就越容易被找到,所以也要链接多一点的Tracker服务器。

为什么一些 Tracker 连不上

首先这是正常的,Tracker服务器分布在全球各地,受到网络原因会有一些连不上,另外 HTTPS 的链接成功率更高,HTTP、UDP这种明文的经常被运营商干扰、限制,还有一方面是由于迅雷把中国范围的BT下载名声弄臭了,一些国外 Tracker 服务器屏蔽了国内连接。

为什么下载没速度

在BT网络中,下载速度是别的用户上传给你的,可能拥有你需要的文件用户比较少,Tracker 可以帮你找到更多的用户,并帮助你们之间建立链接,链接到的用户越多,下载也就越快。

被迅雷吸血的情况,上面已经说过迅雷把中国范围的BT下载名声弄臭了,主要是因为迅雷在享受其他 BT 软件用户上传提供的速度时,自身却只把上传的速度提供给其他迅雷用户,而不会提供给其他 BT 软件用户 ,所以对于其他客户端来说,迅雷只进不出,俗称吸血雷。

补充信息

关于国内BT环境问题,可以转这个帖子…………

BT Tracker服务器列表:https://github.com/XIU2/TrackersListCollection

Python支持的做种库:https://github.com/rndusr/torf


互联网冲浪膜法:Magnet磁链与ed2k
https://zhouyinglin.cn/post/10023a0a.html
作者
小周
发布于
2022年12月15日
更新于
2022年12月15日
许可协议