HTMLUnit绕过cloudflare DDOS和所需的cookie

时间:2019-09-24 16:57:48

标签: java web-scraping htmlunit

我正在尝试抓取使用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之间更改用户代理。

0 个答案:

没有答案