【发布时间】:2019-09-24 16:57:48
【问题描述】:
我正在尝试抓取一个使用 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 之间更改用户代理。
【问题讨论】:
-
可能是因为 SSL
-
第一次请求失败还是多次请求失败?
-
嘿,Erik,您在这里找到解决方案了吗?我也有同样的问题:)
-
@SpasBobchev 我没有,最终找到了一个绕过此问题的站点 API
标签: java web-scraping htmlunit