首页 > 解决方案 > Wget:如何保持 cookie 会话活动以进行递归或镜像下载(--keep-session-cookies 不起作用)

问题描述

我正在尝试使用 wget 下载网站,但在克隆第一个网页后它不会保持会话活动,该网站有登录名并使用 HTTPS,因此如果不是通过凭据,我将无法通过它导航。我设法使用 cURL 登录服务器并将其 PHPSESSIONID 保存到 cookie.txt 所以这个过程我正在做:

首先,我创建一个 cookie.txt

wget --save-cookies=cookie.txt 
     --keep-session-cookies "https://huellas.dashboardtimes.com/login.php?user=MyUserName&password=MyPass"
     --delete-after

没有--post-data给出它,因为网站使用 GET 方法进行身份验证(这成功登录但仅用于第一页)。

接着:

wget --load-cookies=cookie.txt -m https://Website.wget.com/home

此时, wget clone https://Website.wget.com/home在成功登录后返回代码 200 OK,但是当它完成 /home 并进入另一个模块时,例如https://Website.wget .com/contacts它失去了它的会话并将所有其他模块克隆为错误 - 404,返回代码为 302。我还尝试为该命令提供一个包含几个 URL 的列表

wget --load-cookies=cookie.txt -m -i list.txt

但我仍然得到相同的结果。选项中有什么-m可能导致这种情况吗?因为如果我不指定-m选项,它会下载列表中 URL 的 HTML 文件,没有错误 404,但我需要的不仅仅是 HTML,这就是我使用-m选项的原因。

有解决方法还是我错过了什么?

(如果有任何其他工具,如 wget 可以用于此,我也想知道)。

感谢您的回答。

标签: linuxcurlcookieshttpswget

解决方案


推荐阅读