Estoy tratando de descargar un archivo de un sitio web que requiere inicio de sesión. Este comando recupera el cookie.txt y el html descargado muestra que he iniciado sesión (ok):
(Rompí el comando en líneas para facilitar la lectura)
wget
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0)
Gecko/20100101 Firefox/45.0"
--keep-session-cookies
--save-cookies cookies.txt
--post-data "login_username=MyUserName&login_password=*******"
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716"
http://somewebsite.com/login.php
Aquí obtengo cookies.txt. (todo bien). Y después de eso: (tratando de descargar)
wget
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0)
Gecko/20100101 Firefox/45.0"
--load-cookies cookies.txt
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716"
--header="Connection: keep-alive" --header="Accept-Language: en-US,en;q=0.5"
--header="Accept-Encoding: gzip, deflate"
http://somewebsite.com/files/dl.php?t=2157716
Pero en lugar de descargar el archivo, devuelve un HTML que dice que el archivo solo se puede descargar desde el sitio web.
Aquí están los datos POST de Firefox justo antes de que comience la descarga:
¿Lo que falta?
wget
no maneja las redirecciones de JavaScript.Respuestas:
Resuelto El HTML tiene un formulario oculto que envía la solicitud a través de POST. Solo tenía que agregar
--post-data "login_username=****&login_password=****"
. El servidor solo inicia la descarga si es una solicitud POST.fuente