李恒道 发表于 2024-6-5 15:57:04

关于在puppeteer无头模式下加载插件及net::ERR_BLOCKED_BY_CLIENT错误处理

在过去的版本中需要使用xvfb
分为两种
在120版本左右只需要使用headless:new即可
```js
    const browser = await puppeteer.launch({
      args: [
            `--headless=new`,
            `--disable-extensions-except=${pathToExtension}`,
            `--load-extension=${pathToExtension}`,
            '--no-sandbox',
            '--disable-setuid-sandbox'
      ],
      ignoreHTTPSErrors:true
    });
```
在100左右的版本开始只需要加入headless:chrome即可
```js
    const browser = await puppeteer.launch({
      args: [
            `--headless=new`,
            `--disable-extensions-except=${pathToExtension}`,
            `--load-extension=${pathToExtension}`,
            '--no-sandbox',
            '--disable-setuid-sandbox'
      ],
      ignoreHTTPSErrors:true
    });
```

## 关于net::ERR_BLOCKED_BY_CLIENT处理
很可能是由于系统版本不同导致的插件加载id变化了
可以使用下面代码截个图看看有没有加载进去
```js
    page.goto("chrome://extensions/")
    setTimeout(async ()=>{
      await page.screenshot({path: 'demo888.png', fullPage: true});
    },5000)
```
目前获取id我没有找到特别好的办法,只能在插件的background.js中再打注入通过chrome插件的api来实现自动唤醒了
```js
chrome.tabs.create({ url: chrome.runtime.getURL('index.html') });
```
页: [1]
查看完整版本: 关于在puppeteer无头模式下加载插件及net::ERR_BLOCKED_BY_CLIENT错误处理