Saya ingin mengakses situs surat kabar dan kemudian mengunduh salinan epaper mereka (dalam PDF). Situs ini mengharuskan saya untuk masuk menggunakan alamat email dan kata sandi saya dan kemudian mengizinkan saya untuk mengakses URL PDF tersebut.
Saya mengalami masalah 'mengatur sesi saya' di Wget . Ketika saya masuk ke situs dari browser saya, itu menetapkan dua nilai cookie:
[email protected]
Password=12345
Saya mencoba:
wget --post-data "[email protected]&Password=12345" http://epaper.abc.com/login.aspx
Namun, itu baru saja mengunduh halaman login dan menyimpannya secara lokal.
FORMULIR pada halaman login memiliki dua bidang:
txtUserID
txtPassword
Dan radiobuttons seperti ini:
<input id="rbtnManchester" type="radio" checked="checked" name="txtpub" value="44">
Tombol lain:
<input id="rbtnLondon" type="radio" name="txtpub" value="64">
Jika saya memposting ini ke halaman login.aspx, saya mendapatkan hasil yang sama
wget --post-data "[email protected]&txtPassword=12345&txtpub=44" http://epaper.abc.com/login.aspx
Jika aku melakukan:
--save-cookies abc_cookies.txt
sepertinya tidak memiliki apa pun selain konten default.
Untuk yang terakhir, jika saya melakukannya --debug
juga, dikatakan:
...
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.
Namun, abc_cookies.txt menunjukkan HANYA yang berikut ini:
# HTTP cookie file.
# Generated by Wget on 2011-08-16 08:03:05.
# Edit at your own risk.
(Saya tidak yakin mengapa saya tidak mendapatkan tanggapan apa pun tentang Stack Overflow - mungkin Super User adalah situs yang lebih baik - Menggunakan Wget untuk mengunduh file PDF dari situs yang memerlukan cookie untuk diatur .)
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.
Isi abc_cookies.txt
epaper.abc.com FALSE / FALSE 0 ASP.NET_SessionId owcrje55yl45kgmhn43gq145
Jawaban:
Saya pikir Anda perlu menggunakan
--keep-session-cookies
untuk menyimpan cookie sesi, bukan hanya--save-cookies
(Anda perlu keduanya).Pada dasarnya kamu
untuk masuk dan mendapatkan cookie sesi Anda.
kemudian
untuk mengunduh PDF.
sumber
Mungkin ini akan membantu. Situs yang saya coba masuki memiliki beberapa bidang tersembunyi yang harus saya dapatkan sebelum saya berhasil masuk. Jadi wget pertama mendapatkan halaman login untuk menemukan bidang tambahan, wget kedua login ke situs dan menyimpan cookie, yang ketiga kemudian menggunakan cookie itu untuk mendapatkan halaman yang Anda cari.
Ada beberapa informasi berguna pada pos SO lainnya ini :
sumber