Hay un descargador de línea de comandos de código abierto muy popular llamado youtube-dl
, que hace exactamente eso. Captura los enlaces de archivos de audio y video reales de un enlace de YouTube dado, o cualquier otro sitio web de video popular como Vimeo, Yahoo! Video, uStream, etc.
Para ver cómo se hace, mira en el extractor de YouTube . Eso es demasiado para mostrar aquí. Existen otros extractores para sitios más simples . Steven Penny también tiene un descargador de JavaScript simple para YouTube, que es un poco más sencillo.
Pero básicamente, para un reproductor de video Flash, debe inicializarse y configurarse a través de JavaScript. Simplemente hablando, el reproductor del objeto Flash recibirá una URL de una transmisión de video para cargar.
Para encontrar la secuencia de video, tendría que analizar el código HTML y JS de la página de video para encontrar el código de inicialización relevante, y luego intentar encontrar el enlace al archivo MP4 real. Puede estar allí en texto plano, pero también puede generarse sobre la marcha con algunos tokens de descarga específicos. A menudo, el JavaScript se ofusca para que sea más difícil rediseñarlo. O la información del video puede estar contenida en un archivo XML que JS carga de forma asíncrona.
Para el video de descarga progresiva HTML5, el archivo fuente real generalmente se menciona directamente en el elemento source
secundario de la video
etiqueta, por lo que si busca la página mp4
o algo similar. Por ejemplo, en el programa de noticias alemán Tagesschau 100 , encontrarás:
<source src="http://media.tagesschau.de/video/2014/0626/TV-20140626-1649-5801.webl.h264.mp4" type="video/mp4">
Para tecnologías de reproducción más avanzadas como MPEG DASH o HTTP Live Streaming (HLS) de Apple, debe analizar un archivo de metainformación para obtener la transmisión de video real. El metaarchivo ( .mpd
por ejemplo, en DASH y .m3u8
para HLS) contendrá enlaces a segmentos de video y audio, que luego deberá combinar para obtener un archivo reproducible.
No hay una solución general para esto. Requiere una cuidadosa inspección y depuración del sitio objetivo.
Marcador de YouTube
Así lo hice con JavaScript
Comience con el
ytplayer.config.args
objeto. Este contiene todas las URL para el video. Se divide enCada uno de estos es una matriz separada por comas de lo que yo llamaría "objetos de flujo". Cada "objeto continuo" contendrá valores como este
Cada URL se codificará, por lo que deberá decodificarlas. Ahora la parte difícil.
YouTube tiene al menos 3 niveles de seguridad para sus videos
Los videos RTMPE se usan típicamente en películas oficiales de larga duración, y están protegidos con SWF Verification Type 2. Esto ha existido desde 2011 y aún no se ha realizado ingeniería inversa.
Los videos de tipo "s" son los más difíciles que realmente se pueden descargar. Normalmente los verá en los videos de VEVO y similares. Comienzan con una firma como
Luego, la firma se codifica con una función como esta
Esta función es dinámica, normalmente cambia todos los días. Para hacerlo más difícil, la función está alojada en una URL como
Esto introduce el problema de la política del mismo origen . Básicamente, no puede descargar este archivo
www.youtube.com
porque son dominios diferentes. Una solución alternativa a este problema es CORS . Con CORS,s.ytimg.com
podría agregar este encabezadoy permitiría descargar JavaScript desde
www.youtube.com
. Por supuesto que no hacen esto. Una solución alternativa para esta solución alternativa es utilizar un proxy CORS. Este es un proxy que responde con el siguiente encabezado a todas las solicitudesEntonces, ahora que ha procesado su archivo JS y ha utilizado la función para codificar la firma, puede usar eso en la cadena de consulta para descargar un video.
fuente
s
tipo de video y unRTMPE
tipo de video?Mi respuesta: a partir del 22 de enero de 2019, el uso de estos métodos puede quedar atrapado si intenta omitir sin vincular también su información de usuario.
¿Por qué? Como soy un nuevo usuario de esta plataforma, no puedo comentar la regla especificada por @ Daniel-B . Según los nuevos ToS (en alemán como estoy en Alemania; traduzca) para YouTube por menos de $ 6.1 G $:
Ahora pueden averiguar el tiempo de duración de cada solicitud y pueden rastrear si usted está violando. Cómo es posible ahora, dado este escenario y su dirección IP externa se conocerá incluso si usa una VPN para protegerse sin vincular los detalles del usuario a ningún servicio.
fuente