AI 控制浏览器的四种方案:插件 / Playwright / CDP / Browser Use

“AI 控制浏览器”目前有四类方案,权限差异非常大。做爬虫 / 自动化 / Agent 时选错方案会撞墙——比如插件方案下想调试 JS 是不可能的。

权限矩阵

方案操作 DOM读 DOM执行 JS调试 JSChrome DevTools 全权限保留登录态
Chrome 扩展
Playwright / Puppeteer部分需配置
Chrome DevTools Protocol (CDP)
Browser Use / Open Operator部分部分

方案一:Chrome 扩展

适合:日常使用中的 AI 助手(Sider、Harpa、Monica 等)、需要长期挂在浏览器里的工具。

做法:写一个 Chrome/Edge 扩展,通过 content script 读写 DOM:

// content.js
document.querySelector("input.search").value = "hello";
document.querySelector("button.submit").click();

或者用扩展 API 拿到当前 tab 的 DOM 快照喂给 LLM:

chrome.tabs.sendMessage(tabId, { type: "getDOM" }, response => {
  callLLM(response.html);
});

局限

  • 无法调试 JS(没 DevTools 权限)
  • 无法访问 Network / Sources / Performance
  • 某些反爬网站可能识别扩展环境

方案二:Playwright / Puppeteer

适合:爬虫、自动化测试、CI 里跑的一次性任务。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://example.com")

    # 读 DOM
    html = page.content()

    # 执行 JS
    result = page.evaluate("() => document.title")

    # 点击
    page.click("button.submit")

配合 LLM:Playwright 抓页面 → 传 DOM 给模型 → 模型返回下一步操作 → Playwright 执行。

局限

  • 每次启动是全新 profile,没登录态(除非 launch_persistent_context
  • 反自动化检测(Cloudflare、Datadome 之类)会挂
  • 网站升级 selector 就崩

有个绕检测的插件叫 playwright-stealth,能过大多数入门反爬。

方案三:Chrome DevTools Protocol(权限最高)

适合:需要完整 DevTools 能力的场景——JS 调试、Network 拦截、Performance profiling、逆向分析。

先以 debug 模式启动 Chrome:

chrome.exe --remote-debugging-port=9222 --user-data-dir="D:\chrome-cdp"

然后 Playwright 连过去(这里 Playwright 是 CDP 的高层封装):

browser = p.chromium.connect_over_cdp("http://127.0.0.1:9222")

或者直接用底层 CDP:

from pychrome import Browser
b = Browser(url="http://127.0.0.1:9222")
tab = b.list_tab()[0]
tab.start()
tab.Runtime.evaluate(expression="document.title")

# 拦截 Network
tab.Network.enable()
tab.call_method("Fetch.enable")

# 设置断点
tab.Debugger.enable()
tab.Debugger.setBreakpointByUrl(url=".../app.js", lineNumber=100)

能力和你按 F12 一样。

方案四:Browser Use / Open Operator 类项目

近一两年新出的一批”给 LLM 用的浏览器 SDK”——比如 browser-use、Anthropic 的 Computer Use、OpenAI Operator:

from browser_use import Agent
from langchain_openai import ChatOpenAI

agent = Agent(
    task="打开 GitHub 搜索 langchain 项目的最新 star 数",
    llm=ChatOpenAI(model="gpt-4o"),
)
result = agent.run()

这类 SDK 帮你封装好:

  • 页面截图 + 元素编号
  • Vision 模型选元素
  • Playwright 执行操作
  • 失败自动重试

写业务代码不用管 selector,直接说自然语言。代价:慢(每步 LLM 调用)、贵(大量 vision token)、有时候错。

怎么选

场景推荐
用户浏览时给 AI 助手能力Chrome 扩展
定时任务 / CI 里跑Playwright
需要 JS 断点、Network 拦截、逆向CDP
想让 LLM 自主完成复杂多步任务Browser Use 类
反爬严的网站CDP + stealth + 真实 profile

一句话总结

日常插件、爬虫 Playwright、逆向调试 CDP、Agent 用 Browser Use——四种方案权限从低到高,按需要选。CDP 是”能上 F12 就能做的一切”的上限。