http://foobar.com/foo.torrentのような URL を取得し、それが本当に torrent であり、html ページやその他の面白いものではないかどうかを確認するための最良の方法は何ですか。提案?ありがとうございました :)
7 に答える
ダウンロードせずにリソースのタイプを確認するには、HEAD リクエストを使用します。
WebRequest request= WebRequest.Create("http://foobar.com/foo.torrent");
request.Method= "HEAD";
WebResponse response= request.GetResponse();
if (response.Headers.Get("Content-Type")=="application/x-bittorrent") {
...
ただし、application/x-bittorrent
一部のサーバーではタイプが設定されていない可能性があるため、運が悪い場合application/octet-stream
でも、代わりに取得される可能性がありtext/plain
ます。これを説明する必要がある場合は、通常の GET リクエストでファイルをフェッチし、デコードできるかどうかを確認するだけです。
BitTorrent ファイル形式は、「bencode」と呼ばれる形式に基づいています。これを処理すると主張する .NET ライブラリを次に示します。有効な bencode であるファイルはすべて torrent ファイルであると推測できますが、確認したい場合は、デコード先のマッピングを見て、info
およびannounce
プロパティを確認してください。
本当に torrent ファイルかどうかを確認する唯一の方法は、ダウンロードして torrent ファイルかどうかを確認することです。
おそらく、ダウンロードして検証するか、コンテンツの種類を確認するのが最適ですapplication/x-bittorrent
。
bobince が提供した良い回答に加えて、monotorrentオープン ソースの c# 実装も参照できます。彼らは .torrent ファイル全体をダウンロードし、その後ベンコードを解析します (参照: http://anonsvn.mono-project.com/viewvc/trunk/bitsharp/src/MonoTorrent/MonoTorrent.Common/Torrent.cs行 611ff) 。
MonoTorrentライブラリを使用します。具体的には、静的メソッドを使用できます
Torrent.TryLoad(Uri url, string location, out Torrent torrent)
url
パラメータが有効な torrent ファイルを指しているかどうかを示すブール値を返します。
torrent ファイルの仕様を読み、C# アプリを作成して URL のコンテンツをダウンロードし、仕様のルールを満たしているかどうかを確認します。
いくつかの c++ を学習したい場合は、P/Invoke を使用してlibtorrentライブラリへの外部呼び出しを行うことができます。ファイルを検証する方法があると確信しています。