使用HTTrack克隆WordPress网站遭CleanTalk反爬机制拦截的解决方案咨询
问题背景
我正在帮一位丢失主机登录权限的人克隆整个网站(具体原因就不多说了),需要拿到本地完整副本:
目标网站:https://www.cowpatch.com/
该网站是WordPress搭建的
我在Mac终端用HTTrack执行的命令是:
httrack https://www.cowpatch.com/ -O "/Users/abe/websites/cowpatch"
现在的问题是,虽然能抓到index.html,但其他页面都是CleanTalk的反爬拦截页,内容如下:
Anti-Crawler Protection is checking your browser and IP … for spam
bots. You will be automatically redirected to the requested page after
3 seconds. Don't close this page. Please, wait for 3 seconds to pass
to the page. Anti-Spam by CleanTalk
我推测是因为HTTrack不会等待这3秒跳转,所以抓下来的都是拦截页而非真实内容。请问有没有解决办法?我翻了HTTrack的用户指南还没找到头绪。
可行的解决方案尝试
针对CleanTalk的这种延迟跳转反爬,你可以试试以下几个HTTrack参数组合,模拟正常用户的访问行为:
添加请求延迟,匹配拦截要求的等待时间
CleanTalk要求等待3秒,你可以给HTTrack设置每个请求之间的延迟,命令如下:httrack https://www.cowpatch.com/ -O "/Users/abe/websites/cowpatch" -d 3000-d参数用来指定请求间隔的毫秒数,设置成3000刚好匹配拦截页要求的等待时间,让HTTrack在请求下一页前先等够时间,避免被判定为爬虫。模拟真实浏览器的User-Agent
很多反爬会检测请求的UA标识,HTTrack默认的UA容易被识别,你可以指定一个主流浏览器的UA字符串,比如Mac版Chrome的:httrack https://www.cowpatch.com/ -O "/Users/abe/websites/cowpatch" -d 3000 -c "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"-c参数用来设置自定义HTTP请求头,这里指定Chrome的UA,让网站认为是真实浏览器在访问。启用Cookie保存,保留验证状态
CleanTalk可能会通过Cookie记录你的验证状态,开启HTTrack的Cookie功能可以复用这个状态,避免每次请求都触发拦截:httrack https://www.cowpatch.com/ -O "/Users/abe/websites/cowpatch" -d 3000 -c "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" --keep-cookies--keep-cookies参数会让HTTrack保存并复用Cookie,第一次通过验证后,后续请求就不会再触发拦截页了。显式开启重定向跟随
确保HTTrack会跟随拦截页后的自动跳转,虽然默认是开启的,但显式指定能强化这个行为:httrack https://www.cowpatch.com/ -O "/Users/abe/websites/cowpatch" -d 3000 -c "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" --keep-cookies --follow-redirects--follow-redirects能保证HTTrack抓取到3秒跳转后的真实目标页面。
额外提示
如果上面的参数组合还是不行,你可以先手动在浏览器访问目标网站,通过CleanTalk的验证,然后把浏览器的Cookie导出,用--load-cookies参数导入到HTTrack中,这样HTTrack就能带着已验证的Cookie爬取,直接跳过拦截步骤。
另外,注意不要设置过快的爬取速度,既避免给目标网站造成压力,也能降低被反爬机制盯上的概率。
备注:内容来源于stack exchange,提问作者Abraham Feinberg

