【P2P網路】磁力連結轉換為種子檔案 magnet to torrent
下面還想廢話2句,告訴大家使用磁鏈和種子的優缺點。其實磁力連結本身是沒什麼用的,不管在任何軟體的磁鏈下載中,都必須要先通過磁鏈得到種子檔案,再使用種子檔案進行常規下載。因為種子檔案才有分片資訊,檔案大小,檔名等必要資訊。所以可以看出,種子其實是必不可少的,那你可能會覺得奇怪,為什麼還需要磁鏈呢?這是因為現在對BT的封鎖太嚴重,傳播種子並不是那麼簡單的事了,動不動就被和諧了,所以磁鏈的作用就是便於傳輸,因為磁鏈就是一個小小的文字,而種子確是一個檔案呢~所以總結一下他們的優缺點:
A.種子:穩定性高,資訊多,不便於傳播擴散
B.磁力連結:仍需要先獲得種子,不穩定,可能在某時刻不能獲取,但是很便於擴散。
2.磁力連結到種子轉換的策略
本人現在的研究共發現3種策略:
A.利用BT的官方協議獲取
B.從迅雷的種子庫獲取
C.從位元彗星的種子庫獲取
下面對三種策略做簡單介紹:
第一種,利用BT的官方協議獲取
效能特色:
這種策略可以獲取最多的種子,但是速度最慢,因為是官方的協議,所以很穩定,但是如果這個種子是個冷門種子時,很可能會獲取不到,因為當前沒有DHT使用者線上,所以當使用迅雷,utorrent等客戶端軟體提示無法獲取種子時,你可以待會再試,過陣子可能有對應種子的使用者上線,她如果加入了DHT網路,我們就可以獲取種子了。
實現原理:
這個方法需要閱讀官方的2個擴充套件協議:
http://www.bittorrent.org/beps/bep_0010.html
理解並實現這2個協議後就可以獲取種子了,下面是2個協議的翻譯稿。
好訊息!我發現這個網站 http://btdigg.org/ 是使用extend協議進行解析,大家可以試用下~速度可能會很慢,但是應該可以解析很多庫裡面沒有的種子。
第二種,從迅雷的種子庫獲取
效能特色:
這種策略獲取種子的速度很快,當你有一批磁力連結時,可以先使用這種方法來獲取大部分種子,對迅雷種子庫沒有的部分,再使用第一種方法獲取。
實現原理:
非常簡單,在瀏覽器中輸入
http://bt.box.n0808.com/05/A5/05153F611B337A378F73F0D32D2C16D362D06BA5.torrent
即可獲取種子,其中的 05153F611B337A378F73F0D32D2C16D362D06BA5是對應種子檔案的infohash碼,也就是磁鏈的btih:欄位,/05/A5是hash的第一個和最後一個位元組。
當你需要大規模獲取時,就自己用C++構造一個報文內從去請求吧。
第三種,從位元彗星的種子庫獲取
效能特色:同第二種的效能特色,但是位元彗星的庫裡面種子更多。因為位元彗星可以製作種子,在製作的同時可能就上傳到庫裡面了。
實現原理:
我還沒有解析出來,大家可以參見文章:
http://www.cnblogs.com/UMU618/articles/2568579.html,但是這位牛人也忘記了hash欄位是怎樣加密的,我不知道怎樣從hash到key。如果有人發現了,希望您能告訴我,謝謝!
攻城詩賦: 第三種位元彗星成功率也很高,而且貌似不淨網。至於hash的演算法是 hash轉回20位元組形式前加“bc”後加"torrent"共29位元組做SHA1得到20位元組轉回可讀40位元組形式 |
第四種,從Vuze的種子庫獲取
這個也蠻厲害的,我搞了半天才搞出來......
比如對於infohash為03621694F0E8B2CE87216C99CB5CA3AF23029E37的磁力連結,構造下面的URL:
http://magnet.vuze.com/magnetLookup?hash=ANRBNFHQ5CZM5BZBNSM4WXFDV4RQFHRX
其中的ANRBNFHQ5CZM5BZBNSM4WXFDV4RQFHRX是03621694F0E8B2CE87216C99CB5CA3AF23029E37的base32碼,但是不能直接去網上base32轉,因為轉碼要用03621694F0E8B2CE87216C99CB5CA3AF23029E37的二進位制資料
linux下可以這樣轉
echo -n 03621694F0E8B2CE87216C99CB5CA3AF23029E37 | xxd -r -p|./perl_32.pl
其中的perl_32.pl是一個原始檔,內容如下:
#!/usr/bin/perl
use MIME::Base32 qw( RFC );
undef $/; # in case stdin has newlines
$string = <STDIN>;
$encoded = MIME::Base32::encode($string);
print "$encoded\n";
如果許可權不對記得要
chmod 777 perl_32.pl
補充一些種子庫:
http://torrage.com/torrent/66B106B04F931DA3485282C43CF66F6BD795C8C4.torrent
http://torcache.net/torrent/66B106B04F931DA3485282C43CF66F6BD795C8C4.torrent
http://zoink.it/torrent/66B106B04F931DA3485282C43CF66F6BD795C8C4.torrent
http://mag2tor.com/static/torrents/05/15/3f/05153f611b337a378f73f0d32d2c16d362d06ba5.torrent 快取的種子很少