在Puppeteer中加载uBlock Origin失败的问题求助
Puppeteer加载uBlock Origin扩展失败问题排查与解决
问题描述
希望在Puppeteer中使用uBlock Origin扩展,但启动Chromium/Chrome后,浏览器无法识别manifest.json路径,手动加载也无效。已执行步骤:
- git克隆uBlock项目
- 使用以下代码加载扩展:
const extensionPath = path.resolve("./uBlock/platform/chromium");//path leads to a manifest.json const browser = await puppeteer.launch({ headless: false, args: [ '--start-maximized', `--load-extension=${extensionPath}`, // Load uBlock Origin extension ] });
- 访问已知广告网站仍能看到广告内容
解决方案
必须先构建uBlock扩展:直接克隆的源码是未编译的开发文件,
platform/chromium目录仅为模板,不包含完整可加载资源。进入uBlock项目根目录,执行以下命令完成构建:npm install npm run build:chromium构建完成后,成品扩展会生成在
dist/build/uBlock0.chromium目录下,后续加载需使用此路径。修正扩展路径:将代码中的
extensionPath改为构建后的成品目录,示例:const extensionPath = path.resolve("./uBlock/dist/build/uBlock0.chromium");手动加载验证方法:手动加载时,进入浏览器“扩展管理”->“加载已解压的扩展程序”,选中构建后的
uBlock0.chromium目录(而非源码里的platform/chromium),确认扩展是否能正常启用。优化Puppeteer启动参数:添加
--disable-extensions-except参数,确保仅加载指定扩展,避免冲突:const browser = await puppeteer.launch({ headless: false, args: [ '--start-maximized', `--disable-extensions-except=${extensionPath}`, `--load-extension=${extensionPath}`, ] });注意headless模式限制:若后续需使用headless模式,必须设置
headless: "new",旧版headless模式不支持加载扩展。
内容的提问来源于stack exchange,提问作者I try so hard but I cry harder
相关产品推荐
相关产品推荐

