Comment puis-je télécharger une page web qui nécessite un nom d'utilisateur et un mot de passe ?
Par exemple, je veux télécharger cette page après avoir saisi un nom d'utilisateur et un mot de passe :
Comment puis-je télécharger une page web qui nécessite un nom d'utilisateur et un mot de passe ?
Par exemple, je veux télécharger cette page après avoir saisi un nom d'utilisateur et un mot de passe :
Essayez la solution présentée ici :
http://www.unix.com/shell-programming-scripting/131020-using-wget-curl-http-post-authentication.html
# Connectez-vous au serveur. Cela ne peut être fait qu'une seule fois.
wget --save-cookies cookies.txt \
--post-data 'user=foo&password=bar' \
http://server.com/auth.php
# Maintenant, récupérez la page ou les pages qui nous intéressent.
wget --load-cookies cookies.txt \
-p http://server.com/interesting/article.php
Note pour les autres qui pourraient tomber sur ceci :
user
et un nommé password
action
défini sur http://server.com/auth.php
onsubmit
sur l'élément du formulaireDonc, si les noms des attributs et l'url de l'action du formulaire sont différents, vous devez changer les paramètres de la première commande wget
en conséquence.
S'il utilise JavaScript, il y a une chance que cela ne fonctionne pas du tout - par exemple, dans le cas de l'exemple de site Web des OPs, il utilise un hachage JavaScript côté client, donc l'appel extérieur utilisant wget
ne définit pas les champs nécessaires sur le formulaire (dans le cas du site Ubuntu, le champ hash_passwrd
).
Peut-être que cela aidera. Le site sur lequel j'essayais de me connecter avait quelques champs cachés que je devais obtenir avant de pouvoir me connecter avec succès. Ainsi, le premier wget obtient la page de connexion pour trouver les champs supplémentaires, le deuxième wget se connecte au site et enregistre les cookies, le troisième utilise ensuite ces cookies pour obtenir la page que vous recherchez.
#!/bin/sh
# obtenir la page de connexion pour obtenir les données du champ caché
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
# se connecter à la page et enregistrer les 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
# obtenir la page que vous recherchez
wget -a log.txt -O results.html --load-cookies cookies.txt http://foobar/lister.aspx?id=42
rm cookies.txt
Il y a des informations utiles dans ce autre post : superuser -> using wget to download pdf files from a site that requires cookies to be set
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.