Descargar con wget usando referer + cookie

1

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:

publicar datos de la descarga real de Firefox

¿Lo que falta?

Azevedo
fuente
Podría ser que la url que crees que es la descarga no lo es. Por ejemplo, wgetno maneja las redirecciones de JavaScript.
Ouroborus

Respuestas:

1

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.

Azevedo
fuente