Quand j'exécute cette commande:
wget --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" http://yahoo.com
... j'obtiens ce résultat (avec rien d'autre dans le fichier):
<!-- hw147.fp.gq1.yahoo.com uncompressed/chunked Wed Jun 19 03:42:44 UTC 2013 -->
Mais quand je cours wget http://yahoo.com
sans --user-agent
option, je reçois la page complète.
L'agent d'utilisateur est le même en-tête que mon navigateur actuel envoie. Pourquoi cela arrive-t-il? Existe-t-il un moyen de s’assurer que l’agent utilisateur n’est pas bloqué lors de l’utilisation de wget?
Il semble que le serveur Yahoo utilise des méthodes heuristiques basées sur User-Agent
dans un cas Accept
en-tête est défini sur */*
.
Accepter: texte/html
a fait le tour pour moi.
par exemple.
wget --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" http://yahoo.com
Note: si vous ne déclarez pas Accept
header, alors wget
ajoute automatiquement Accept:*/*
ce qui signifie donnez-moi tout ce que vous avez.
J'ai créé un ~/.wgetrc
fichier avec le contenu suivant (obtenu auprès de askapache.com mais avec un agent utilisateur plus récent, car sinon cela ne fonctionnait pas toujours):
header = Accept-Language: en-us,en;q=0.5
header = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
header = Connection: keep-alive
user_agent = Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0
referer = /
robots = off
Je peux maintenant télécharger depuis la plupart des sites de partage de fichiers (vidéo en continu).
Vous devez définir à la fois l'agent utilisateur et le référant:
wget --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" --referrer connect.wso2.com http://dist.wso2.org/products/carbon/4.2.0/wso2carbon-4.2.0.Zip