You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Selenium ChromeDriver绕过Cloudflare机器人检测?

如何使用Java Selenium ChromeDriver绕过Cloudflare机器人检测?

太懂这种滋味了——搜遍全网找方案,结果90%都是Python的,而自己只熟悉Java,简直崩溃。你现在的代码方向没错,但缺了Cloudflare机器人检测紧盯的那些关键细节,咱们一步步来优化。

先拆解你当前代码的核心问题:

  • BrowserMobProxy这类代理工具本身会留下可被检测的特征,而且单独添加Platform这种非标准请求头反而容易暴露自动化痕迹
  • ChromeOptions的配置过于基础,完全没屏蔽Selenium/ChromeDriver的专属自动化标识
  • 请求头的设置不够贴合真实浏览器的习惯,比如最关键的User-Agent都没配置

优化后的完整Java代码(附详细注释)

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v128.network.Network;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;

public class CloudflareBypassExample {
    public static void main(String[] args) {
        // 1. 核心:配置ChromeOptions,最大程度模拟真实浏览器
        ChromeOptions options = new ChromeOptions();
        
        // 禁用Chrome的自动化检测标记,这是绕过Cloudflare的关键
        options.addArguments("--disable-blink-features=AutomationControlled");
        // 屏蔽自动化相关的扩展和插件
        options.addArguments("--disable-extensions");
        options.addArguments("--disable-plugins-discovery");
        // 模拟真实用户的窗口大小
        options.addArguments("--start-maximized");
        // 避免沙箱模式带来的特征
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");
        
        // 设置真实的User-Agent(直接复制你自己浏览器的UA更准确)
        String realUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36";
        options.addArguments("--user-agent=" + realUserAgent);
        
        // 基础配置保留,延长超时时间更贴合真实访问
        options.setAcceptInsecureCerts(true);
        options.setEnableDownloads(true);
        options.setPageLoadStrategy(org.openqa.selenium.PageLoadStrategy.NORMAL);
        options.setPageLoadTimeout(Duration.ofSeconds(30));
        options.setScriptTimeout(Duration.ofSeconds(30));

        // 2. 改用Chrome DevTools设置请求头,比Proxy更隐蔽
        WebDriver driver = new ChromeDriver(options);
        DevTools devTools = ((ChromeDriver) driver).getDevTools();
        devTools.createSession();
        
        // 启用Network面板,注入自定义请求头
        devTools.send(Network.enable(
                java.util.Optional.empty(),
                java.util.Optional.empty(),
                java.util.Optional.empty()
        ));
        Map<String, String> customHeaders = new HashMap<>();
        customHeaders.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        customHeaders.put("Accept-Encoding", "gzip, deflate, br, zstd");
        customHeaders.put("Accept-Language", "en-US,en;q=0.9");
        customHeaders.put("Cache-Control", "max-age=0");
        customHeaders.put("Priority", "u=0, i");
        customHeaders.put("Connection", "keep-alive");
        devTools.send(Network.setExtraHTTPHeaders(new Network.SetExtraHTTPHeadersRequest(customHeaders)));

        try {
            // 3. 访问目标站点,加入真实用户的行为模拟
            driver.get("https://solscan.io/");
            
            // 模拟真实用户等待页面加载的节奏
            Thread.sleep(3000);
            
            // 可选:添加简单交互,比如滚动页面,进一步降低机器人嫌疑
            // ((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight / 2)");
            // Thread.sleep(2000);
            
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            // 不要急着关闭浏览器,留时间验证是否成功绕过
            // driver.quit();
        }
    }
}

额外的关键避坑技巧:

  • 版本严格匹配:必须保证ChromeDriver的版本和你本地安装的Chrome浏览器版本完全一致,版本不匹配是触发Cloudflare检测的高频原因
  • 放弃Proxy工具:像BrowserMobProxy这类代理会给请求添加额外标识(比如Proxy-Connection头),反而容易被盯上,用DevTools设置请求头更隐蔽
  • 模拟真实行为:Cloudflare的检测不止看请求头,还会分析用户行为——页面加载后等待几秒、滚动页面、甚至点击某个按钮,这些都能大幅降低被判定为机器人的概率
  • 保持依赖更新:确保Selenium、ChromeDriver都是最新版本,旧版本的自动化特征更容易被Cloudflare识别

最后提醒:

Cloudflare的检测规则是动态更新的,没有100%万能的绕过方案,但把这些细节都做到位,大部分普通级别的Cloudflare检测都能顺利通过。要是还遇到问题,可以找找Java版的undetected-chromedriver(如果能找到可靠的依赖),它会帮你自动屏蔽更多自动化痕迹。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 10:25:55