Подтвердить что ты не робот

Проверьте, является ли URL-адрес торрентом в С#.NET.

Какой лучший способ для меня использовать url как: http://foobar.com/foo.torrent и проверить, действительно ли это торрент, а не html-страница или что-то еще смешное. Предложения? Спасибо:)

4b9b3361

Ответ 1

Чтобы проверить тип ресурса без его загрузки, используйте запрос 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 является торрент файлом, но если вы хотите убедиться, что можете посмотреть на его декодирование и проверить свойства info и announce.

Ответ 2

Единственный способ узнать, действительно ли это файл торрента, скачать его и проверить, если он торрент файл.

Ответ 3

Вероятно, лучше всего загрузить и проверить его и/или проверить тип содержимого application/x-bittorrent.

Ответ 4

Прочитайте спецификацию торрент файла, затем напишите приложение С#, чтобы загрузить содержимое URL-адреса и посмотреть, соответствует ли оно правилам в спецификации.

Ответ 6

Я бы использовал библиотеку MonoTorrent. В частности, вы можете использовать статический метод

Torrent.TryLoad(Uri url, string location, out Torrent torrent)

который вернет логическое значение, указывающее, указывает ли параметр url на действительный файл торрента.

Ответ 7

Если вы хотите изучить некоторые С++, вы можете сделать внешний вызов libtorrent с помощью P/Invoke я am shure имеет способ проверки файлов.