系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

browser-agent

浏览器 Agent:用 DOM/可访问性树和 Playwright 驱动网页任务,控制选择器与网络边界

补充说明

浏览器 Agent 让模型在网页上导航、填表、点击和提取信息。常见实现用 Playwright/CDP 控制浏览器,把 DOM/可访问性树或截图给模型,模型输出动作。它比纯 HTTP 抓取能处理登录、JavaScript 渲染和多步流程,但更慢、更脆弱,也更容易被反爬和页面变化影响。

优先用稳定接口:有官方 API 就用 API,有导出/下载就用文件,不要用浏览器点。必须用浏览器时,固定浏览器版本、视口、语言和时区,限制可访问域名,隔离登录态,并记录每步动作和截图。

常用示例

# Playwright:稳定的等待和定位
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page(viewport={"width": 1280, "height": 800})
    page.goto("https://example.com/login", wait_until="networkidle")
    page.get_by_label("用户名").fill("user")
    page.get_by_label("密码").fill("pass")
    page.get_by_role("button", name="登录").click()
    page.wait_for_url("**/dashboard")
    print(page.title())
# Agent 循环:DOM 摘要 + 动作
for step in range(max_steps):
    dom = page.accessibility.snapshot()      # 或精简 DOM
    action = model.predict(dom, task, history)
    if action.type == "click":
        page.get_by_role(action.role, name=action.name).click()
    elif action.type == "type":
        page.get_by_label(action.label).fill(action.text)
    elif action.type == "goto":
        if not allowed_domain(action.url):
            break
        page.goto(action.url)
    page.wait_for_load_state("networkidle")
安全边界:
- 域名白名单,禁止访问内网/管理面
- 独立浏览器 profile,不共享个人登录态
- 下载/上传目录隔离,限制文件类型
- 发送/提交/支付前人工审批
- 记录 URL、动作、截图、下载和网络请求

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 什么时候应该用 API 而不是浏览器 Agent?
  2. 为什么优先用 role/label 定位而不是固定 CSS 选择器?
  3. 浏览器 Agent 需要限制哪些网络和文件权限?
答案
  1. 有稳定 API、导出接口或文件下载时优先用 API;浏览器只用于没有接口、需要登录/JS 渲染的流程。
  2. role/label 更接近用户语义,页面改版时更稳定;固定 CSS/XPath 容易随 DOM 变化失效。
  3. 域名白名单、禁止内网/管理面、独立浏览器 profile、限制上传/下载类型和目录、出站代理与审计。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令