wget:如何下载文件,其 url 参数动态变化,仅一次

wget:如何下载文件,其 url 参数动态变化,仅一次

我遇到了一个问题wget,我需要下载整个网站,其中包含主页中链接的图像和其他文件,我使用以下选项:

wget --load-cookies /tmp/cookie.txt -r -l 1 -k -p -nc 'https://www.example.com/mainpage.do'

-l1 用于测试,我可能需要前往 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

相关内容