Certaines parties de wikipedia apparaissent différemment lorsque vous êtes connecté. Je voudrais wget les pages utilisateur afin qu'elles apparaissent comme si j'étais connecté.
Est-il possible de wget des pages 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
Méthode la plus simple: en général, vous devez fournir à wget ou curl les cookies (connectés) d'un site Web particulier pour qu'ils puissent récupérer des pages comme si vous étiez connecté.
Si vous utilisez Firefox, il est facile de le faire via l’add-on [Export Cookies . Installez le module complémentaire et:
cookies.txt
(vous pouvez modifier le nom du fichier/la destination).Ouvrez un terminal et utilisez wget
avec l’option --load-cookies=FILENAME
, par exemple.
wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
curl --cookie cookies.txt ...
(Je vais essayer de mettre à jour cette réponse pour les utilisateurs de Chrome/Chromium)
--cookie-jar
ou wget avec les --save-cookies --keep-session-cookies
options, ainsi que la méthode HTTP/S PUT pour vous connecter. sur un site, enregistrez les cookies de connexion, puis utilisez-les pour simuler un navigateur.Une autre solution facile qui a fonctionné pour moi sans rien installer de plus:
Cela vous donnera une commande que vous pouvez coller directement dans votre Shell, avec toutes vos informations d'identification 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.
Avec cURL, il est très facile de gérer les cookies de deux manières.
curl www.target-url.com -c cookie.txt
enregistrera ensuite un fichier nommé cookie.txt. Mais vous devez vous connecter, vous devez donc utiliser --data avec des arguments tels que: curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt
. Une fois que vous avez enregistré un cookie, 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 enregistrer et envoyer.
Note1: Utiliser cURL CLI est beaucoup plus facile que PHP et peut-être plus rapide;)
Pour enregistrer le contenu final, vous pouvez facilement ajouter > filename.html
à votre commande cURL, puis enregistrer le code HTML complet.
Note2 sur "complet": Vous ne pouvez pas rendre javascript avec cURL, obtenez simplement le code source.
Pour ceux toujours intéressés par ces questions, il existe une extension très utile Chrome appelée CurlWGet qui vous permet de générer une demande wget
/curl
avec des mesures d'authentification, etc. en un clic. Pour installer cette extension, suivez les étapes ci-dessous:
Prendre plaisir!
jetez un œil à cliget pour Firefox.
Lorsque vous êtes sur le point de télécharger, dans la boîte de dialogue de téléchargement finale, vous avez la possibilité de copier le téléchargement en ligne de commande curl dans le Presse-papiers.
Le blog Wget with Firefox Cookies 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 une utilisation 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é.
Essayez quelque chose comme:
wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/
Voir aussi ce lien:
Pour les connexions au site Web plus complexes, vous devez également envisager d'utiliser un script Python et un module imitant un navigateur, comme http://wwwsearch.sourceforge.net/mechanize/ de curl
ou wget
.
De cette façon, les cookies de session sont gérés automatiquement, vous pouvez suivre les liens et remplir les formulaires de connexion, et ainsi "écrire" vous-même dans le processus de connexion comme si vous utilisiez votre navigateur Web.
Avez-vous essayé cela?
wget --user=username --password=password http://en.wikipedia.org/wiki/User:A