让 Claude Code / Codex 用上你已登录的 Chrome

让 Claude Code 去"看一下后台还有哪些工单没处理",它多半第一步就卡住:它开的是一个新的自动化浏览器,哪个网站都没登录。你的 Cookie、SSO 会话、过了二次验证的账号,都在你现在开着的那个 Chrome 里。

chrome-use 解决的就是这个问题。它是一个开源的 CLI 兼 MCP 服务器(Apache-2.0),让 Claude Code、Codex、Cursor 或者你自己的脚本直接操作你正在用的 Chrome。连接走 Chrome 商店扩展加原生消息(native messaging),不开远程调试端口,也不会弹"是否允许远程调试"。

文档站:chrome-use.leeguoo.com

agent 的浏览器为什么没登录

大多数浏览器自动化会新建一个浏览器上下文。新上下文没有 Cookie,网站把它当陌生人:跳登录页、出验证码,有的还会发一封"新设备登录"邮件。

Playwright 和 Puppeteer 本身支持持久化 profile,也能连已有浏览器,问题出在连接方式上。它们通过 DevTools 协议跟 Chrome 通信,而 Chrome 136 起,默认 profile 不再接受 --remote-debugging-port。换一个独立 profile 能跑,但那个 profile 里又得重新登录一遍。

Chrome 144 在 chrome://inspect 加了远程调试开关,Chrome DevTools MCP 的 --autoConnect 用的就是它。开关一打开,这个 profile 的所有窗口都对工具可见,连接时还要在弹窗里点允许。

chrome-use 走的是另一条路。

连接方式

perl 复制代码
agent(Claude Code / Codex / 脚本)
   │  shell: chrome-use open, snapshot, click ...
   ▼
chrome-use CLI ──原生消息──▶ chrome-use 扩展 ──chrome.debugger──▶ 你的标签页

CLI 和扩展之间用的是 Chrome 原生消息,一条本机进程间通道,没有网络端口、没有 token、不经过远程服务器。扩展用 chrome.debugger 操作 agent 指定的标签页,再把结果交回 CLI,整个过程都在本机。

用下来能感觉到的几点:

  • 登录态是你自己的。你在哪个 profile 登录了什么,agent 看到的就是什么。
  • 只装一次。之后每次调用都不再弹确认。
  • 不碰你的标签页。每个 --session 有自己的彩色标签组,几个 agent 共用一个 Chrome 也互不干扰,你自己开的标签不会被动。
  • 随时能接手。agent 在你看得见的窗口里操作,碰到二次验证或者它过不去的验证码,你在同一个窗口里把这一步做完,它接着往下跑。

有一点要提前说:扩展用的是 chrome.debugger,agent 的标签页被挂上时,Chrome 会在顶部显示正在调试此浏览器的提示条。chrome-use extension connect --silent 会带 --silent-debugger-extension-api 重启一次 Chrome 把它去掉,标签页和登录态会恢复。

三步装好

1. 装 CLI

macOS / Linux:

bash 复制代码
curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh

Windows(PowerShell):

powershell 复制代码
irm https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.ps1 | iex

脚本从 GitHub Release 下载对应平台的预编译二进制,不走 npm,不需要 token。Windows 下装到 %LOCALAPPDATA%\Programs\chrome-use,不要管理员权限,安装前会校验 sha256。

2. 装扩展,注册本地桥

先从 Chrome 商店添加 chrome-use 扩展(扩展 ID knfcmbamhjmaonkfnjhldjedeobeafmk),再注册一次原生消息宿主:

bash 复制代码
chrome-use extension install   # 一次性:注册本地桥
chrome-use doctor              # 自检:环境、Chrome、daemon、配置

macOS 上 extension install 可能会提供一个配置描述文件,用来给所有 profile 强制安装扩展。装了它,Chrome 会进入"由你的组织管理"状态,"使用安全 DNS"设置会被锁住。不想要的话用 chrome-use extension install --no-profile,然后在每个 profile 里从商店手动加扩展。Windows、Nix、指定版本这些装法见安装指南。

doctor 通过只说明环境没问题,看不出你在哪个网站登录的是哪个账号,这个要到页面上确认。

3. 给 agent 装技能

安装脚本已经往 Claude Code、Codex、Cursor 和 ~/.agents/skills 里放了一个入口技能。想用插件管理的话:

Claude Code 插件市场(全局生效,自动更新):

bash 复制代码
/plugin marketplace add leeguooooo/plugins
/plugin install chrome-use@leeguooooo-plugins

支持 skills.sh 的其他工具(需要 Node):

bash 复制代码
npx skills add leeguooooo/chrome-use -g

这个技能会让 agent 去读 chrome-use skills get core。内容由二进制自己输出,跟你装的版本永远一致。

用 Codex 的要多加一行。Codex 自带浏览器插件,浏览器任务默认交给它。文档里记录过,在装了很多技能的机器上,Codex 会把技能描述截到几乎没有,技能抢不到路由,在提示词里点名 chrome-use 也没用。有效的做法是在项目的 AGENTS.md 里写:

rust 复制代码
Use the `chrome-use` CLI from the shell for every browser task; start with `chrome-use skills get core`.
Do not use the built-in Chrome plugin for browser work here.

只支持 MCP、不能跑 shell 的客户端(比如 Claude Desktop),按 stdio 服务器配置:

json 复制代码
{
  "mcpServers": {
    "chrome-use": { "command": "chrome-use", "args": ["mcp"] }
  }
}

跑一个只读任务

先别让它碰重要的东西。把下面这段原样交给 Claude Code 或 Codex:

perl 复制代码
用 chrome-use 打开 https://github.com/leeguooooo/chrome-use/issues,
搜索 is:issue daemon。先读 chrome-use skills get core。
使用 first-task 专用 session;用 snapshot -i 获取当前 refs,
填入 Search issues 输入框,再用 --observe 提交搜索。
检查结果 URL 中的查询条件,读取列表,返回三个匹配的标题和链接。
不要新建或修改 issue。遇到登录、权限或人工验证,让我处理。

你的 Chrome 里会多出一个标签组,能看到 agent 在 GitHub 搜索框里打字。判断成没成功看两处:结果 URL 里有 q=is%3Aissue+daemon,agent 返回的标题和链接确实是从页面上读到的。命令返回 success 不算数。

想看 agent 底下跑了哪些命令,可以手动走一遍:

bash 复制代码
chrome-use --session demo open https://github.com/leeguooooo/chrome-use
chrome-use --session demo snapshot -i     # 可交互元素,带 @eN 引用
chrome-use --session demo get title

snapshot -i 从无障碍树里取出可交互元素,每个配一个 @e12 这样的短引用。agent 对引用执行 click @e12、fill @e7 "文本",再 snapshot 一次确认页面变了没有。

几个 agent 同时用一个 Chrome 也是这套机制。每个 --session 对应一个彩色标签组,命令只作用在本组的标签上。不写 --session 时,chrome-use 会从支持的运行环境 ID 推出一个稳定的会话名,比如 Codex 的 CODEX_THREAD_ID,所以不同的 Codex 线程默认各有自己的 session,不会共用一个标签组。显式传的 --session 或环境变量 AGENT_BROWSER_SESSION 优先级最高。命名、session list 和交接的细节见会话文档。

这一步跑通,再去试需要登录的页面。建议挑一个你自己的后台,先只读,确认页面上显示的账号对了再往下做。

跟其他方案比

选型页列了十几种方案。目标是"让 agent 用我已登录的 Chrome"的话,最接近的是下面三个。各行内容来自对方官方文档,核对日期 2026-10-27:

怎么连浏览器 用谁的登录 哪些 agent 能用 需要装 / 授权
chrome-use 商店扩展 + 原生消息,不开远程调试 你正在用的 Chrome,可选 profile 任意 agent:CLI / MCP / HTTP 一行安装 + 商店扩展
Chrome DevTools MCP(--autoConnect) Chrome 144+ 远程调试开关 默认 profile 的所有窗口 任意 MCP 客户端,也有 CLI chrome://inspect 打开远程调试 + 弹窗允许;默认上报使用统计
Playwright 扩展模式(Playwright MCP --extension、playwright-cli) Playwright Extension(商店) 你挑选的现有标签 任意 MCP 客户端,或 playwright-cli 每次连接需批准(可配 token 免批)
Claude in Chrome Anthropic 商店扩展 你的 Chrome / Edge 只有 Claude:侧栏、Claude Code --chrome、Cowork Claude Pro / Max / Team / Enterprise

怎么选:做前端调试和性能分析,用 Chrome DevTools MCP,它就是为这个做的。已经在用 Playwright MCP,扩展模式改动最小。只用 Claude 又有付费订阅,可以用官方的 Claude in Chrome,按它的文档,碰到登录和验证码会暂停交给你。想让 Claude Code、Codex、Cursor 或脚本都能在你登录好的 Chrome 里干活,不开远程调试,还可能几个 agent 同时跑,这是 chrome-use 的场景。

反检测:数字是自测的

驱动真实 Chrome,指纹本来就是真的,这点所有同类工具都一样。区别在自动化本身留下的痕迹,chrome-use 在这块做了这些事:

  • 连真实 Chrome 时注入的 JS 补丁数为零。
  • Runtime.enable 默认关闭。Runtime 域处于开启状态本身就是可检测的 CDP 信号,只有你要抓控制台或报错时才打开。
  • 不往 DOM 写标记。定位元素用节点句柄,不加临时属性,页面的 MutationObserver 看不到。
  • --humanize 让鼠标走曲线、落点在元素内随机偏移、打字间隔有快有慢。遇到 Akamai、PerimeterX、DataDome 保护的页面会自动切到完整的拟人模式。
  • 验证码:普通易盾拼图用 solve-slider,可读的图标点选按截图点击,解不了再交给你。

反检测页给出的是项目自己在真实 Chrome 上测的结果:

scss 复制代码
CreepJS            0% stealth · 0% headless
bot.incolumitas    all checks OK
bot.sannysoft      all green
BrowserScan        Webdriver · User-Agent · CDP all clean
Cloudflare managed challenge (scrapingcourse.com)  passed

文档自己也写明了,这是特定环境下的测量,不承诺不被识别,也不保证账号安全。选型页还写道,2026 年的独立测试发现:有头模式下这些指纹检测页几乎分不出工具之间的差别,裸 Playwright 也能过,真正拉开差距的是行为和运行环境。验证码没有工具能保证不出。普通验证码(易盾拼图、可读的图标点选)agent 会先试着解,解不了或遇到登录、二次验证就停下来交给你。

当前状态可以自己查:

bash 复制代码
chrome-use stealth status

相关文档

源码在 github.com/leeguooooo/...。装的时候卡在哪一步,可以提 issue,附上系统、CLI 版本和脱敏后的报错,别贴 Cookie、token 和私有页面内容。

相关推荐
木子欢儿1 小时前
Debian 13 + vsftpd 搭建FTP服务
linux·服务器·前端·网络·debian
Potato_土豆1 小时前
MCP Server 接入多个 AI 客户端:配置差异与 10 个真实踩坑
人工智能·后端·ai编程
Markus实验室1 小时前
一个任务烧了54亿token,我盯着账单看了十分钟
agent·ai编程
烬羽1 小时前
给 RAG Agent 装上"仪表盘":LangSmith 全链路观测与量化评估实战
深度学习·openai·ai编程
天蒙蒙亮1 小时前
打安卓apk包+“应用商城”发布
前端·uni-app
Lank_M2 小时前
视频压到指定大小总超一截?码率控制的误差拆开看
前端
用户2054555788002 小时前
飞书运费台账同步到 MySQL:单一策略落地教程
前端
LEE2 小时前
别把 Agent 架构画成组织架构图——子代理该不该拆,用任务级 Eval 说话
前端·后端·ai编程
梦醒江南2 小时前
RAG 证据链验收:别只测答案像不像,要证明它从哪里来
前端·agent·ai编程