wget 镜像、子域名和目录以及 cookies

wget 镜像、子域名和目录以及 cookies

我在一个网页上有一个帐户,现在它已“满”(即,我已经用完了所有分配给我的空间),我想创建该网站的镜像。wget 似乎是可以使用的东西。

问题是我只想镜像位于此目录内的站点http://user.domain.com/room/2324343/transcript/(和子目录)。同时保存存在于不同目录中的正确样式表、javascript 和 css 等。

我还上传了与转录目录页面(在不同的目录中)相关的文件,我想下载/镜像这些文件(这些文件有多种格式,包括 .exe、.py、.png、.app(还有更多))。这些页面上还有位于不同服务器上的图像。

另外,我希望链接(有时是相对的,有时是绝对的(但指向内部内容),有时是外部的)能够正常工作,这样如果它们链接到已下载(镜像)的内容,它们就可以正常工作(无需互联网连接),但如果它们链接到外部或尚未镜像的内容,它们就会链接到外部网站。基本上它们可以按预期工作。

另一个问题是您必须登录才能访问该网站。

可以使用 wget 来完成这个吗?或者有更好的方法吗?

无论如何我该如何实现这一目标?

(我曾在 stackoverflow.com/questions/2190115/wget-mirroring-subdomains-and-directories-and-cookies 上问过这个问题,但有人建议我尝试在这里问)

答案1

首先,您必须登录到服务器,有两种可能性,您的登录通过 http 身份验证完成,在这种情况下,请执行以下操作:

wget -k -r -m -np --user=foo --password=bar http://user.domain.com/room/2324343/transcript/

应该这么做。

现在,如果您需要通过表单登录,则必须分两步进行,首先登录,然后镜像,因此,执行以下操作:

wget --save-cookies cookies.txt --post-data 'user=foo&pass=bar' http://user.domain.com/room/2324343/transcript/
wget -k -r -m -np --load-cookies cookies.txt http://user.domain.com/room/2324343/transcript/

对于第一行,url 可能不正确,因为表单可能会将您发送到一个完全不同的地方,然后再将您送回正确的位置,而 post-data 参数就是一个例子,您必须自己弄清楚要在其中放入什么,可以通过查看页面源代码,或者使用浏览器的某些扩展,例如 Firefox 的 firebug。

相关内容