我目前正在嘗試在nodeJS中實現一個最小的洪流客戶端。連接到洪流跟蹤器/同行
我讀通過這個規格:https://wiki.theory.org/index.php/BitTorrentSpecification
我有2點磁鐵的URI:
magnet:?xt=urn:btih:633ab5b0cc27218bca2f9fec9b68ae4f7cbf0c5f&dn=dmb2017-05-31.dpa4021.flac16
xt=urn:btih:633ab5b0cc27218bca2f9fec9b68ae4f7cbf0c5f
dn=dmb2017-05-31.dpa4021.flac16
magnet:?xt=urn:btih:9f9165d9a281a9b8e782cd5176bbcc8256fd1871&dn=Ubuntu+16.04.1+LTS+Desktop+64-bit&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Fzer0day.ch%3A1337&tr=udp%3A%2F%2Fopen.demonii.com%3A1337&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fexodus.desync.com%3A6969
xt=urn:btih:9f9165d9a281a9b8e782cd5176bbcc8256fd1871
dn=Ubuntu+16.04.1+LTS+Desktop+64-bit
tr=udp://tracker.leechers-paradise.org:6969
tr=udp://zer0day.ch:1337
tr=udp://open.demonii.com:1337
tr=udp://tracker.coppersurfer.tk:6969
tr=udp://exodus.desync.com:6969
從我讀過,跟蹤器是用來找到同行,從中下載數據。那麼如何下載第一個洪流呢?它沒有跟蹤器。
我該如何確實進行此連接?
該規範在磁鏈接上沒有任何內容,並指出跟蹤器可以通過HTTP(S)協議使用,但這些都明顯是UDP。
我給這個刺:
var PORT = 6969 ;
var HOST = 'tracker.leechers-paradise.org';
var dgram = require('dgram');
var message = new Buffer("xt=urn:btih:9f9165d9a281a9b8e782cd5176bbcc8256fd1871");
var client = dgram.createSocket('udp4');
client.on('listening', function() {
var address = client.address();
console.log('UDP Server listening on ' + address.address + ":" + address.port);
});
client.on('message', function (message, remote) {
console.log(remote.address + ':' + remote.port +' - ' + message);
});
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
if (err) throw err;
console.log('UDP message sent to ' + HOST +':'+ PORT);
console.log(bytes);
});
顯然,這是不行的,但我無法找到任何文件,以幫助。
那麼,還有HTTP跟蹤器嗎?這很酷,我可以使用瀏覽器客戶端。感謝您的額外信息! – Tobiq
是否有單個DHT?我在哪裏連接?這一切都令人困惑 – Tobiq
公共HTTP跟蹤器在受歡迎時往往會死亡,因爲與UDP跟蹤器相比,HTTP跟蹤器佔用的資源要多得多。無論如何,你可以在這裏找到一個列表:https://github.com/ngosang/trackerslist只有瀏覽器的bittorrent客戶端是不可能的,因爲你需要通過原始TCP或uTP/UDP連接到其他對等端。webtorrent假裝是一個真正的bittorrent客戶端,但它不是,因爲它不能連接到任何以前存在的客戶端。 – Encombe