我遇到了一个问题wget
,我需要下载整个网站,其中包含主页中链接的图像和其他文件,我使用以下选项:
wget --load-cookies /tmp/cookie.txt -r -l 1 -k -p -nc 'https://www.example.com/mainpage.do'
(-l
1 用于测试,我可能需要前往 3 级甚至 4 级)
问题是:我不知道如何绕过经过一些递归循环后添加的“随机”GET 参数,所以我在文件/tmp
夹中的最终结果是这样的:
/tmp/www.example.com/mainpage.do
/tmp/www.example.com/mainpage.do?cx=0.0340590343408
/tmp/www.example.com/mainpage.do?cx=0.0348934786475
/tmp/www.example.com/mainpage.do?cx=0.0032878284787
/tmp/www.example.com/mainpage.do?cx=0.0266389459023
/tmp/www.example.com/mainpage.do?cx=0.0103290334732
/tmp/www.example.com/mainpage.do?cx=0.0890345378478
由于页面始终相同,因此我不需要在其他时间获取它,我尝试使用-nc
选项但它不起作用,我也尝试使用-R
(拒绝)但它仅适用于文件扩展名,而不适用于 URL 参数。
我广泛地查阅了 wget 手册,但似乎没有找到方法来实现它;使用 wget 不是强制性的,如果您知道如何以其他方式来实现它,我们欢迎您。
答案1
编写一个本地代理服务器,修改发送给 wget 的响应。
假设您的 URL 位于如下链接中:
<a href="/path/to/mainpage.do?cx=0.0123412341234">
然后你可以像这样运行 Ruby 代理服务器:
require 'webrick/httpproxy'
s = WEBrick::HTTPProxyServer.new(
:Port => 2200,
:ProxyContentHandler => Proc.new{|req,res|
res.body.gsub!(/mainpage.do?cz=[0-9\.]*/, "mainpage.do")
}
)
trap("INT"){ s.shutdown }
s.start