使用 Wget 下载需要设置 cookie 的网站上的 PDF 文件

4
我想访问一家报纸网站并下载他们的电子版报纸(PDF格式)。该网站要求我使用我的电子邮件地址和密码登录,然后才允许我访问这些PDF链接。
我在使用wget时遇到了“设置会话”的问题。当我从浏览器登录到该网站时,它会设置两个cookie值:
UserID=abc@gmail.com
Password=12345

我尝试了:
wget --post-data "UserID=abc@gmail.com&Password=12345" http://epaper.abc.com/login.aspx

然而,那只是下载了登录页面并将其保存在本地。

登录页面上的表单有两个字段:

txtUserID
txtPassword

以及类似这样的单选按钮:

<input id="rbtnManchester" type="radio" checked="checked" name="txtpub" value="44">

另一个按钮:

<input id="rbtnLondon" type="radio" name="txtpub" value="64">

如果我将此内容发布到login.aspx页面,则会得到相同的输出。
wget --post-data "txtUserID=abc@gmail.com&txtPassword=12345&txtpub=44" http://epaper.abc.com/login.aspx

如果我执行:
--save-cookies abc_cookies.txt
似乎除了默认内容以外没有其他东西。
对于最后一个,如果我也执行 --debug,它会说:
...
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.

然而,abc_cookies.txt 仅显示以下内容:
# HTTP cookie file.
# Generated by Wget on 2011-08-16 08:03:05.
# Edit at your own risk.

哦,我在http://superuser.com/questions/323971/上回答了你的交叉发布问题,该网站需要设置cookie才能下载PDF文件。 - EightBitTony
1个回答

0

仅供参考,你尝试使用查询字符串变量了吗(显然不太安全)?

wget "http://epaper.abc.com/login.aspx?UserID=abc@gmail.com&Password=12345"

根据您的Shell/操作系统,您可能需要转义特殊字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接