Tôi muốn truy cập một trang báo và sau đó tải xuống các bản sao giấy của họ (dưới dạng PDF). Trang web yêu cầu tôi đăng nhập bằng địa chỉ email và mật khẩu của mình và sau đó nó cho phép tôi truy cập các URL PDF đó.
Tôi gặp sự cố 'cài đặt phiên của tôi' trong Wget . Khi tôi đăng nhập vào trang web từ trình duyệt của mình, nó sẽ đặt hai giá trị cookie:
UserID=abc@gmail.com
Password=12345
Tôi đã thử:
wget --post-data "UserID=abc@gmail.com&Password=12345" http://epaper.abc.com/login.aspx
Tuy nhiên, điều đó chỉ cần tải xuống trang đăng nhập và lưu nó cục bộ.
MẪU trên trang đăng nhập có hai trường:
txtUserID
txtPassword
Và radiobutton như thế này:
<input id="rbtnManchester" type="radio" checked="checked" name="txtpub" value="44">
Một nút khác:
<input id="rbtnLondon" type="radio" name="txtpub" value="64">
Nếu tôi đăng bài này lên trang login.aspx, tôi sẽ nhận được cùng một đầu ra
wget --post-data "txtUserID=abc@gmail.com&txtPassword=12345&txtpub=44" http://epaper.abc.com/login.aspx
Nếu tôi làm:
--save-cookies abc_cookies.txt
nó dường như không có gì khác ngoài nội dung mặc định.
Cuối cùng, nếu tôi cũng làm --debug
như vậy, nó nói:
...
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.
Tuy nhiên, abc_cookies.txt CHỈ hiển thị như sau:
# HTTP cookie file.
# Generated by Wget on 2011-08-16 08:03:05.
# Edit at your own risk.
(Tôi không chắc tại sao tôi không nhận được bất kỳ phản hồi nào về Stack Overflow - có lẽ Super User là một trang web tốt hơn - Sử dụng Wget để tải xuống các tệp PDF từ một trang web yêu cầu đặt cookie .)
CHỈNH SỬA 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.
Nội dung của abc_cookies.txt
epaper.abc.com FALSE / FALSE 0 ASP.NET_SessionId owcrje55yl45kgmhn43gq145