我正在尝试抓取使用Cloudflare的页面,直到最近这一切都没有问题。但是截至昨天,我遇到了503(ddos保护页面)。如今,它已转变为简单的403。检查响应,我可以看到页面正在请求我启用cookie。我目前正在使用HtmlUnit进行抓取,并且将BrowserVersion设置为Chrome。
这是我目前的尝试:
private HtmlPage scrapeJS(String targetUrl) throws ScrapeException {
Log.verbose("Attempting JS scrape ...");
WebClient client = new WebClient(BrowserVersion.CHROME);
client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setCssEnabled(css);
client.getOptions().setUseInsecureSSL(insecureSSL);
client.setCookieManager(new CookieManager());
client.getOptions().setRedirectEnabled(true);
HtmlPage page;
try {
page = client.getPage(targetUrl);
client.waitForBackgroundJavaScript(10000);
} catch (FailingHttpStatusCodeException e){
Log.verbose("JS scrape resulted in " + e.getStatusCode());
throw new ScrapeException(source, e);
} catch (IOException e){
throw new ScrapeException(source, e);
}
return page;
}
我应该提到,这在我的台式机上都无法通过Cookie检查和503,但是在我的笔记本电脑(是Mac)上未通过Cookie检查。
我环顾四周,但是大多数处理HtmlUnit的帖子似乎都过时了,解决方案(例如等待后台JS)不起作用,也无法在firefox和chrome之间更改用户代理。