Skip to content

v0.70.0 — Las descargas de YouTube funcionan de nuevo

Choose a tag to compare

@santiquiroz santiquiroz released this 19 Aug 03:26
· 21 commits to master since this release

Las descargas de YouTube funcionan de nuevo.

Qué había pasado

YouTube empezó a exigir dos cosas que ningún descargador traía: resolver un
desafío en JavaScript, y un PO Token (proof-of-origin). Sin el token la
extracción anda —el título, la duración y las calidades salían bien— pero bajar
el archivo devolvía 403 Forbidden.

Antes de tocar nada se midió, contra la última versión publicada de yt-dlp:
fallaba con todos los clientes de YouTube (android_vr, web, web_safari,
ios, mweb, tv_simply), con y sin motor JavaScript, y con dos videos
distintos. O sea no era la versión de yt-dlp, ni el enlace, ni el formato que
hubieras elegido.

Cómo se resolvió

La salida habitual es pasarle a yt-dlp las cookies de tu navegador. Se
descartó: si la app la usa un equipo de gente, leerle el navegador a cada uno no
es una opción.

En cambio se escribió el acuñador del token: ceca,
repo propio y MIT. Genera el token sin cuentas, sin cookies y sin sesión de
nadie. Existe porque el proveedor de referencia del ecosistema es GPL-3.0 y no se
puede distribuir dentro de una aplicación propia.

Qué tenés que hacer

En el instalador hay un componente nuevo, tildado por defecto en la
instalación Completa:

Descargar de YouTube: motor JS y el token que YouTube empezó a exigir (~93 MB)

Si ya tenés Upflow, el botón está en la pantalla de Tareas, junto al resto de los
paquetes.

Si no lo instalás no se rompe nada: los demás sitios siguen funcionando, y
YouTube te explica qué falta en vez de mostrarte un 403 pelado.

Dos detalles, por si te sirven

Costaron encontrar y ninguno de los dos dice su causa en el error:

  • El token se ata al visitor_data de la sesión, no al id del video. Atarlo
    al id —que es lo intuitivo— produce un token válido que igual no descarga.
  • Con el mismo token, el cliente web devuelve solo miniaturas. tv_simply es
    el único que se verificó bajando de punta a punta.

3866 pruebas de backend en verde. Verificado bajando el video que falló en
producción: WAV de 59 MB y 308 segundos.