跳到正文
扩展 · MV2 · MV3 · 无头

Chrome 扩展,连 Manifest V2 也支持

传入一组解压后的扩展文件夹,Clearcote 会在启动时加载它们。Manifest V3 可用,Manifest V2 也可用——原版 Chrome 已经彻底关闭了 MV2,而在这里,MV2 内容拦截器和较老的内部工具依然能继续运行。无头模式同样支持。

所有套餐均可用,支持 Windows 和 Linux。

一个文件夹列表

from clearcote import launch_persistent_context

ctx = launch_persistent_context(
    "./profile",
    extensions=["./ext/ublock", "./ext/my-helper"],   # unpacked directories, MV2 or MV3
    headless=True,                                     # works headed too
)
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.goto("https://example.com")

亮点

Manifest V2 照常运行

上游隐私补丁集恢复了 MV2 支持,所以在 Chrome 中已经失效的纯 MV2 拦截器和旧工具,在这里依然能用。

无头、有头皆可

扩展在无头和有头模式下都能加载,不必为了跑一个扩展专门配一个虚拟显示器。

参数搭配,已替你处理

在自动化模式下,单独使用 --load-extension 会被忽略。SDK 会把它和 --disable-extensions-except 一起设置,扩展才会真正出现。

用文件夹,不用 .crx 文件

指向包含 manifest.json 的文件夹即可。.crx 解压后就是这样一个文件夹。

Windows 与 Linux

两个平台用同一个选项,有头无头都一样。

你的代码,你的暴露面

Clearcote 不会隐藏扩展。尽量选用没有 web_accessible_resources 的扩展,因为页面可以探测这些资源。

扩展如何加载

扩展需要一个配置文件来安放。launch() 使用一次性配置文件运行,所以能加载扩展;launch_persistent_context / launchPersistentContext 和 serve()(.NET:Extensions)也可以。唯一不行的是隐身模式启动(ephemeral_profile=False、异步 API 的 launch()、.NET 的 LaunchAsync)。托管浏览器不加载扩展。

Clearcote 无法从 Chrome Web Store 安装或更新扩展:上游隐私补丁移除了这项集成,所以用这种方式加载的扩展永远不会自动更新。请把解压后的扩展目录随你的自动化程序一起分发,Playwright 和 Puppeteer 用的也是这种模式。

扩展是可被观测的。改写 DOM、注入样式或拦截请求的内容脚本,会改变页面测量到的结果;而声明为 web-accessible 的资源,任何页面都能获取。如果你只需要拦截请求,在自动化层用 CDP 的 Network.setBlockedURLs 即可按 URL 模式拦截,没有任何扩展暴露面,还能保留缓存(Playwright 的 route() 也行,但会关闭缓存)。

典型用途

内容拦截

运行 Chrome 已不再加载的拦截器 MV2 版本。

测试你自己的扩展

在 CI 中以无头模式对扩展做端到端测试。

内部工具

在自动化会话中使用公司内部扩展,比如登录助手、标注或 QA 工具。

Clearcote 专为隐私保护、测试、研究和合法自动化而打造。你须对自己的使用方式负责,并遵守所访问网站的条款。

差异

原版 Chromium 与 Clearcote Pro 之间相差 38,921 行。

这就是 Pro 版构建与 Google 发布的 Chromium 之间的距离。网站能读取的每个值都在 Chromium 计算它的地方设定,因此页面、它的 Worker 和 iframe 描述的都是同一台设备。

  • Canvas
  • WebGL
  • WebGPU
  • 音频
  • 字体
  • 屏幕与窗口
  • WebRTC
  • TLS
  • Client Hints
  • 输入时序
  • 语音与编解码器
在 GitHub 上阅读开源版构建的补丁

Pro 版构建,统计自其 r57 补丁栈(Chromium 156.0.8078.47)。免费的开源版构建是一套更小、公开的补丁。

Chromium 156.0.8078.47 → Clearcote Pro r57

345 files changed, 35915 insertions(+), 3006 deletions(-)

240 个补丁

按模块划分的改动文件

  • 渲染引擎(Blink)118
  • 浏览器(chrome/)52
  • Content 层42
  • 组件39
  • 网络栈22
  • 界面与窗口14
  • TLS(BoringSSL)11
  • V8 与 URL17
  • 其他30

哪些套餐包含此功能

所有套餐均可用,支持 Windows 和 Linux,有头、无头模式皆可。

对比套餐

常见问题

Playwright 能在无头模式下加载 Chrome 扩展吗?

用 Clearcote 就可以。把解压后的扩展文件夹作为 extensions 传给 launch() 或持久化上下文,它们在无头和有头模式下都能加载,无需额外参数。

Manifest V2 还能用吗?

可以。原版 Chrome 已经彻底停用了 MV2,但 Clearcote 所基于的上游隐私补丁集把它恢复了,所以 MV2 和 MV3 扩展都能运行。

能从 Chrome Web Store 安装扩展吗?

不能。Web Store 集成已随 Google 的其他服务一起移除。请下载或自行构建扩展,如果是 .crx 就先解压,再传入文件夹。

为什么我的扩展没有出现?

通常是路径问题:它必须指向包含 manifest.json 的那个文件夹,而不是它的上级目录,也不是 .crx 文件。如果某个内容脚本始终不执行,检查它的 matches 模式是否覆盖了该 URL:http://localhost/* 匹配不到 http://127.0.0.1:8080/。

网站能看出装了扩展吗?

有时可以。页面能察觉内容脚本对 DOM 做的修改,也可以尝试获取扩展声明的 web-accessible 资源。任何装了扩展的浏览器都是如此,Clearcote 不会隐藏这一点。

在文档中深入了解

相关功能

试用 Clearcote

可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致,并提供开源构建作为起点。

一个浏览器免费:GitHub、银行卡验证或公司 Google 账号。绝不扣款。