¿Cuál es la mejor forma de que tome url como: http://foobar.com/foo.torrent y compruebe si realmente es un torrente, no una página html u otra cosa graciosa. Sugerencias? Gracias :)Compruebe si la URL es un torrente en C# .NET
Respuesta
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.
Probablemente la mejor manera de descargarlo y validarlo y/o verificar que el tipo de contenido es application/x-bittorrent
.
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
La única forma de saber si se trata realmente de un archivo torrent es descargarlo y verificar si es torrent file.
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.
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
.
buen descubrimiento y buena explicación! +1 – tobsen
Además de la bobina de buena respuesta proporcionada, también puede echar un vistazo a la implementación de código abierto monotorrent. Descargan el archivo .torrent completo y analizan el código de ben luego (cf .: http://anonsvn.mono-project.com/viewvc/trunk/bitsharp/src/MonoTorrent/MonoTorrent.Common/Torrent.cs líneas 611ff)
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.
- 1. compruebe si una cadena es una URL
- 2. Compruebe si un objeto es un delegado
- 3. Cómo calcular la URL raspada de un torrente
- 4. Compruebe si string.at (i) es un espacio en blanco C++
- 5. Compruebe si 2 URL son iguales
- 6. Compruebe si una URL tiene http: // prefijo
- 7. python: compruebe si existe url a jpg
- 8. compruebe si la dirección mmap'ed es correcta
- 9. Compruebe si la cadena es solo un espacio en blanco?
- 10. getline compruebe si la línea es un espacio en blanco
- 11. compruebe si un objeto es nulo
- 12. compruebe si un archivo es ejecutable
- 13. Compruebe si el valor es un número
- 14. Compruebe si NSNumber es la fracción
- 15. compruebe si la instancia de un tipo
- 16. Compruebe si se admite el esquema de URL en javascript
- 17. Seguridad de primavera: compruebe si la URL de la web es segura/protegida
- 18. Compruebe si una carpeta es un recurso local o de red en .NET
- 19. Django: compruebe si existe una imagen en alguna url particular
- 20. Compruebe si existe un directorio en PHP
- 21. Compruebe si un directorio está vacío usando C en Linux
- 22. Compruebe si un UITableViewCell específico es visible en una UITableView
- 23. Compruebe si un usuario es root en una aplicación java
- 24. Cliente PHP puro torrente?
- 25. Compruebe si string es un prefijo de un Javascript RegExp
- 26. Sharepoint: compruebe si un usuario es miembro de un grupo
- 27. Compruebe si un valor de scanf es un número?
- 28. Compruebe si un directorio es un (sistema de archivos) raíz
- 29. Compruebe si un objeto es un NSArray o NSDictionary
- 30. Compruebe si un argumento es una lista o un átomo
¿Por qué todos los votos a favor? Pensé que era una pregunta relevante. –
Creo que algunas personas ven la palabra 'torrente' e inmediatamente dicen "piratería es malo" y votan negativamente. – bobince