700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【P2P网络】磁力链接转换为种子文件 magnet to torrent .

【P2P网络】磁力链接转换为种子文件 magnet to torrent .

时间:2021-07-29 10:40:39

相关推荐

【P2P网络】磁力链接转换为种子文件 magnet to torrent .

1.前言 将种子文件转换为磁力链接很简单,只需要在种子文件的infohash码前面加上magnet:?xt=urn:btih:即可,相信大家在迅雷,utorrent等主流软件上也都能发现这个功能。

但是将磁力链接转换为种子文件就不那么简单了,因为sha-1算法是不可逆的,但是BT协议确提供了这个功能,但是我在网上没有找到中文的介绍,这里就将自己的研究心得贡献一下。

下面还想废话2句,告诉大家使用磁链和种子的优缺点。其实磁力链接本身是没什么用的,不管在任何软件的磁链下载中,都必须要先通过磁链得到种子文件,再使用种子文件进行常规下载。因为种子文件才有分片信息,文件大小,文件名等必要信息。所以可以看出,种子其实是必不可少的,那你可能会觉得奇怪,为什么还需要磁链呢?这是因为现在对BT的封锁太严重,传播种子并不是那么简单的事了,动不动就被和谐了,所以磁链的作用就是便于传输,因为磁链就是一个小小的文本,而种子确是一个文件呢~所以总结一下他们的优缺点:

A.种子:稳定性高,信息多,不便于传播扩散

B.磁力链接:仍需要先获得种子,不稳定,可能在某时刻不能获取,但是很便于扩散。

2.磁力链接到种子转换的策略

本人现在的研究共发现3种策略:

A.利用BT的官方协议获取

B.从迅雷的种子库获取

C.从比特彗星的种子库获取

下面对三种策略做简单介绍:

第一种,利用BT的官方协议获取

性能特色:

这种策略可以获取最多的种子,但是速度最慢,因为是官方的协议,所以很稳定,但是如果这个种子是个冷门种子时,很可能会获取不到,因为当前没有DHT用户在线,所以当使用迅雷,utorrent等客户端软件提示无法获取种子时,你可以待会再试,过阵子可能有对应种子的用户上线,她如果加入了DHT网络,我们就可以获取种子了。

实现原理:

这个方法需要阅读官方的2个扩展协议:

/beps/bep_0010.html

/beps/bep_0009.html

翻译稿:/xxxxxx91116/article/details/8549454

理解并实现这2个协议后就可以获取种子了,下面是2个协议的翻译稿。

bep_0009翻译稿:/xxxxxx91116/article/details/8549454

好消息!我发现这个网站/是使用extend协议进行解析,大家可以试用下~速度可能会很慢,但是应该可以解析很多库里面没有的种子。

第二种,从迅雷的种子库获取

性能特色:

这种策略获取种子的速度很快,当你有一批磁力链接时,可以先使用这种方法来获取大部分种子,对迅雷种子库没有的部分,再使用第一种方法获取。

实现原理:

非常简单,在浏览器中输入

http://bt./05/A5/05153F611B337A378F73F0D32D2C16D362D06BA5.torrent

即可获取种子,其中的 05153F611B337A378F73F0D32D2C16D362D06BA5是对应种子文件的infohash码,也就是磁链的btih:字段,/05/A5是hash的第一个和最后一个字节。

当你需要大规模获取时,就自己用C++构造一个报文内从去请求吧。

第三种,从比特彗星的种子库获取

性能特色:同第二种的性能特色,但是比特彗星的库里面种子更多。因为比特彗星可以制作种子,在制作的同时可能就上传到库里面了。

实现原理:

我还没有解析出来,大家可以参见文章:

/UMU618/articles/2568579.html,但是这位牛人也忘记了hash字段是怎样加密的,我不知道怎样从hash到key。如果有人发现了,希望您能告诉我,谢谢!

第四种,从Vuze的种子库获取

这个也蛮厉害的,我搞了半天才搞出来......

比如对于infohash为03621694F0E8B2CE87216C99CB5CA3AF23029E37的磁力链接,构造下面的URL:

/magnetLookup?hash=ANRBNFHQ5CZM5BZBNSM4WXFDV4RQFHRX

其中的ANRBNFHQ5CZM5BZBNSM4WXFDV4RQFHRX是03621694F0E8B2CE87216C99CB5CA3AF23029E37的base32码,但是不能直接去网上base32转,因为转码要用03621694F0E8B2CE87216C99CB5CA3AF23029E37的二进制数据

linux下可以这样转

[plain]view plaincopyprint? echo-n03621694F0E8B2CE87216C99CB5CA3AF23029E37|xxd-r-p|./perl_32.pl

echo -n 03621694F0E8B2CE87216C99CB5CA3AF23029E37 | xxd -r -p|./perl_32.pl

其中的perl_32.pl是一个源文件,内容如下:

[plain]view plaincopyprint? #!/usr/bin/perluseMIME::Base32qw(RFC);undef$/;#incasestdinhasnewlines$string=<STDIN>;$encoded=MIME::Base32::encode($string);print"$encoded\n";

#!/usr/bin/perluse MIME::Base32 qw( RFC );undef $/; # in case stdin has newlines$string = <STDIN>;$encoded = MIME::Base32::encode($string);print "$encoded\n";

如果权限不对记得要

[plain]view plaincopyprint? chmod777perl_32.pl

chmod 777 perl_32.pl

补充一些种子库:

/torrent/66B106B04F931DA3485282C43CF66F6BD795C8C4.torrent

/torrent/66B106B04F931DA3485282C43CF66F6BD795C8C4.torrent

http://zoink.it/torrent/66B106B04F931DA3485282C43CF66F6BD795C8C4.torrent

/:最终重定向使用进行下载

/static/torrents/05/15/3f/05153f611b337a378f73f0d32d2c16d362d06ba5.torrent 缓存的种子很少

http://178.73.198.210/:torrage.ws:http://178.73.198.210/torrent/640FE84C613C17F663551D218689A64E8AEBEABE.torrent

原文地址:/xxxxxx91116/article/details/7971134

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。