给 Agent 接入 Playwright MCP + CloakBrowser
不少 Agent 内置的 browser_* 工具,拿来读个网页还行,但需要交互登录、填表提交的时候就不好用了。Playwright MCP 是微软官方维护的 MCP server,工具覆盖面广。
问题是:裸 Playwright 碰上现代网站的 anti-bot 检测基本一碰就碎。navigator.webdriver = true、空插件列表、TLS 指纹不对——这些都是对着自动化浏览器来的。这就是为什么要换上 CloakBrowser。
CloakBrowser 是什么
CloakBrowser 是 C++ 层面对 Chromium 做的反检测 patch。不是 JS 层的 stealth 补丁(那种不改 TLS 指纹),而是 49+ 个源码级 patch。官方宣称 30/30 bot 检测测试通过,reCAPTCHA v3 评分 0.9(人类水平)。
安装 CloakBrowser
uv tool install cloakbrowser
# 如果需要设置环境变量
# uv tool update-shell
# 浏览器二进制文件被安装在 /home/<username>/.cloakbrowser
cloakbrowser install
# 检查安装的浏览器信息
cloakbrowser info配置 MCP server
两个配置文件。第一个是 Playwright MCP 自己的,告诉它用 CloakBrowser 而不是内置 Chromium:
/home/<username>/.agents/mcp/playwright-mcp/config.json:
第二个是 Agent 的 MCP 配置,这里以 hermes agent 为例。其他 Agent 工具参考对应配置指南。
/home/<username>/.hermes/config.yaml 中的 mcp_servers 段:
mcp_servers:
playwright-cloak:
enabled: true
command: npx
args:
- "@playwright/mcp@latest"
- "--config"
- "/home/<username>/.agents/mcp/playwright-mcp/config.json"
- "--headless"可以在 args 加上 --caps=storage 开启 cookie 持久化相关工具。
Cookie 持久化
Playwright MCP 有两种持久化机制:
-
Persistent Profile Mode(默认)— 浏览器状态自动存到
/home/<username>/.cache/ms-playwright/mcp-chrome-profile/。但用 CloakBrowser 的executablePath时这个目录不会被创建,所以这条路走不通。 -
--storage-state显式加载/保存 — 用--isolated禁用 profile 模式,配合--storage-state=<path>在启动时加载之前保存的状态文件。
实际可行的配置:
mcp_servers:
playwright-cloak:
enabled: true
command: npx
args:
- "@playwright/mcp@latest"
- "--caps=storage"
- "--config"
- "/home/<username>/.hermes/playwright-mcp/config.json"
- "--headless"
- "--isolated"
- "--storage-state=/home/<username>/.hermes/playwright-mcp/storage-state.json"工作流程:
- 首次使用:手动登录目标网站
- 调用
browser_storage_state保存到storage-state.json - 下次启动:MCP server 自动从
storage-state.json恢复 cookies 和 localStorage
--caps=storage 额外提供的工具:
| 工具 | 作用 |
|---|---|
browser_storage_state |
保存 cookies + localStorage 到文件 |
browser_set_storage_state |
从文件恢复 |
browser_cookie_list/get/set/delete/clear |
精细操作单个 cookie |