我正在尝试从需要登录的网站下载文件。此命令检索cookie文件下载的 html 显示我已登录(正常):
(为了便于阅读,我将命令分成几行)
wget
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0)
Gecko/20100101 Firefox/45.0"
--keep-session-cookies
--save-cookies cookies.txt
--post-data "login_username=MyUserName&login_password=*******"
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716"
http://somewebsite.com/login.php
这里我得到了 cookies.txt。(一切正常)。之后:(正在尝试下载)
wget
--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0)
Gecko/20100101 Firefox/45.0"
--load-cookies cookies.txt
--header="Host: somewebsite.com"
--header="Referer: http://somewebsite.com/files/download.php?i=2157716"
--header="Connection: keep-alive" --header="Accept-Language: en-US,en;q=0.5"
--header="Accept-Encoding: gzip, deflate"
http://somewebsite.com/files/dl.php?t=2157716
但它并没有下载文件,而是返回了一段 HTML,内容是:该文件只能从网站下载。
以下是下载开始之前 Firefox 的 POST 数据:
缺什么?
答案1
解决了。HTML 有一个隐藏表单,它通过 POST 发送请求。我只需要添加--post-data "login_username=****&login_password=****"
。服务器仅在 POST 请求时才开始下载。