ChromeDriver 4.12+ 版本因安全策略升级,默认拒绝未经许可的远程连接,导致 driver.get() 无响应或页面空白;需显式添加 --remote-allow-origins=* 启动参数方可正常访问目标 URL。
chromedriver 4.12+ 版本因安全策略升级,默认拒绝未经许可的远程连接,导致 `driver.get()` 无响应或页面空白;需显式添加 `--remote-allow-origins=*` 启动参数方可正常访问目标 url。
在 Selenium 4.12 及更高版本中,ChromeDriver 引入了更严格的跨源限制(基于 Chromium 的 --remote-allow-origins 安全机制),当未显式配置该参数时,WebDriver 与浏览器之间的 DevTools 协议通信会被拦截,表现为:Chrome 浏览器成功启动但停留在空白页(如 data:text/html,chromewebdata)、driver.get(url) 阻塞不返回、控制台无报错但页面无加载迹象——这正是你遇到的问题。
✅ 正确做法是:在初始化 ChromeDriver 前,通过 ChromeOptions 显式启用远程调试权限:
String URL = "https://www.selenium.dev/documentation/webdriver/waits/";
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*"); // 关键修复参数
// 可选:提升稳定性与可读性
options.addArguments("--start-maximized");
options.addArguments("--disable-gpu");
options.addArguments("--no-sandbox");
WebDriver driver = new ChromeDriver(options);
driver.get(URL); // 现在可正常导航并加载页面
⚠️ 注意事项:
- --remote-allow-origins=* 仅用于开发/测试环境,生产环境请指定可信域名(如 --remote-allow-origins=https://example.com),避免安全风险;
- 若使用较新版本 Chrome(v111+)且仍报错,可补充 options.setCapability("acceptInsecureCerts", true); 应对自签名证书场景;
- 确保 ChromeDriver 与本地 Chrome 浏览器主版本号严格匹配(如 Chrome 126 → 需 ChromeDriver 126.x);
- FirefoxDriver 未受此策略影响,因此能正常运行,但这不代表 ChromeDriver 有缺陷,而是 Chromium 架构的安全演进。
? 总结:这不是代码逻辑错误,而是 Selenium 与新版 Chromium 协作的必要适配项。添加 --remote-allow-origins=* 是当前最简洁、通用的解决方案,建议将其作为 Chrome 自动化脚本的标配初始化步骤。










