磁力链接 结构解析 分享

article/2025/9/15 11:34:00

磁力链接由一组参数组成,参数间的顺序没有讲究,其格式与在HTTP链接末尾的查询字符串相同。最常见的参数是"xt",是"exact topic"的缩写,通常是一个特定文件的内容散列函数值形成的URN,例如:

Magnet-icon.gif magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C

其值是Base32编码的文件的SHA-1散列。

注意,虽然这个链接指向一个特定文件,但是客户端应用程序仍然必须进行搜索来确定哪里,如果有,能够获取那个文件。

在标准的草稿中其他参数的定义如下:

  • "dn" ("显示名称"):为了方便,为用户显示文件名称
  • "kt" ("关键字"):更笼统的搜索,指定搜索关键字而不是特定文件
  • "mt" ("文件列表"):一个URI指向一个列表,例如一个项目列表
  • 应用程序定义的实验参数,必须以"x."开头

标准还建议同类的多个参数可以在参数名称后面加上".1", ".2"等来使用,例如

Magnet-icon.gif magnet:?xt.1=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C&xt.2=urn:sha1:TXGCZQTH26NL6OUQAJJPFALHG2LTGBC7

描述

磁力链接可以包括一个或多个参数,之间用'&'隔开。参数的顺序在文件在标准中没有记录。有一些参数的值对于客户端正确解析磁力链接很重要。

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

参数

  • dn(显示名称)- 文件名
  • xl(绝对长度)- 文件字节数
  • xt(eXact Topic)- 包含文件散列函数值的URN
  • as(可接受来源) - 在线文件的网络链接
  • xs(绝对资源)- P2P链接
  • kt(关键字)- 用于搜索的关键字
  • mt(文件列表)- 链接到一个包含磁力链接的元文件 (MAGMA - MAGnet MAnifest)
  • tr(Tracker地址)- BT下载的Tracker URL

xt参数

磁力链接的这部分最重要。用于寻找和验证包含着磁力链接中的文件。

TTH(Tiger Tree散列函数)

TigerTree散列函数被用在包括Direct Connect和Gnutella2在内的几个网络中。

xt=urn:tree:tiger:[ TTH Hash(Base32)]
SHA-1(安全散列算法1)

Gnutella和Gnutella2使用的散列函数。

xt=urn:sha1:[ SHA-1 Hash(Base32)]
BitPrint

这种散列函数包含一个SHA-1散列函数和一个TTH散列函数,用"."隔开。

Gnutella和Gnutella2使用。

xt=urn:bitprint:[ SHA-1 Hash(Base32)].[ TTH Hash(Base32)]
eD2k Hash(eDonkey2000)散列函数

eDonkey2000使用的散列函数算法。

xt=urn:ed2k:[ ED2K Hash(Hex)]
AICH(高级智能型损坏处理)

不是正式的磁力链接的一部分。eDonkey2000使用的散列函数算法,用于存储和控制下载完成、正在下载的文件的完整性。

xt=urn:aich:[ aich Hash(Base32)]
Kazaa散列函数

FastTrack使用的散列函数算法。

xt=urn:kzhash:[ Kazaa Hash(Hex)]
BTIH(BitTorrent Info Hash)

BitTorrent使用的散列函数算法。

xt=urn:btih:[ BitTorrent Info Hash(Hex)]
MD5(信息-摘要算法5)

Gnutella2支持的散列函数算法。

xt=urn:md5:[ MD5 Hash(Hex)]
CRC-32(循环冗余校验)

不是正式的磁力链接的一部分。没有任何已知的P2P网络使用。

xt=urn:crc32:[ CRC-32(Base10)]

网络链接至文件

有两种可以插入到磁力链接的下载链接作为直接或者备用资源。

普通链接(as)

"as"的意思是"acceptable source"。这种链接指向从网络服务器的直接下载。只有在指定的超时后才会链接,防止服务器过载。客户端在考虑向服务器发送下载请求前会先花一定时间在P2P网络中定位文件。

as=[文件的网络链接(已编码URL)]
P2P链接(xs)

链接可以是链接到磁力链接的文件的HTTP(SHTTP、FTP、SFTP等)下载源、文件的P2P源地址或是hub(使用DC++时)地址。对于这一链接,客户端尝试直接链接,并请求文件或其来源,有时会同时请求二者。这一字段常被P2P客户端用来存储源。引用中可能包含文件hash。

内容寻址网络(CAN)URL

这类链接被Gnutella还有G2应用程序使用,基于RFC 2168。

xs=http://[ 客户端地址]:[客户端端口]/uri-res/N2R?[包含一个文件hash的URN ]

例:

xs=http://192.0.2.0.27:6346/uri-res/N2R?urn:sha1:FINYVGHENTHSMNDSQQYDNLPONVBZTICF
链接到 DirectConnect hub并为文件查找源

这一链接立即将DirectConnect客户端连接到刚才讨论的hub。

xs=dchub://[hub 地址]:[hub端口]
为 Gnutella2上的文件引用基于网络的源缓存

这种情况下,链接包含的点不是客户端IP或直接来源,而是来源缓存。这样的缓存并不包含文件本身,而是存储了其他客户端的IP,这些客户端连接到缓存来下载相同的文件。一旦客户端连接到缓存并获得其他替代来源的IP,其自身IP就会存入到缓存中,然后继续连接到下一个缓存,继续请求替代来源。这种系统类似于BitTorrent tracker的操作。

xs=http://cache.freebase.be/[ SHA-1 hash ]
引用ED2K源
xs=ed2k://[ 客户端地址]:[客户端端口]/[ed2k hash]/[文件大小]/

文件列表(mt)

这是一个导向一系列连链接列表(也许是个网页)的链接……

mt=http://weblog.foo/all-my-favorites.rss

或者是一个URN

mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ

关键字(kt)

该部分代表了一串用于P2P网络搜索用的关键字

kt=martin+luther+king+mp3

Tracker地址(tr)

Tracker URL.用于在不需要DHT支持下下载BitTorrent资源。

tr=http://example.com/announce

补充格式(x.)

对于实验性且自补的非正式选项,可以使用前缀x后加已选择的第二个字母

x.[新参数名]=[新参数数据(已编码URL)]

参数组

通过在每个参数后编号并用"."来分隔允许一个Magnet链接中包含多个文件及它们URN,文件名和散列函数值。

magnet:?xt.1=[第一个文件的URN]&xt.2=[第二个文件的URN]

示例

链接到一个0字节长度的文件。

magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0
&xl=0&dn=zero_len.fil
&xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ
.LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ
&xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E

mediawiki-1.15.1.tar.gz

magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1
&xl=10826029&dn=mediawiki-1.15.1.tar.gz
&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY
&xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q
&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26
&as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz
&xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5
&xs=dchub://example.org

url magnet

http://sure-raza.com/magnet:?xl=10826029&
dn=mediawiki-1.15.1.tar.gz&
xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY
参考资料:维基百科https://zh.wikipedia.org/wiki/%E7%A3%81%E5%8A%9B%E9%93%BE%E6%8E%A5 

http://chatgpt.dhexx.cn/article/9JnTsoDf.shtml

相关文章

2021下半年最新编程培训机构排名出炉!

就目前的IT行业发展情况来看,市场对程序员的需求还是非常大的,参加编程培训对小白来说是一个不错的选择,毕竟在专业的编程培训机构学习,能够在短时间内掌握技术要领。如今的编程培训机构鱼龙混杂,教学质量也是参差不齐…

我,是一个培训班出来的程序员 | 程序员有话说

作者 l HeroMe 责编 | 伍杏玲 本文经授权转载自Hollis(ID:hollischuang) 这个城市的所有人都在忙碌的过生活,他们行色匆匆,车水马龙,他们认为时间就是金钱。 我在办公楼里俯视着他们,在这个…

培训机构毕业的程序员被歧视的背后逻辑

(注:本文曾发表于《程序员》2015.11.B期) 现在,像达内、华清远见、国嵌、北大青鸟、传播智客等等IT培训机构很多,为尚未毕业的大学生、毕业了一时找不到工作的大学生、工作后想转行的再就业者提供了一个掌握新技能的机…

为什么都瞧不起培训班出来的程序员?

培训机构出来的程序员怎么了? 不怎么,就是容易招偏见! 某培训机构毕业的程序员大雄,和同班同学,一起伪造学历和经验,被HR发现后,全部被开除了。 而我在北京某大型培训机构(以下简称“…

几张图告诉你程序员的残酷现状,培训机构出来的程序员可以吗

别只看不评论,谈谈你心中的程序员,感兴趣的话可以扫描左侧二维码 IT行业可以说在国内行业薪资排名中一直名列前茅,这也是为什么IT行业一直持续火爆的原因,随着前几年来的移动互联网热潮,催生了大量的Android开发岗位&…

为什么很多公司不要培训机构出来的程序员?

近几年,互联网创业潮让IT技术人员的需求大大增加,各类IT培训机构风生水起,办得如火如荼。然而,一些公司却招聘网站上写着”没有上过培训班的优先。“为什么会有这样的区别对待呢? 经过调查发现,培训机构出来的程序员被…

为什么很多公司不要从IT培训机构出来的程序员?

在很多平台看到这样的问题:为什么很多公司不要从IT培训机构出来的程序员?作为一名it培训行业从业者,我试着去了解和分析提出这种问题的人,其出发点和立场,并客观阐述个人对于这个问题的一些看法。 为什么有一些公司不…

如何看待培训机构出来的非科班程序员

看着身边的同学和朋友的情况,有感而发,打算从各方面角度说一说这件事。 近几年,互联网创业潮让IT技术人员的需求大大增加,各类IT培训机构风生水起,办得如火如荼。大多培训机构都是以保底工资nk,年薪轻松上…

程序员编程培训

作为公认的屌丝逆袭最佳途径,程序员一度成为一个非常吃香的职业。因为这是一个不太看重学历和性别的行业,只要你技术过关,就不愁没工作。那么如何才能成为一位合格的程序员呢?除了大学专业是计算机之外,报培训班或许是…

从培训机构出来的程序员,后来都怎么样了?

Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 知乎上有这样一个问题,培训班程序员几个月出来就月薪过万,那为什么我们还要花四年时间上大学? 乍一…

从培训机构出来的程序员,后来都怎么样了? | 程序员有话说

作者 | 素年清时 责编 | 伍杏玲 60s测试:你是否适合转型人工智能? https://edu.csdn.net/topic/ai30?utm_sourcecxrs_bw 【程序人生 编者按】随着互联网的大火,各大城市催生了一个又一个的培训班,每年以批量生产的模式向社会输送…

中国的程序员培训是不是有问题?

中国技术开放日的出海团对日本进行了为期一周的访问。笔者随行了头两天,参加 Slush Asia 大会,并访问了 Gungho 和 Deloitte 两家企业。虽然已经在日本生活了四年,但这样的体验却甚少,对中日两国的技术力有不少思考。 不知从什么时…

程序员培训班一般要多少钱?

程序员应该算是目前转行比较多的一个岗位,主要是现在程序员的薪资比较高,而且从事程序员培训的机构也比较多,大家有更多的机会和选择能够学好程序员开发技能,但是参加培训学习技能是需要一定的费用,而且价格并不是很低…

培训机构出来的程序员进不了大厂?

科班出身的程序员和培训机构出来的程序员到底有什么区别? 作者 | Sung Rhee 译者 | 弯月 责编 | 晋兆雨 出品 | CSDN(ID:CSDNnews) 十年前,获得计算机科学学位是进入蓬勃发展的技术领域的唯一途径。然而&#xff0…

现在培训机构出来的程序员还好找工作吗?

本篇文章主要解惑,后台粉丝留言询问的问题:小白0基础的朋友如何转行做程序员和培训机构培训后还能找到工作吗的问题。 日期:2021年8月16日 作者:任聪聪 培训机构出来的程序员为什么不好找工作的详解 答案是企业喜欢有经验的&…

快来看啊,2023成都Java培训机构排行榜出来啦!

来啦,来啦!我带着2023成都最新Java培训机构排行榜来啦。不知道怎么选择一个好的Java培训机构?停止寻觅,别再犹豫,看我这一篇就够啦! 一、成都动力节点 动力节点,09年成立,14年来只专…

重磅!2021年国内Java培训机构排名前十最新出炉啦

一 CSDN版本 2021年国内Java培训机构排名前十的学校会是哪些呢?国内Java培训机构排名前十名该依据什么来评定呢? 2021年国内Java培训机构排行榜排名的依据是按学员口碑、教学质量、就业率等多方面来进行评判,这次的排名是官方发布,具有权威性、公正性…

2021年最新程序员培训机构排名,学习前避坑必看

近些年互联网对于IT程序员的人才需求量越来越大,各大程序员培训机构也相应的风生水起,如火如茶,然而,对于一个计划这要学习程序开发的同学来说最关心的问题无疑是培训机构的教学质量,就比如一些“哪家培训教学好?培训出来之后能否找到高薪工作,能否学到符合企业用人的标…

将字符串数组转换为字符串类型

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 当你在Java编程中需要将一个字符数组转换为字符串类型时,你可以使用Java内置的String类提供的方法。在本文中,笔者将介绍两种将字符数组转换为…

JS 数组转字符串的4种方法

前言:在项目过程中,我们会有很多情况会遇到我们拿到的的是一个数组的情况,但是后台可能需要的是一个以“,”分割的字符串,那我们有哪些方法进行转换呢? 1.我们首先for循环这个数组,将需要的值加",&q…