使用 wget 使用 referer + cookie 下载

使用 wget 使用 referer + cookie 下载

我正在尝试从需要登录的网站下载文件。此命令检索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 数据:

发布实际 Firefox 下载的数据

缺什么?

答案1

解决了。​​HTML 有一个隐藏表单,它通过 POST 发送请求。我只需要添加--post-data "login_username=****&login_password=****"。服务器仅在 POST 请求时才开始下载。

相关内容