2010-04-28 18 views

Respuesta

1

Lea la especificación del archivo torrent, luego escriba una aplicación C# para descargar el contenido de la URL y verifique si cumple con las reglas de la especificación.

3

Probablemente la mejor manera de descargarlo y validarlo y/o verificar que el tipo de contenido es application/x-bittorrent.

+3

Tenga en cuenta que muchos servidores web no sirven archivos con el tipo de contenido correcto. Entonces, si los servidores web devuelven el tipo de contenido '" application/octet-stream "' no es imposible que el archivo sea un archivo torrent. – dtb

4

La única forma de saber si se trata realmente de un archivo torrent es descargarlo y verificar si es torrent file.

0

Si está dispuesto a aprender algo de C++ puede hacer una llamada externa a la biblioteca libtorrent con una P/Invoke. Estoy seguro de que tiene una forma de validar archivos.

11

para comprobar el tipo de un recurso sin necesidad de descargarlo, utilice una petición 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") { 
    ... 

Sin embargo, el tipo application/x-bittorrent no se podría crear en algunos servidores, por lo que es posible que podría obtener application/octet-stream lugar, o incluso text/plain si tiene mala suerte. Si necesita explicar esto, lo único que podría hacer sería buscar el archivo con una solicitud GET normal y ver si puede descifrarlo.

El formato de archivo BitTorrent se basa en un formato llamado 'bencode'. Here's una biblioteca .NET que dice manejarlo. Puede adivinar que cualquier archivo que sea válido como bencode es un archivo torrent, pero si desea asegurarse de que puede ver la asignación a la que decodifica y verificar las propiedades info y announce.

+2

buen descubrimiento y buena explicación! +1 – tobsen

1

Yo utilizaría la biblioteca MonoTorrent. Específicamente, se puede usar el método estático

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

que devolverá un valor booleano que indica si los puntos url de parámetros a un archivo torrent válida.

Cuestiones relacionadas