所以我尝试在 bash 脚本中使用此命令 wget 特定网页:
wget --no-cookies --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" -O $2/content.html $1
结果是我从网站获得了机器人页面,因为 wget 正在重用现有连接(我认为)。该命令在我进行垃圾邮件测试之前就可以工作,现在我的服务器正在从该站点获取机器人测试重定向(无法使用此命令)。
--2017-12-12 19:16:42-- https://www.kayak.co.uk/h/bots/human-redirect.vtl?url=%2Fflights%2FDUB-LAX%2F2018-06-04%2F2018-06-25%2F2adults%3Fsort%3Dbestflight_a
Reusing existing connection to [www.kayak.co.uk]:443.
HTTP request sent, awaiting response... 200 OK
我的问题是:是否有办法阻止 wget 使用现有连接并每次重新连接站点进行下载?
答案1
我知道这是一个老问题,但这也许会对像我一样遇到这个问题的其他人有所帮助。
要禁用“保持活动”功能,请使用该--no-http-keep-alive
参数。
从手册页:
关闭 HTTP 下载的“保持活动”功能。通常,Wget 会要求服务器保持连接打开,以便当您从同一服务器下载多个文档时,它们会通过同一 TCP 连接进行传输。这样可以节省时间,同时减少服务器的负载。
在需要新的、干净的请求的情况下,通常需要使用此参数。尽管不严格相关,但--no-cache
和参数在使用参数的--no-cookies
情况下也可能相关。--no-http-keep-alive
所以OP的命令可能是:
wget --no-http-keep-alive --no-cache --no-cookies --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" -O $2/content.html $1