4

わかりましたので、説明する方法が完全にはわからないという奇妙な問題が発生しています...基本的に、私はベンコードファイル(.torrentファイル)をデコードしようとしています。私が持っている4つまたは5つの異なるスクリプトを試しましたGoogle と SO を介して見つかりましたが、運がありませんでした (辞書にないこのようなリターンを取得するか、同じからエラーを出力します)。

今、私はそのように.torrentファイルをダウンロードしています

wget http://link_to.torrent file  
 //and have also tried with curl like so 
curl -C - -O http://link_to.torrent

この方法でダウンロードすると、ファイルに何かが起こっていると結論付けています。この理由は、オンラインでアップロードした .torrent ファイルをデコードしてファイルに含まれる情報を表示するこのサイトを見つけたからです。ただし、ブラウザからリンクをクリックするだけでなく、上記の方法のいずれかを使用して .torrent ファイルをダウンロードしても機能しません。したがって、これらの方法のいずれかを使用して同様の問題を経験し、問題の解決策を見つけた人や、なぜこれが起こっているのかを説明した人はいますか? 私はそれについてオンラインであまり見つけられず、サーバーに使用できる回避策も知りません

更新: @coder543 によって提案されたように、ブラウザーと wget を介してダウンロードしたファイル サイズを比較することでわかりました。それらは同じサイズではありませんwgetスタイルを使用するとファイルサイズが小さくなるため、明らかに問題はwget & curl他の何かではありません..アイデアですか?

更新 2: わかりましたので、これを数回試しましたが、問題を少し絞り込んでいます。問題は torcache と torrage リンクでのみ発生するようです。他のサイトからのリンクは適切に、または期待どおりに機能しているようです...そこで、いくつかのリンクと、さまざまな方法からの私の結果を以下に示します。

   *** differnet sizes***
 http://torrage.com/torrent/6760F0232086AFE6880C974645DE8105FF032706.torrent
   wget -> 7345 , curl -> 7345 , browser download -> 7376

 *** same size***
 http://isohunt.com/torrent_details/224634397/south+park?tab=summary
 wget -> 7491 , curl -> 7491 , browser download -> 7491

 *** differnet sizes***
 http://torcache.net/torrent/B00BA420568DA54A90456AEE90CAE7A28535FACE.torrent?title=[kickass.to]the.simpsons.s24e12.hdtv.x264.lol.eztv
 wget -> 4890 , curl-> 4890 , browser download -> 4985

  *** same size***
 http://h33t.com/download.php?id=cc1ad62bbe7b68401fe6ca0fbaa76c4ed022b221&f=Game%20of%20Thrones%20S03E10%20576p%20HDTV%20x264-DGN%20%7B1337x%7D.torrent 
  wget-> 30632 , curl -> 30632 , browser download -> 30632

  *** same size***
 http://dl7.torrentreactor.net/download.php?id=9499345&name=ubuntu-13.04-desktop-i386.iso
 wget-> 32324, curl -> 32324, browser download -> 32324

 *** differnet sizes***
http://torrage.com/torrent/D7497C2215C9448D9EB421A969453537621E0962.torrent
wget -> 7856 , curl -> 7556 ,browser download -> 7888

そのため、一部のサイトではうまく機能しているようですが、実際には torcache.net と torrage.com でファイルを提供しているサイトです。キャッシュに直接依存せずに他のサイトを使用できればいいのですが、bitsnoop API(torrage.comからすべてのデータを取得するため、実際にはオプションではありません)を使用しています。この問題を解決する方法、または解決策を見つけるための手順について教えていただければ幸いです。

誰でも結果を再現できれば幸いです!... 私のサーバーは 64 ビット アーキテクチャの 12.04 LTS であり、実際のダウンロード比較を試みたラップトップは同じです

4

1 に答える 1

6

コマンドラインツールを使用して取得したファイルの場合:

$ file 6760F0232086AFE6880C974645DE8105FF032706.torrent
6760F0232086AFE6880C974645DE8105FF032706.torrent: gzip compressed data, from Unix

確かに、を使用して解凍するgunzipと、正しい出力が生成されます。サーバーが送信するものを調べると、興味深い手がかりが得られます。

$ wget -S http://torrage.com/torrent/6760F0232086AFE6880C974645DE8105FF032706.torrent
--2013-06-14 00:53:37--  http://torrage.com/torrent/6760F0232086AFE6880C974645DE8105FF032706.torrent
Resolving torrage.com... 192.121.86.94
Connecting to torrage.com|192.121.86.94|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.0 200 OK
  Connection: keep-alive
  Content-Encoding: gzip

そのため、サーバーは gzip 圧縮データを送信していると報告しますが、wget と curl はこれを無視します。curl には--compressed、データを正しく解凍するスイッチがあります。これは、圧縮されていないファイルでも安全に使用できるはずです。クライアントが圧縮をサポートしていることを http サーバーに通知するだけですが、この場合、curl は受信したヘッダーを調べて、実際に解凍が必要かどうかを確認します。

于 2013-06-13T23:04:13.403 に答える