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

无头模式下运行自动化脚本能否添加Chrome扩展?报错咨询

问题描述

尝试在Selenium自动化脚本中通过ModHeaderExtension扩展添加请求头,但在无头(headless)模式下运行时出现报错,无法启动会话。请问能否在无头模式下正常运行该自动化脚本?

代码示例

ChromeOptions配置代码

private static ChromeOptions getChromeOptions() {
        final ChromeOptions options = new ChromeOptions();
        
        final DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability(ChromeOptions.CAPABILITY, options);
        
        options.addExtensions(new File("./src/main/java/com/extenstions/ModHeaderExtension.crx"));
        options.addArguments("--remote-allow-origins=*");
        options.addArguments("--headless");
        options.addArguments("--window-size=1920,1080");
        options.addArguments("--start-maximized");
        return options;
    }

浏览器初始化代码

public static WebDriver startBrowserInitialization() {
WebDriverManager.chromedriver().setup();
if ("Y".equalsIgnoreCase(environment.checkHeadless())){
driver.set(new ChromeDriver(getChromeOptions()))}

报错信息

org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: unknown error: failed to wait for extension background page to load: chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html
from unknown error: page could not be found: chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html 
Host info: host: 'PC-INDU', ip: '192.16.20.133'
Build info: version: '4.8.3', revision: 'e5e76298c3'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.5'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {browserName: chrome, goog:chromeOptions: {args: [--remote-allow-origins=*, --headless, --window-size=1920,1080, --start-maximized], extensions: [Q3IyNAMAAAAYBAAAEqwECqYCMII...]}}], desiredCapabilities=Capabilities {browserName: chrome, goog:chromeOptions: {args: [--remote-allow-origins=*, --headless, --window-size=1920,1080, --start-maximized], extensions: [Q3IyNAMAAAAYBAAAEqwECqYCMII...]}}}] 
解决方案

可以在无头模式下正常运行,但需要调整配置或更换请求头的设置方式,具体方法如下:

1. 使用新版无头模式参数

Chrome 112及以上版本支持--headless=new参数,该模式更接近正常Chrome浏览器的行为,对扩展兼容性更好。替换原有代码中的--headless:

options.addArguments("--headless=new");

2. 直接通过Chrome参数或DevTools设置请求头(推荐)

无需依赖ModHeader扩展,避免扩展加载问题:

  • 方式一:通过Chrome启动参数添加
options.addArguments("--header=X-Custom-Header:YourValue");
// 多个请求头可添加多个--header参数
options.addArguments("--header=Another-Header:AnotherValue");
  • 方式二:通过Chrome DevTools协议设置
    浏览器初始化完成后,执行CDP命令添加请求头:
ChromeDriver driver = new ChromeDriver(getChromeOptions());
// 设置请求头
Map<String, Object> headers = new HashMap<>();
headers.put("X-Custom-Header", "YourValue");
driver.executeCdpCommand("Network.setExtraHTTPHeaders", Collections.singletonMap("headers", headers));

3. 调整扩展加载方式(若必须使用ModHeader)

  • 尝试加载已解压的扩展文件夹而非crx文件,避免签名或压缩问题:
options.addExtensions(new File("./src/main/java/com/extenstions/ModHeaderUnpacked"));
  • 确认ModHeader扩展版本与当前Chrome浏览器版本兼容,更新扩展至最新版。

内容的提问来源于stack exchange,提问作者Indu Devendran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:42:35