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

无头Puppeteer会话加载扩展失败:Ubuntu/Linux下正确扩展链接查询

关于无头模式Ubuntu下Puppeteer访问扩展页面的问题

问题背景

我尝试用Puppeteer在Chrome中加载「I don't care about cookies」扩展,扩展的本地文件存放在项目目录:

./chrome-extensions/fihnjjcciajhdojfnbdddfaoknhalnja/3.4.9_0

为避免冲突,我仅加载该扩展并禁用其他所有扩展。目前需要在Chrome会话中打开并导航到该扩展页面,MacOS上可通过chrome://extensions/?id=fihnjjcciajhdojfnbdddfaoknhalnja访问,但在远程Ubuntu/Linux机器上以无头模式运行Puppeteer时,无论修改何种扩展URL都会访问失败。

当前代码

const puppeteer = require("puppeteer");
const idontcarecookies = './chrome-extensions/fihnjjcciajhdojfnbdddfaoknhalnja/3.4.9_0'
puppeteer.launch({ headless: true, devtools: true,
args: [
    '--disable-extensions-except=${idontcarecookies}',
    '--load-extension=${idontcarecookies}'
        ] }).then(async (browser) => {
try {
    console.log('==>Navigate to Extension');
    const page = await browser.newPage();
    // Navigate to extension page
    //    await page.goto('chrome-extension://fihnjjcciajhdojfnbdddfaoknhalnja/panel.html');
    await page.goto('chrome://extensions/?id=fihnjjcciajhdojfnbdddfaoknhalnja');
    // Take a screenshot of the extension page
    console.log('==>Take Screenshot');
    await page.screenshot({path: 'chrome-extension.png'});
    await browser.close();
    console.log(`All done`);
} catch (error) {
    console.error(error);
    process.exit();
} finally {
    browser.close();
}
});

报错信息

==>Navigate to Extension
Error: net::ERR_INVALID_URL at chrome://extensions/?id=fihnjjcciajhdojfnbdddfaoknhalnja
at navigate (/pathproject/node_modules/puppeteer/lib/FrameManager.js:120:37)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async FrameManager.navigateFrame (/pathproject/node_modules/puppeteer/lib/FrameManager.js:94:17)
at async Frame.goto (/pathproject/node_modules/puppeteer/lib/FrameManager.js:406:12)
at async Page.goto (/pathproject/node_modules/puppeteer/lib/Page.js:672:12)
at async /pathproject/test-extension.js:28:5
-- ASYNC --
at Frame.<anonymous> (/pathproject/node_modules/puppeteer/lib/helper.js:111:15)
at Page.goto (/pathproject/node_modules/puppeteer/lib/Page.js:672:49)
at Page.<anonymous> (/pathproject/node_modules/puppeteer/lib/helper.js:112:23)
at /pathproject/test-extension.js:28:16
at processTicksAndRejections (internal/process/task_queues.js:97:5)

解决方法

问题根源有两个,针对性修正即可:

  1. 模板字符串解析错误:代码中用单引号包裹扩展路径参数,单引号不会解析模板变量${idontcarecookies},导致扩展未正确加载,必须改用反引号包裹参数。
  2. 无头模式访问限制:Chrome无头模式默认禁止访问chrome://开头的内部管理页,应直接访问扩展自身页面,使用chrome-extension://<扩展ID>/<页面路径>格式。

修正后的代码

const puppeteer = require("puppeteer");
const idontcarecookies = './chrome-extensions/fihnjjcciajhdojfnbdddfaoknhalnja/3.4.9_0';

puppeteer.launch({ 
    headless: true, 
    devtools: true,
    args: [
        // 改用反引号解析模板变量
        `--disable-extensions-except=${idontcarecookies}`,
        `--load-extension=${idontcarecookies}`
    ] 
}).then(async (browser) => {
    try {
        console.log('==>Navigate to Extension');
        const page = await browser.newPage();
        // 访问扩展的实际页面(需和manifest.json中定义的路径一致)
        await page.goto('chrome-extension://fihnjjcciajhdojfnbdddfaoknhalnja/panel.html');
        console.log('==>Take Screenshot');
        await page.screenshot({path: 'chrome-extension.png'});
        await browser.close();
        console.log(`All done`);
    } catch (error) {
        console.error(error);
        process.exit();
    } finally {
        if (browser) await browser.close();
    }
});

额外注意事项

  • 确认扩展目录下的manifest.json中存在你要访问的页面(比如panel.html),路径错误会导致404。
  • 若仍有问题,可尝试将无头模式改为headless: "new"(Puppeteer v19+支持的新无头模式,兼容性更好)。
  • Linux下扩展ID和MacOS一致,无需修改ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:40:17