我需要获取一个网站的本地副本,该网站需要在显示内容之前确认用户的年龄。没有复杂的表格,只有一个复选框和一个按钮,“是的,我是成年人”。我尝试使用wget
但没有成功,它只下载了这个初始屏幕,仅此而已。 Httrack 也失败了。
我相信确认信息存储在 cookie 文件中,并且我想我找到了它是哪一个。所以我使用复制它cookie.txt 导出chromium 扩展名,然后将其保存到 .txt 并wget
使用选项再次尝试--load-cookies
,但仍然不起作用。
我如何下载这样的网站?我是否滥用wget
或者也许有更好的方法来做到这一点?
编辑:
好的,DownThemAll 似乎可以完成这项工作。最后,我wget
也成功了,使用
wget -mpkrl 0 http://example.com
也许-rl 0
是我之前所缺少的。
在调查页面源代码后,我发现不涉及重新加载/重定向,子页面已正确下载,并且确认屏幕只是iframe
页面顶部的一个,因此我可以使用一些简单的脚本来摆脱它。
(在这种特殊情况下,最终没有必要弄乱cookie,所以我不会将此作为答案发布。)
答案1
这取决于网站的设置方式,并非所有网站都使用 cookie - 有些可能使用 php-sessions 之类的东西,我不知道 wget 是否可以直接处理它。如果您设法找到会话 ID(该部分通常被浏览器隐藏在地址行中或仅在登录时使用一次),您可以使用它(URL+会话 ID)作为wget 的起始 URL。
回到饼干......然而,我自己也需要做类似的事情,所以一些提示......
有些网站使用临时的 cookie,即。仅此届会议的最后一次。这些通常是不是存储在 cookie.txt/cookies-database 中,因此并非所有 cookie 导出器都会导出它们 - 如果它从文件/数据库导出,则不会...如果它从浏览器导出 - “内存”(在站点上) ), 好的。 Personally, I've found the "cookie.txt export" extension for the Chrome-browser the best, as it saves *all* cookies (including temps) from just the active tab.
(嗯,实际上它以文本形式显示cookie,您必须标记并复制它并自己保存到文件中)用于登录;检查“记住我”,通常会将未存储在 cookie 文件/数据库中的临时 cookie 转换为永久 cookie,因此可以轻松导出它(但可能对年龄确认没有帮助)。
存储 cookies.txt 文件后,对其进行一些编辑可能是个好主意 - 增加过期时间,也许将临时 cookie 编辑为永久 cookie(认为这只是一个“开关”)。您还可以删除任何不相关的 cookie(即广告等)。
在 wget 工作时保持浏览器窗口打开 - 也许刷新页面或偶尔浏览一下 - 将确保您的会话在 wget 完成之前不会过期。
还有浏览器的扩展...我喜欢 Firefox 的“Down-them-all”;它允许您下载内容(尽管比 wget 更具交互性)。您将获得当前页面的链接列表,只需检查要保存的链接和/或图像 - 以及可选的您想要跟踪链接的深度级别。如果您在开始之前先登录和/或检查您的年龄,那么 Down-them-all 将与您的浏览器一起登录并签入,并且应该能够下载您可以手动下载的所有内容。尝试使用重命名模式和编号,因为我认为它会平坦地存储所有页面,否则可能会出现命名冲突(尽管它会在覆盖之前询问)。
祝你好运!