Estoy tratando de usar Wget para descargar una página, pero no puedo pasar de la pantalla de inicio de sesión.
¿Cómo envío el nombre de usuario / contraseña utilizando los datos de publicación en la página de inicio de sesión y luego descargo la página real como usuario autenticado?
Respuestas:
Basado en la página del manual:
Asegúrate de que el
--post-data
parámetro esté correctamente codificado en porcentaje (¡especialmente los símbolos!) O la solicitud probablemente fallará. También asegúrese de queuser
ypassword
son las claves correctas; puede encontrar las claves correctas buscando el HTML de la página de inicio de sesión (busque en la función "inspeccionar elemento" de su navegador y encuentre elname
atributo en los campos de nombre de usuario y contraseña).fuente
-p
(--page-requisites
) para esto.--delete-after
a la primera recuperación para que no termines guardando la página de resultados del inicio de sesión.WGET64: missing URL
, puse todo el comando wget en una línea y eliminé `\`Si lo necesita para un solo uso, puede iniciar sesión a través del navegador y luego copiar los encabezados necesarios:
Use "Copiar como cURL" en la pestaña Red de Herramientas para desarrolladores (vuelva a cargar la página después de abrir) y reemplace el indicador de encabezado de curl
-H
y--data
con wget--header
y--post-data
.fuente
wget
con la cookie correcta no lo hizo; Sospecho que el servicio web busca múltiples encabezados GET diferentes, incluso aparentemente sin importancia como "User-Agent" o "Cache-Control".wget
proporcionó los datos de manera incorrecta.Le di directamente cookies de una conexión existente a wget con --no-cookies y el encabezado de solicitud HTTP Cookie. En mi caso, fue un inicio de sesión en la universidad de Moodle donde el inicio de sesión parece más complejo (utilizando múltiples solicitudes con un ticket de inicio de sesión). Agregué --post-data porque era una solicitud POST. Por ejemplo, obtenga la lista de todos los usuarios de Moodle:
wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
fuente
Yo tuve el mismo problema. Mi solución fue iniciar sesión a través de Chrome y guardar los datos de las cookies en un archivo de texto. Esto se hace fácilmente con esta extensión de Chrome : extensión de exportación Chrome cookie.txt .
Cuando obtiene los datos de las cookies, también hay un ejemplo sobre cómo usarlos con wget. Se le proporciona una línea de comando simple de copiar y pegar.
fuente
Quería una línea que no descargara ningún archivo; Aquí hay un ejemplo de canalizar la salida de la cookie en la siguiente solicitud. Solo probé lo siguiente en Gentoo, pero debería funcionar en la mayoría de los entornos * nix:
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
(esta es una línea, aunque probablemente se envuelve en su navegador)Si desea que la salida se guarde en un archivo, cambie
-O -
a-O /some/file/name
fuente
No necesita cURL para hacer datos de formulario PUBLICADOS.
--post-data 'key1=value1&key2=value2'
funciona bien Nota: también puede pasar un nombre de archivo para wget con los datos POST en el archivo.fuente
Si están utilizando autenticación básica:
Si están usando datos de formulario POSTed, necesitarás usar algo como cURL en su lugar.
fuente
Una solución que usa lynx y wget.
Nota: Lynx debe haber sido compilado con el indicador --enable-persistent-cookies para que esto funcione
Cuando desee usar wget para descargar algún archivo de un sitio que requiere inicio de sesión, solo necesita un archivo cookie. Para generar el archivo cookie, elijo lynx. Lynx es un navegador web de texto. Primero necesita un archivo de configuración para Lynx para guardar la cookie. Cree un archivo lynx.cfg. Escriba estas configuraciones en el archivo.
Luego inicie lynx con este comando:
Después de ingresar el nombre de usuario y la contraseña, y seleccione 'preservarme en esta PC' o algo similar. Si inicia sesión correctamente, verá una hermosa página web de texto del sitio. Y te desconectas. En el directorio actual, encontrará un archivo de cookie denominado cookie.file. Esto es lo que necesitamos para wget.
Entonces wget puede descargar el archivo del sitio con este comando.
fuente
Ejemplo para descargar con wget en el servidor un enlace de archivo grande que se puede obtener en su navegador.
Por ejemplo, usando Google Chrome.
Inicie sesión donde lo necesite y presione descargar. Vaya a descargar y copie su enlace.
Luego, abra DevTools en una página donde inicie sesión, vaya a la Consola y obtenga sus cookies, ingresando
document.cookie
Ahora, vaya al servidor y descargue su archivo:
wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>
fuente