Codex 操作浏览器有两种模式,一种是 Chrome 插件,一种是内置浏览器。用了一段时间之后,我总结一下两者的差异和各自适合的场景。
【1】先说一个被低估的用法:拿 Codex 当爬虫
传统爬虫用 requests 或者 Playwright 无头模式去请求页面,现在风控越来越严,指纹检测、行为分析、验证码轮番上阵,很多网站一看你是程序化请求直接拦截。Codex 的浏览器不一样,它操作的是真实浏览器,有完整的渲染引擎、真实的用户代理、正常的 JavaScript 执行环境,在网站看来就是一个普通用户在浏览页面。
配合 /goal 模式,你设定一个目标(比如“把这个网站上所有产品的名称、价格、评分抓下来存成 CSV”),Codex 会自己规划步骤、翻页、处理异常,不需要你一步步指挥。这比自己写爬虫脚本省事得多。
但 Codex 有两种浏览器模式,特性完全不同,选对了事半功倍。
【2】Chrome 插件模式:能力强,但吃资源
用 @Chrome 调用的 Chrome 插件模式,核心优势是一个字:登录态共享。
它直接运行在你自己的 Chrome 浏览器里,继承你所有的 Cookie、登录会话、已安装的扩展。那些需要登录才能访问的内容,比如付费订阅的文章、企业内部的管理后台、CRM 系统里的客户数据、需要登录的社交平台,Chrome 插件都能直接访问,因为对网站来说,就是你本人在操作浏览器。
Codex 在 Chrome 里工作时会把任务放进独立的标签页分组,不会打断你正在看的页面。它还支持 DevTools 协议,能抓性能数据、看网络请求、调试 Console 错误。
但代价也很明显:资源消耗相当大。Chrome 本身就是内存大户,每个标签页都是独立进程。Codex 的 Chrome 插件在上面再加一层操控逻辑,截图、DOM 解析、指令交互全在跑,内存和 CPU 占用会非常高。机器配置不行的话(比如 8G 内存的笔记本),跑起来能明显感觉到卡顿,拿来做批量爬虫任务就更难受了。长时间运行还容易出现截图延迟、状态不同步的问题。
另外 Chrome 插件目前只支持 macOS 和 Windows,Linux 用户暂时用不了。它也不支持无头模式,Chrome 窗口必须保持打开状态。
适合的场景:需要登录态的短期任务。比如登录某个平台抓一批数据、在内部工具上批量操作、从 CRM 导出信息。
【3】内置浏览器模式:轻快,但有局限
用 @Browser 调用的内置浏览器,是 Codex 自带的沙盒浏览器环境。
它最大的优势是轻量。不需要启动整个 Chrome,资源消耗小很多,响应速度快,适合需要频繁操作浏览器的场景。
但它有一个根本性的限制:没有你的登录态。不继承 Cookie、不继承浏览器扩展、不继承已保存的会话。打开一个需要登录的页面,你得在内置浏览器里重新登录。而且有些反爬严格的网站,对这种非标准浏览器环境的检测更敏感。我试过在内置浏览器里登录 X,反复失败,大概率是因为 X 的风控识别出了异常的浏览器指纹。
内置浏览器真正出彩的地方是前端开发调试。它有一个标记模式(Annotation Mode),你可以直接在渲染好的页面上选中某个元素或者框选一个区域,写上“这个按钮往上移”“字体加粗”“这个间距太大了”之类的批注,Codex 会把这些批注当作可执行指令来处理。这比用文字描述“第三行第二个按钮的 margin-top 减少 8px”直观太多了。
配合 Developer Mode,内置浏览器还能跑性能分析、抓网络请求、看 Console 输出,对本地开发服务器的调试非常友好。
适合的场景:公开页面的数据抓取、本地开发调试、不需要登录态的网页操作。
【4】怎么选
简单说:需要登录的用 Chrome 插件,不需要登录的用内置浏览器。如果你的机器配置有限又需要大量抓取公开数据,内置浏览器是更好的选择。如果目标网站必须登录才能看到内容,或者反爬很严需要真实浏览器指纹,那只能用 Chrome 插件,但要有心理准备面对资源消耗。
Codex 自己也会根据任务判断应该用哪种浏览器。它的优先级是:有专用插件(比如 Jira、GitHub 的集成)就用插件,需要登录态就用 Chrome,其余情况用内置浏览器。
当然浏览器的用途远不止爬虫。我觉得内置浏览器做前端调试的体验比很多专门工具都好,标记模式配合 Codex 的理解能力,几乎是“指哪改哪”。Chrome 插件在自动化操作企业内部工具方面也很实用,比如定期从后台导数据、批量更新记录。这些场景还有不少值得挖掘的空间,大家可以根据自己的实际需求去试试。
