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

能否在Headless Chromium中通过Puppeteer运行Tampermonkey脚本?若可行该如何操作?

在Headless Chromium中通过Puppeteer运行Tampermonkey脚本

完全可以实现。Puppeteer支持加载Chrome扩展,Tampermonkey作为用户脚本管理扩展,能在Headless Chromium环境中正常运行,你可以通过Puppeteer控制脚本的注入与执行流程。

具体操作步骤

1. 获取Tampermonkey扩展文件

先拿到Tampermonkey的CRX格式扩展包,可从Chrome应用商店下载对应版本,或从官方渠道获取可靠的扩展文件。

2. 配置Puppeteer启动参数

启动Puppeteer时必须指定加载Tampermonkey扩展,并启用新版Headless模式(旧版Headless不支持扩展加载),示例代码如下:

const puppeteer = require('puppeteer');
const path = require('path');

(async () => {
  // 替换为你的Tampermonkey CRX文件绝对路径
  const tampermonkeyPath = path.resolve('./tampermonkey.crx');

  const browser = await puppeteer.launch({
    headless: 'new', // 必须使用新版Headless模式
    args: [
      `--disable-extensions-except=${tampermonkeyPath}`,
      `--load-extension=${tampermonkeyPath}`,
      '--no-sandbox', // 解决部分环境权限问题,可选
      '--disable-setuid-sandbox'
    ]
  });

  const page = await browser.newPage();

  // 3. 注入并运行自定义Tampermonkey脚本
  const userScript = `
    // ==UserScript==
    // @name         测试脚本
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  在Puppeteer环境运行的Tampermonkey脚本
    // @author       你
    // @match        https://example.com/*
    // @grant        none
    // ==/UserScript==

    (function() {
        'use strict';
        console.log('Tampermonkey脚本已执行!');
        // 自定义脚本逻辑,比如修改页面背景色
        document.body.style.backgroundColor = '#e6f7ff';
    })();
  `;

  // 将脚本注入页面
  await page.evaluate((script) => {
    // 优先用Tampermonkey官方API添加脚本
    if (typeof GM_addScript === 'function') {
      GM_addScript(script);
    } else {
      // 若Tampermonkey未完全加载,直接注入脚本到页面
      const scriptEl = document.createElement('script');
      scriptEl.textContent = script;
      document.head.appendChild(scriptEl);
    }
  }, userScript);

  // 访问目标页面触发脚本执行
  await page.goto('https://example.com');
  await page.waitForTimeout(3000); // 等待脚本执行完成

  await browser.close();
})();

3. 关键注意事项

  • 新版Headless模式:必须设置headless: 'new',旧版headless: true不支持扩展加载。
  • CRX路径正确性:确保CRX文件路径为绝对路径,避免加载失败。
  • Tampermonkey API权限:如果脚本需要使用GM_getValue、GM_xmlhttpRequest等API,需在脚本的@grant字段中声明对应权限,否则API会失效。
  • 反爬适配:部分网站会检测Headless环境,可通过设置userAgent、启用JavaScript等参数规避检测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:26:03