knowledge-vault/discussions/technology/Codex/3.Codex Browser与Chrome技能调研.md

346 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Codex Browser 与 Chrome 技能调研记录
日期2026-06-26
主题Codex 内置浏览器、外置 Chromium 浏览器扩展、登录态页面操作与自动化测试的能力边界
性质:讨论整理与后续 Skill 设计参考,不是正式安全政策或项目规范
## 1. 摘要结论
今天的实测可以归纳为一句话:
> `browser` 适合干净、后台、可重复的网页自动化;`chrome` 适合需要真实浏览器 profile、登录态、扩展环境和用户可见页面的任务。
二者不是互相替代关系,而是不同执行表面:
| 维度 | browser | chrome |
| --- | --- | --- |
| 浏览器位置 | Codex 内置浏览器 | 外置 Chromium 浏览器,通过扩展连接 |
| 用户是否能看到 | 默认后台;需要时可显式显示 | 用户能在 Edge/Chrome 等真实窗口中看到 |
| 登录态 | 默认没有用户真实 Cookie/session | 使用当前浏览器 profile 的登录态 |
| 适合任务 | 本地 Web 测试、公开页面检查、干净环境验证 | 已登录网站操作、接管当前标签、需要扩展或真实账号的流程 |
| 隐私边界 | 与用户真实浏览器隔离 | 可读页面显示内容,但不应读取原始 Cookie、localStorage、密码或 session store |
| 主要风险 | 隐式后台操作、WebAuthn 系统弹窗可能让用户困惑 | 真实账号误操作、隐私内容暴露、对站点规则的合规风险 |
## 2. 本次实测事实
### 2.1 browser 内置浏览器
本次用 Codex 内置浏览器访问 `https://x.com`,页面成功加载,得到的状态包括:
- URL`https://x.com/`
- 标题:`X. It's what's happening / X`
- 页面状态:`complete`
- 页面文本包含未登录首页的登录选项
这说明 `browser` 不限于 `localhost`。技能说明中强调 `localhost`、`127.0.0.1`、`file://`,是因为它常用于本地 Web 应用测试,而不是访问权限只允许本地页面。
需要注意:`browser` 默认在后台运行。用户不一定能看到它的窗口。如果任务目标是“让用户看见页面”或“边看边操作”,需要显式使用可见性能力把内置浏览器展示出来。
本次访问 X 时Windows 弹出了 Passkey/WebAuthn 安全密钥提示。这个提示来自系统认证层,即使浏览器本体在后台,也可能弹到用户桌面。除非用户明确要完成登录,否则这类认证提示应取消或等待用户处理。
### 2.2 chrome 外置浏览器扩展
最初 Chrome 技能环境不可用,报错为扩展后端不可用。后来用户在 Edge 中安装了对应扩展后,扩展通道可用。
随后通过 `chrome` 技能完成了几项验证:
- 连接到外置 Chromium 浏览器扩展后端。
- 打开 `https://x.com`
- 使用用户真实浏览器 profile 中的 X 登录态进入 `https://x.com/home`
- 接管 X 标签页,在右侧 `What is happening` 区域找到标题 `見てるだけでいいの`
- 点击该标题,页面进入搜索页:
- `https://x.com/search?q=見てるだけでいいの&src=promoted_trend_click&vertical=trends`
- 标题变为:`見てるだけでいいの - Search / X`
这说明虽然技能名是 `chrome`,但本次实际可用的是 Edge 上的 Chromium 扩展通道。更保守的表述应是:`chrome` 技能控制的是安装并连通 Codex 扩展的外置 Chromium 浏览器/profile而不是只能控制 Google Chrome。
### 2.3 标签页可见性边界
通过外置浏览器扩展Codex 可以列出当前连接 profile 中的顶层标签页元数据,例如:
- 标题
- URL
- 最近打开或聚焦时间
- 标签组信息
但这不等于自动读取所有页面内容。只有在接管某个标签页之后Codex 才会读取该页 DOM、可见文本、截图并执行点击、输入等操作。
它也不等于能看见整台机器:
- 看不到未安装或未启用扩展的浏览器。
- 看不到其他浏览器,例如 Firefox。
- 看不到其他未连接的 profile。
- 无痕窗口通常需要额外允许扩展后才可能被看到。
- 不应读取原始 Cookie、localStorage、密码、session store。
## 3. 能力模型
可以把浏览器自动化分成三层:
### 3.1 连接层
连接层决定 Codex 能否拿到浏览器控制面:
- `browser`:连接 Codex 内置浏览器,后端为 `iab`
- `chrome`:连接外置浏览器扩展,后端为 `extension`
连接层只说明“能不能控制浏览器”,不说明“该不该操作某个账号页面”。
### 3.2 页面层
页面层决定 Codex 能读到什么:
- 页面标题、URL、DOM、可见文本、截图。
- 页面上已渲染出来的登录态内容。
- 用户当前能正常访问的网页内容。
页面层不等于底层凭证层。已经渲染在页面上的用户名、头像、消息、列表等可以被读到;但原始 Cookie、浏览器密码、session 文件不应读取。
### 3.3 操作层
操作层决定 Codex 能做什么:
- 点击链接、按钮、标签页。
- 输入表单。
- 滚动页面。
- 截图。
- 提取可见文本。
- 读取少量 DOM 状态。
有外部副作用的动作需要额外确认,例如:
- 发帖、评论、私信。
- 点赞、关注、收藏。
- 提交表单。
- 上传文件。
- 改权限。
- 购买、支付。
- 删除数据。
- 接受敏感浏览器权限。
## 4. 场景判断
### 4.1 防爬网站与内容采集
用户提出“小红书这类防爬网站,是否可以利用 chrome 打开页面,爬取对应文章和视频”。
判断:技术上可以做一部分,但必须把“浏览器辅助整理”与“绕过反爬爬虫”区分开。
适合做:
- 打开用户账号本来就能看到的页面。
- 少量、低频、人工授权范围内的内容整理。
- 提取标题、正文、作者、时间、链接等页面可见信息。
- 生成摘要、标签、笔记、引用清单。
- 截图保存证据。
- 对用户自有内容或明确授权内容做归档。
不适合做:
- 批量绕过反爬。
- 绕过验证码、风控、登录限制。
- 绕过付费墙、年龄验证、地区限制。
- 绕过 DRM 或下载受保护视频。
- 批量搬运有版权风险的内容。
- 抓取私密、敏感、未授权内容。
对于视频内容,应优先记录页面 URL、标题、作者、发布时间、可见描述、封面和引用信息。只有在用户明确拥有权利或站点明确允许下载时才考虑下载或保存媒体文件。
### 4.2 Web 系统自动化测试
用户总结“Web 系统自动化测试完全可以用 browser这种不需要人工介入也省开销”。
判断:准确,但应补充一个路由条件。
优先使用 `browser` 的测试场景:
- 本地开发服务:`localhost`、`127.0.0.1`。
- 未登录或测试账号流程。
- 表单提交、按钮点击、弹窗验证。
- 布局和响应式检查。
- 截图回归检查。
- 控制台错误检查。
- 干净环境复现 bug。
- 不依赖真实账号、真实扩展、真实浏览器 profile 的测试。
应使用 `chrome` 的测试场景:
- 依赖真实登录态。
- 依赖企业 SSO。
- 依赖 Passkey、2FA 或用户手动认证后的会话。
- 依赖浏览器扩展。
- 需要接管用户当前已打开的生产后台页面。
- 需要用户看着真实浏览器页面确认操作结果。
工程化建议:长期稳定的 E2E 测试仍应沉淀到项目内 Playwright、Cypress 或类似测试框架。Codex 的 `browser` 更适合探索式测试、回归前人工智能辅助检查、临时验证和生成测试线索。
## 5. 路由规则草案
后续如果要做项目内 Skill可以把路由规则写成以下形式。
### 5.1 默认选择 browser
当满足以下条件时,默认使用 `browser`
- 目标是本地 Web 应用或公开页面。
- 不需要用户真实登录态。
- 不需要浏览器扩展。
- 不需要用户观看过程。
- 操作无账号副作用。
- 目标是验证行为、提取公开信息、截图、检查 UI。
### 5.2 选择 chrome
当满足以下任一条件时,使用 `chrome`
- 用户明确要求使用 Edge、Chrome 或外置浏览器。
- 需要用户当前登录态。
- 需要接管已打开标签页。
- 需要浏览器扩展或真实 profile。
- 需要用户看到页面。
- 页面被登录、SSO、2FA、Passkey、企业权限挡住而用户已经在真实浏览器中完成认证。
### 5.3 暂停并确认
当任务包含以下动作时,应暂停并确认:
- 发帖、评论、私信、关注、点赞、收藏。
- 提交会改变外部系统状态的表单。
- 上传个人文件。
- 下载或保存可能受版权保护的媒体。
- 输入或提交密码、验证码、API key、支付信息、身份证件、地址、医疗或财务信息。
- 接受摄像头、麦克风、定位、下载、扩展安装等浏览器权限。
- 遇到 CAPTCHA 或安全验证。
### 5.4 拒绝或改为安全替代
当任务意图是绕过访问控制、批量规避反爬、破解 DRM、绕过付费墙、抓取未授权私密内容时不应执行。可替代方案是
- 只整理用户手动提供或合法可访问的页面。
- 只做摘要、索引、引用清单。
- 使用官方 API、导出功能或平台允许的下载方式。
- 降低频率,保留来源链接,不做批量复制。
## 6. Skill 设计建议
如果在项目库中打造对应 Skill建议不要做成“浏览器操作说明”的简单封装而应做成一个路由与安全边界 Skill。
### 6.1 建议名称
可选名称:
- `browser-surface-router`
- `codex-browser-routing`
- `web-automation-surface-policy`
- `logged-in-browser-automation`
如果面向中文项目库,建议名为:
- `浏览器执行表面路由`
- `网页登录态自动化边界`
- `Codex Browser Chrome 路由规则`
### 6.2 Skill 输入判断项
每次执行前先判断:
```text
target_url_or_app:
requires_real_login_state: yes/no
requires_existing_tab: yes/no
requires_browser_extension: yes/no
user_must_watch: yes/no
operation_type: read/click/type/download/upload/submit/change_permission
external_side_effect: yes/no
sensitive_data_involved: yes/no
anti_bot_or_access_control_present: yes/no
expected_artifact: summary/screenshot/extracted_text/test_result/navigation
```
### 6.3 输出格式
Skill 可以要求 Codex 输出:
```text
Selected surface: browser | chrome | stop-and-confirm | refuse-with-safe-alternative
Reason:
Risk flags:
Allowed actions:
Disallowed actions:
Verification plan:
Cleanup plan:
```
### 6.4 操作原则
建议沉淀以下原则:
1. 优先干净环境:能用 `browser` 就不用真实账号。
2. 真实账号最小化:只有需要登录态、扩展或用户可见页面时才用 `chrome`
3. 不读底层凭证:不读取 Cookie、localStorage、密码、session 文件。
4. 页面内容可读但需谨慎:已渲染页面内容可用于任务,但敏感信息不应扩散。
5. 外部副作用动作前确认:提交、发送、上传、购买、删除、改权限都要确认。
6. 防爬场景不做绕过:只做合法访问范围内的低频整理、摘要和引用。
7. 测试场景优先工程化:探索式测试可用 Codex稳定回归应进入项目测试框架。
## 7. 可复用决策表
| 任务 | 推荐表面 | 说明 |
| --- | --- | --- |
| 本地前端页面冒烟测试 | browser | 干净、后台、可重复 |
| 检查 `localhost` 登录弹窗是否出现 | browser | 除非必须使用真实 SSO |
| 需要企业 SSO 后台 | chrome | 依赖真实浏览器登录态 |
| 用户已在 Edge 打开的 X 页面操作 | chrome | 接管指定标签页 |
| 抓取公开网页标题和正文 | browser | 不需要真实账号 |
| 整理用户账号可见的小红书笔记 | chrome | 低频、授权、只取可见内容 |
| 批量下载小红书视频 | stop/refuse | 可能涉及反爬、版权和平台规则 |
| 生成 UI 截图证据 | browser | 默认后台,必要时显示 |
| 复现只有用户浏览器才出现的问题 | chrome | 依赖真实 profile 和扩展 |
| 需要点击“提交订单” | confirm | 外部副作用动作 |
## 8. 对未来项目库的落地建议
建议在具体项目库中不要把这份记录直接当运行规则全文复制,而是提炼为三类文件:
```text
skills/
browser-surface-router/
SKILL.md
references/
browser-vs-chrome-research.md
safety-boundaries.md
templates/
task-routing-checklist.md
```
`SKILL.md` 应保持短而可执行,只放触发条件、路由规则、确认规则和输出格式。本文这种调研记录更适合作为 `references/` 下的背景材料。
对于需要频繁采集资料的项目,可再拆一个专门 Skill
```text
skills/
logged-in-page-extraction/
SKILL.md
references/
allowed-extraction-patterns.md
disallowed-anti-bot-patterns.md
```
它的核心不应是“怎样绕过反爬”,而应是“怎样在用户授权和平台允许的范围内,把用户可见页面整理成结构化材料”。
## 9. 未解决问题
后续还需要进一步验证:
- Codex 内置 `browser` 的可见模式在当前 Windows 桌面中的具体表现。
- Edge、Chrome、多 profile、无痕窗口的扩展连接边界。
- 对视频页面,能稳定提取哪些层级的信息:页面元数据、封面、可见描述、播放状态、媒体 URL。
- 对项目内 Web 系统,`browser` 结果如何转化为正式 Playwright/Cypress 测试。
- 如何在团队或个人知识库中记录“已授权页面采集”的证据和范围。
## 10. 一句话规则
后续做 Skill 时可以把核心规则压缩成:
> 默认用 `browser` 做干净、后台、可重复的网页验证;只有当任务确实依赖用户真实浏览器状态、登录态、扩展或可见窗口时,才使用 `chrome`;任何外部副作用、敏感数据、验证码、反爬规避、版权下载都必须停下来重新确认或改用安全替代方案。