instalar from files como all linux bash shell ubuntu wget

linux - from - wget download website



wget con autenticación (5)

¿Cómo puedo descargar una página web que requiere un nombre de usuario y contraseña?

Por ejemplo, quiero descargar esta página después de haber ingresado el nombre de usuario y la contraseña:

http://forum.ubuntu-it.org/index.php


Los siguientes comandos de wget deberían permitirle acceder a las páginas de un sitio web que requiere un nombre de usuario y contraseña:

wget http://username:[email protected]/url/ wget --http-user=user --http-password=password http://example.org/url/


Pruebe la solución presentada aquí:

Nota para otros que puedan tropezar con esto:

  • Lo anterior simula que el usuario hace un inicio de sesión manual en un sitio que tiene un formulario con dos campos de entrada: un user nombrado y una password nombre
  • El formulario tiene su atributo de action establecido en http://server.com/auth.php
  • El formulario no usa JavaScript
    • Un buen indicio de que usa JavaScript es el atributo onsubmit en el elemento de formulario
    • Tenga en cuenta que esto está lejos de ser la única forma de establecer los atributos: usar JavaScript en cualquier lugar de la página o cualquiera de los archivos de script cargados estática o dinámicamente puede cambiar los elementos del formulario.
  • La mejor manera de ver esto es cargar la página y hacer una inspección en vivo con, por ejemplo, Firebug for Firefox

Por lo tanto, si los nombres de atributos y la URL de acción de formulario son diferentes, debe cambiar los parámetros al primer comando de wget adecuada.

Si usa JavaScript, existe la posibilidad de que no funcione en absoluto; por ejemplo, en el caso del sitio web de OP, utiliza el hash de JavaScript del cliente, por lo que la llamada externa que usa wget no establece los campos necesarios en el formulario (en el caso del sitio de Ubuntu, campo hash_passwrd ).


Tal vez esto ayude. El sitio en el que intentaba iniciar sesión tenía algunos campos ocultos que necesitaba obtener antes de poder iniciar sesión correctamente. Entonces, el primer wget obtiene la página de inicio de sesión para encontrar los campos adicionales, el segundo wget inicia sesión en el sitio y guarda las cookies, el tercero luego usa esas cookies para obtener la página que busca.

#!/bin/sh # get the login page to get the hidden field data wget -a log.txt -O loginpage.html http://foobar/default.aspx hiddendata=`grep value < loginpage.html | grep foobarhidden | tr ''='' '' '' | awk ''{print $9}'' | sed s//"//g` rm loginpage.html # login into the page and save the cookies postData=user=fakeuser''&''pw=password''&''foobarhidden=${hiddendata} wget -a log.txt -O /dev/null --post-data ${postData} --keep-session-cookies --save-cookies cookies.txt http://foobar/default.aspx # get the page your after wget -a log.txt -O results.html --load-cookies cookies.txt http://foobar/lister.aspx?id=42 rm cookies.txt

Hay alguna información útil en esta otra publicación: superusuario -> usando wget para descargar archivos PDF de un sitio que requiere que se establezcan cookies


Usando las opciones:

--password=PASS --user=USERNAME

es decir: wget http://www.example.com --user=joe --password=schmoe

También puede agregar el --auth-no-challenge en caso de problemas adicionales:

es decir: wget http://www.example.com --user=joe --password=schmoe --auth-no-challenge


use las opciones --user=X --password=Y para especificar un nombre de usuario de X y una contraseña de Y