56 votos

Cómo utilizar youtube-dl --cookies

¿Cómo puedo utilizar el --cookies opción de youtube-dl para descargar un vídeo de Youtube? ¿Puede alguien proporcionar un ejemplo trabajado de cómo obtener las cookies pertinentes para Youtube y ponerlo en el formato adecuado para youtube-dl ?

Contexto: Quiero descargar un vídeo privado de Youtube. Por diversas razones, el método de inicio de sesión en mi cuenta de Google es complicado e implica la autenticación de dos factores y no es compatible con youtube-dl Las opciones de la línea de comandos existentes. Por lo tanto, parece que la mejor manera es iniciar sesión manualmente en mi navegador, obtener las cookies de autenticación de alguna manera, y utilizar el --cookies pero no encuentro un ejemplo de cómo hacerlo.

1 votos

¿Has probado a generar una contraseña para la aplicación en el panel de control de tu cuenta de Google y a utilizarla al proporcionar tus credenciales a YouTube-dl?

0 votos

Una nueva versión de youtube-dl (de su repo de GitHub recién restablecido) me funciona con el 2FA de Google (pon la contraseña específica de la aplicación que puedes generar en la línea de comandos, como -2 XXXXXXXXX )

31voto

maP1E bluE Puntos 11

Una vez que obtengas las cookies, sólo tienes que ejecutar youtube-dl --cookies /pathtocookiefile

Si utilizas Chrome y aceptas que los plugins de terceros lean tus cookies.
Prueba esto cookie.txt Abre el youtube y luego haz clic en el plugin cookie.txt.
Con un clic más, puede descargar el archivo cookie para una pestaña o para todas. enter image description here

Si quieres hazlo manualmente en Chrome. F12 > Aplicación > Almacenamiento > Cookies.
Es necesario convertir la lista de cookies en Netscape format cookies file

#domain          HTTP/Secure    Expires      Name Value  
.youtube.com     TRUE/FALSE    1548523767    GPS    1

9 votos

Se ha eliminado la extensión vinculada. Hay otra con una funcionalidad similar: Obtener cookies.txt

27voto

Muis Puntos 21

Aunque esto no funcione específicamente para YouTube, quería destacar un enfoque más sencillo que funciona bien para youtube-dl para descargar desde un sitio que requiere un inicio de sesión (y utiliza cookies para rastrear la sesión).

Editar: Desgraciadamente YouTube depende de las cookies establecidas en varios dominios Por lo tanto, es probable que este enfoque no funcione allí.

youtube-dl tiene una opción llamada --add-header :

--add-header FIELD:VALUE         Specify a custom HTTP header and its value, separated by a colon ':'. You can use this option
                                 multiple times

En última instancia, las cookies se envían al servidor como cabeceras HTTP, por lo que todo lo que hay que hacer es establecer el Cookie en la solicitud. Este método también es bastante más fácil que extraer un tarro de cookies de un navegador moderno, especialmente porque esos tienden a estar encriptados y la gente a menudo recurre a herramientas cuestionables de terceros para extraer esos datos.

Este es un ejemplo de uso:

youtube-dl --add-header "Cookie:COOKIE_STRING_EXTRACTED_FROM_BROWSER" "https://website-that-hosts.example/the-video-you-want"

Para extraer el valor de la cabecera de la cookie:

  1. Abra el sitio web del que desea descargar

  2. Entrar en el sistema

  3. Abra el inspector de redes de su navegador

  4. Recargar la página

  5. Encuentre la primera solicitud hecha a ese sitio web y haga clic en ella, luego vea los encabezados de la solicitud

  6. Copiar todo el valor de la cadena del Cookie encabezado, resaltado en esta imagen:

    Extracting the Cookie header from Google Chrome

  7. Pegue ese valor en el comando de ejemplo anterior para reemplazar COOKIE_STRING_EXTRACTED_FROM_BROWSER (dentro de las comillas)

Esto funciona bien para descargar episodios completos de sitios que requieren el ingreso del proveedor de cable.

14voto

Boden Puntos 2242

Este enfoque no requiere la instalación de ninguna extensión del navegador, lo que podría suponer un riesgo de seguridad , como @bgentry también señaló .

Requiere una ventana de terminal, Node.js y este código abierto script que publicado .

  1. Descargar el script (o clon el repo si lo prefiere)
  2. En un editor, abra un nuevo archivo en blanco
  3. En Chrome/Chromium, inicie las herramientas de desarrollo (F12)
  4. Navega hasta el sitio del que necesitas las cookies, por ejemplo, YouTube, e inicia sesión.
  5. Vaya a Aplicación -> Almacenamiento -> Cookies
  6. Para cada URL que se encuentre en Cookies (por ejemplo https://www.youtube.com ), copie la tabla de cookies en el portapapeles y péguela al final del archivo que ha abierto en el paso 2. Chrome cookies
  7. Guarde el archivo con un nombre como file-with-cookies-copy-pasted-from-Chrome.txt
  8. Ejecuta el script:

    node convert-cookies.js file-with-cookies-copy-pasted-from-Chrome.txt > netscape-cookies.txt

Ahora, netscape-cookies.txt contendrá cookies listas para ser utilizadas por cualquier aplicación que lea cookies en formato Netscape (por ejemplo yotube-dl o curl ).

0 votos

Nota: el archivo txt de entrada debe estar codificado en UTF-8, los resultados son raros si es Unicode

0 votos

@dan-dascalescu Cuando la opción "Copiar" no aparece en el menú del botón derecho, basta con pulsar la tecla "shift" ANTES de hacer clic con el botón derecho para abrir el menú contextual.

2 votos

@dan-dascalescu También se puede utilizar este comando para convertir las cookies al formato Nescape jar cookies : curl -o /dev/null -s --cookie file-with-cookies-copy-pasted-from-Chrome.txt --cookie-jar netscape-cookies.txt https://www.youtube.com

11voto

Sammyy Delbrin Puntos 22

Esta respuesta no requiere una prórroga y es en su mayor parte automática.

  1. Pulse Ctrl + Shift + I para abrir las Herramientas para Desarrolladores Web

  2. Seleccione el Consola en la parte superior de la ventana de las Herramientas para el desarrollo web

  3. Copie este código en la entrada de la consola y pulse Enter

    (function() { let S = '# Netscape HTTP Cookie File\n'; for (raw_cookie of document.cookie.split(';')) { let cookie = raw_cookie.trim(); let separator = cookie.indexOf('='); let name = cookie.substring(0, separator); let value = cookie.substring(separator + 1);

    let domain = window.location.hostname;
    // hopefully this will convert domains like `www.test.com` and `test.com` into `.test.com`
    domain = domain.replace('www.', '.');
    if (domain[0] !== '.') {
        domain = '.' + domain;
    }
    
    // netscape cookie file format:
    // # domain  HTTP PATH SECURE timestamp name  value
    // .test.com TRUE /    FALSE  123456789 token 1234abcdef
    S += `${domain}\tTRUE\t/\tTRUE\t0\t${name}\t${value}\n`

    }

    console.log(S) })();

  4. Haga clic con el botón derecho del ratón en la salida y seleccione Copiar mensaje

  5. Crear cookies.txt y pegar la salida allí

  6. También tuve que borrar la última línea que decía algo así: debugger eval code:21:11

He probado este método con Firefox en twitch.tv y he utilizado con éxito el archivo resultante con youtube-dl 2021.06.06

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X