58 votes

Comment utiliser wget/curl pour télécharger depuis un site sur lequel je suis connecté ?

Certaines parties de wikipedia apparaissent différemment lorsque vous êtes connecté. Je voudrais récupérer les pages des utilisateurs afin qu'elles apparaissent comme si j'étais connecté.

Y a-t-il un moyen d'obtenir des pages d'utilisateur comme celle-ci ?

http://en.wikipedia.org/wiki/User:A

c'est la page de connexion :

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3

63voto

ish Points 134738

Le moyen le plus simple : connectez-vous avec votre navigateur, et donnez les cookies à wget

Méthode la plus simple : en général, vous devez fournir wget o bouclette avec les cookies (de connexion) d'un site web particulier pour qu'ils aillent chercher les pages comme si vous étiez connecté .

Si vous utilisez Firefox, c'est facile à faire via la fonction Cookies d'exportation complémentaire. Installez le module complémentaire, et :

  1. Ir a Outils...Exporter les cookies et sauvegarder le cookies.txt (vous pouvez changer le nom du fichier/destination).
  2. Ouvrez un terminal, et utilisez wget avec le --load-cookies=FILENAME option, par exemple

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    • Pour bouclette c'est curl --cookie cookies.txt ...

(Je vais essayer de mettre à jour cette réponse pour les utilisateurs de Chrome/Chromium)

La méthode dure : utiliser bouclette (de préférence) ou wget pour gérer l'ensemble de la session

  • Un mode d'emploi détaillé dépasse le cadre de cette réponse, mais vous pouvez utiliser bouclette avec le --cookie-jar o wget avec le --save-cookies --keep-session-cookies ainsi que la méthode HTTP/S PUT pour se connecter à un site, enregistrer les cookies de connexion, puis les utiliser pour simuler un navigateur.
  • Inutile de dire que cela nécessite de parcourir la source HTML de la page de connexion (récupérer les noms des champs de saisie, etc.), et qu'il est souvent difficile de faire fonctionner les sites utilisant autre chose qu'une simple authentification par login/mot de passe.
  • Conseil : si vous choisissez cette voie, il est souvent beaucoup plus simple de s'occuper de la mobile d'un site web (si disponible), au moins pour l'étape d'authentification.

20voto

BlackShift Points 301

Une autre solution facile qui a fonctionné pour moi sans installer quoi que ce soit d'autre :

  • Ouvrez l'onglet "Réseau" de "Développeur Web" outil : Ctrl-Shift-E
  • Visitez la page que vous voulez sauvegarder (par exemple, une photo derrière un login).
  • Cliquez à droite sur la demande et choisissez Copier -> Copier en cURL

Cela vous donnera une commande que vous pouvez coller directement dans votre Shell, qui a tous vos identifiants de cookie, par exemple.

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'

Vous pouvez ensuite modifier l'URL dans la commande pour récupérer ce que vous voulez.

4voto

m3nda Points 160

Avec cURL, il est très facile de gérer les cookies dans les deux sens.

curl www.target-url.com -c cookie.txt puis enregistrera un fichier nommé cookie.txt. Mais vous devez vous connecter, donc vous devez utiliser --data avec des arguments comme : curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt . Une fois que vous avez obtenu le cookie logué, vous pouvez l'envoyer avec : curl www.target-url.com/?user-page.php -b cookie.txt

Utilisez simplement -c (--cookie) ou -b (--cookie-jar) pour sauvegarder et envoyer.

Note1 : L'utilisation de cURL CLI est beaucoup plus facile que PHP et peut-être plus rapide ;)

Pour sauvegarder le contenu final, vous pouvez facilement ajouter > filename.html à votre commande cURL puis enregistrez le code html complet.

Note2 à propos de "full" : Yo ne peut pas rendre le javascript avec cURL, juste obtenir le code source.

3voto

aport002 Points 225

Pour ceux qui sont toujours intéressés par ces questions, il existe une extension Chrome très utile appelée CurlWGet qui vous permet de générer un wget / curl demande avec des mesures d'authentification, etc. en un seul clic. Pour installer cette extension, suivez les étapes ci-dessous :

  1. Installez l'extension à partir du site Chrome Webstore .
  2. Allez sur la page web que vous souhaitez télécharger.
  3. Lancez le téléchargement.
  4. L'extension générera un lien pour vous.

Profitez-en !

2voto

Falko Menge Points 485

Le billet de blog Wget avec les cookies de Firefox montre comment accéder au fichier de données sqlite dans lequel Firefox stocke ses cookies. De cette façon, il n'est pas nécessaire d'exporter manuellement les cookies pour les utiliser avec wget. Un commentaire suggère que cela ne fonctionne pas avec les cookies de session, mais cela a bien fonctionné pour les sites avec lesquels je l'ai essayé.

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