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 专为隐私保护、测试、研究和合法自动化而打造。你须对自己的使用方式负责,并遵守所访问网站的条款。
哪些套餐包含此功能
所有套餐均可用,支持 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 不会隐藏这一点。
在文档中深入了解
相关功能
可直接替换的 Chromium,适用于 Playwright 和 Puppeteer:在 Python、Node 或 .NET 中只需改一行 import,浏览器会自动下载并完成 SHA-256 校验。
主动开启后,Clearcote 会像原版 Chrome 一样获取 Google 的 Widevine CDM,完成校验并启用,让 DRM 视频得以播放。
通过官方 Docker 镜像、serve() 或 CLI,把 Clearcote 作为常驻 CDP 端点运行,任何框架都能直接连接,无需改代码。
Canvas、WebGL、WebGPU、音频、字体、屏幕和硬件都由 C++ 引擎从一个种子派生,区域设置和时区也随之匹配,让每个检测面彼此一致。
相关阅读
试用 Clearcote
可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致,并提供开源构建作为起点。
通过 GitHub 可免费使用一个浏览器。无需信用卡。