2009-11-05 16 views
7

için kazıma URL'sini nasıl hesapladım Bit-torrent belirtimini okudum ve bir torrent izleyiciden nasıl tohumlar/eşler/indirilen verileri nasıl alabileceğimi bulmaya çalışan bir dizi arama yaptım (Python kullanarak)). Çeşitli çalışma torrent uygulamaları tarafından verilen bilgi karması ile eşleşen bir Torrent problemsiz bilgi karmasını hesaplayabilirim. AncakBir torrent

, ben URL'yi koymak ne şekilde bağlı, ben de zaman aşımı (izci çalışıyor) izleyiciden bilgi almak veya boş veri elde etmeye çalışmak:

http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462479721b011dc7b3d3558 - zaman aşımı

Bunun 20 karakter uzunluğunda olması gerektiği söylendi, bu yüzden bir alt dizgi aldı, ancak bu boş veri veriyor.

http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462 - d5: filesdee

Ben kodlamak veya sıyrık URL için infohash yapmalıdır nasıl bir şey yanlış anlamış düşünüyorum, ama beni hayat nerede göremiyorum için.

cevap

6

info_hash'ın altıgen karakterli bir temsilinden geçiyorsunuz. İkili bir temsil olmalı. URL kullanımı URL kodlama içine Basılamayan bayt almak için:

/scrape?info_hash=%A8%C4%82%90%2B%1Cs%5D%E4bG%97%21%B0%11%DC%7B%3D5X 

(Ben de doğru değil değil ... info_hash parametresinde _ kodlayan kaçınabilirsiniz ama sıralama öyle şey karışıklık yukarıya bazı yazılı-for-speed izleyicileri beklenir)

+1

Python 3'te, urllib.parse.quote (infohash) kullanın. Python 2'de, urllib.quote (infohash) kullanın. – Mead

+1

Sadece infohash'ın hex versiyonuna sahipseniz, binascii.a2b_hex (hexinfohash) 'ile tekrar ikiliye dönüştürün. Python 3'ündeyseniz binascii.a2b_hex (hexinfohash.encode ("utf-8")) 'i çağırmanız gerekebilir. – Mead

3

Çözümümün.

import binascii 

binary_info_hash = binascii.unhexlify('79b193385de5b967175ca86073670fce0e45a324') 
print binary_info_hash 

Sonuç:

y%B1%938%5D%E5%B9g%17%5C%A8%60sg%0F%CE%0EE%A3%24 

Daha fazla bilgi: binascii.unhexlify