Je souhaite accéder à un site de journal, puis télécharger leurs copies électroniques (en PDF). Le site nécessite que je me connecte en utilisant mon adresse e-mail et mon mot de passe, puis il me permet d'accéder à ces URL PDF.
J'ai du mal à "configurer ma session" dans Wget . Lorsque je me connecte au site depuis mon navigateur, il définit deux valeurs de cookies:
[email protected]
Password=12345
J'ai essayé:
wget --post-data "[email protected]&Password=12345" http://epaper.abc.com/login.aspx
Cependant, cela vient de télécharger la page de connexion et de l'enregistrer localement.
Le FORMULAIRE sur la page de connexion comporte deux champs:
txtUserID
txtPassword
Et des boutons radio comme celui-ci:
<input id="rbtnManchester" type="radio" checked="checked" name="txtpub" value="44">
Un autre bouton:
<input id="rbtnLondon" type="radio" name="txtpub" value="64">
Si je poste cela sur la page login.aspx, j'obtiens la même sortie
wget --post-data "[email protected]&txtPassword=12345&txtpub=44" http://epaper.abc.com/login.aspx
Si je fais:
--save-cookies abc_cookies.txt
il ne semble pas avoir autre chose que le contenu par défaut.
Pour le dernier, si je le fais --debug
aussi, ça dit:
...
Set-Cookie: ASP.NET_SessionId=05kphcn4hjmblq45qgnjoe41; path=/; HttpOnly
...
Stored cookie epaper.abc.com -1 (ANY) / <session> <insecure> [expiry none] ASP.NET_SessionId 05kphcn4hjmblq45qgnjoe41
Length: 107253 (105K) [text/html]
Saving to: `login.aspx'
...
Saving cookies to abc_cookies.txt.
Cependant, abc_cookies.txt affiche UNIQUEMENT les éléments suivants:
# HTTP cookie file.
# Generated by Wget on 2011-08-16 08:03:05.
# Edit at your own risk.
(Je ne sais pas pourquoi je n'obtiens aucune réponse sur Stack Overflow - peut-être que Super User est un meilleur site - Utiliser Wget pour télécharger des fichiers PDF à partir d'un site qui nécessite la configuration de cookies .)
EDIT 1
C:\Temp>wget --cookies=on --keep-session-cookies --save-cookies abc_cookies.txt --post-data "txtUserID=abc%40gmail.com&txtPassword=password&txtpub=44&chkbox=checkbox&submit.x=48&submit.y=7" http://epaper.abc.com/login.aspx --debug
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
DEBUG output created by Wget 1.11.4 on Windows-MinGW.
--2011-08-18 08:15:59-- http://epaper.abc.com/login.aspx
Resolving epaper.abc.com... seconds 0.00, 999.999.99.99
Caching epaper.abc.com => 999.999.99.99
Connecting to epaper.abc.com|999.999.99.99|:80... seconds 0.00, connected.
Created socket 300.
Releasing 0x00a2ae80 (new refcount 1).
---request begin---
POST /login.aspx HTTP/1.0
User-Agent: Wget/1.11.4
Accept: */*
Host: epaper.abc.com
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 100
---request end---
[POST data: txtUserID=abc%40gmail.com&txtPassword=password&txtpub=44&chkbox=checkbox&submit.x=48&submit.y=7]
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Connection: keep-alive
Date: Thu, 18 Aug 2011 02:46:17 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ASP.NET_SessionId=owcrje55yl45kgmhn43gq145; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 107253
---response end---
200 OK
Registered socket 300 for persistent reuse.
Stored cookie epaper.abc.com -1 (ANY) / <session> <insecure> [expiry none] ASP.NET_SessionId owcrje55yl45kgmhn43gq145
Length: 107253 (105K) [text/html]
Saving to: `login.aspx.1'
100%[======================================================================================================================>] 107,253 24.9K/s in 4.2s
2011-08-18 08:16:05 (24.9 KB/s) - `login.aspx.1' saved [107253/107253]
Saving cookies to abc_cookies.txt.
Done saving cookies.
C:\Temp>wget --referer=http://epaper.abc.com/login.aspx --cookies=on --load-cookies abc_cookies.txt --keep-session-cookies --save-cookies abc_cookies.txt http://epaper.abc.com/PagePrint/16_08_2011_001.pdf --debug
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
DEBUG output created by Wget 1.11.4 on Windows-MinGW.
Stored cookie epaper.abc.com -1 (ANY) / <session> <insecure> [expiry none] ASP.NET_SessionId owcrje55yl45kgmhn43gq145
--2011-08-18 08:16:12-- http://epaper.abc.com/PagePrint/16_08_2011_001.pdf
Resolving epaper.abc.com... seconds 0.00, 999.999.99.99
Caching epaper.abc.com => 999.999.99.99
Connecting to epaper.abc.com|999.999.99.99|:80... seconds 0.00, connected.
Created socket 300.
Releasing 0x00598290 (new refcount 1).
---request begin---
GET /PagePrint/16_08_2011_001.pdf HTTP/1.0
Referer: http://epaper.abc.com/login.aspx
User-Agent: Wget/1.11.4
Accept: */*
Host: epaper.abc.com
Connection: Keep-Alive
Cookie: ASP.NET_SessionId=owcrje55yl45kgmhn43gq145
---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Connection: keep-alive
Date: Thu, 18 Aug 2011 02:46:30 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
content-disposition: attachement; filename=Default_logo.gif
Cache-Control: private
Content-Type: image/GIF
Content-Length: 4568
---response end---
200 OK
Registered socket 300 for persistent reuse.
Length: 4568 (4.5K) [image/GIF]
Saving to: `16_08_2011_001.pdf'
100%[======================================================================================================================>] 4,568 7.74K/s in 0.6s
2011-08-18 08:16:14 (7.74 KB/s) - `16_08_2011_001.pdf' saved [4568/4568]
Saving cookies to abc_cookies.txt.
Done saving cookies.
Contenu de abc_cookies.txt
epaper.abc.com FALSE / FALSE 0 ASP.NET_SessionId owcrje55yl45kgmhn43gq145
Réponses:
Je pense que vous devez utiliser
--keep-session-cookies
pour conserver les cookies de session, plutôt que simplement--save-cookies
(vous avez besoin des deux).Fondamentalement, vous
pour vous connecter et obtenir votre cookie de session.
puis
pour télécharger le PDF.
la source
Peut-être que cela vous aidera. Le site auquel j'essayais de me connecter avait des 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 second wget se connecte au site et enregistre les cookies, le troisième utilise ensuite ces cookies pour obtenir la page que vous recherchez.
Il y a quelques informations utiles sur cet autre article SO:
la source