4 votes

Téléchargement avec wget en utilisant referer + cookie

J'essaie de télécharger un fichier à partir d'un site Web qui nécessite une connexion. Cette commande récupère le cookie.txt et le html téléchargé montre que je suis connecté (ok) :

(J'ai séparé la commande en lignes pour plus de lisibilité)

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

Ici j'obtiens cookies.txt. (tout est ok). Et après ça : (essayant de télécharger)

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

Mais au lieu de télécharger le fichier, il renvoie un HTML indiquant que le fichier ne peut être téléchargé que sur le site web.

Voici les données POST de Firefox juste avant le début du téléchargement :

post data from actual Firefox download

Que manque-t-il ?

1voto

Azevedo Points 478

Résolu. Le HTML comporte un formulaire caché qui envoie la requête via POST. J'ai juste dû ajouter --post-data "login_username=****&login_password=****" . Le serveur ne commence le téléchargement que s'il s'agit d'une demande POST.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X