运行时依赖
安装命令
点击复制技能文档
browser-use-init 技能 概述
此 技能 提供完整的 Chrome Dev工具s Protocol(CDP)初始化和连接方案,用于在 Chrome 145+ 版本下远程控制浏览器。
为什么需要这个 技能
Chrome 130+ 引入了安全限制,--remote-调试ging-port 强制要求使用非默认的 user-data-dir 路径。直接用默认 性能分析 启动 CDP 调试会失败,导致无法用 Playwright 或 browser-use 连接浏览器。
此 技能 通过自动复制 性能分析 到自定义目录的方式绕过此限制,同时保留登录态。
快速开始
- 首次初始化(一次性)
输出示例:
[1] 关闭现有 Chrome... [2] 准备 性能分析... [性能分析] 首次复制 性能分析... 复制 Default (~可能需要几分钟)... [性能分析] 复制完成: [3] 启动 Chrome (CDP 模式)... [4] 等待 CDP 就绪... [OK] Chrome 已启动: Chrome/145.0.7632.160 [OK] CDP 端口 9222 就绪 [OK] WS URL: ws://localhost:9222/dev工具s/browser/...
此时 Chrome 窗口已打开,可用浏览器操作。
- 处理首次登录态丢失
如果登录状态丢失(DPAPI 绑定限制),需要手动登录一次:
在弹出的 Chrome 窗口中打开:你的登录网址 使用你的登录方式(应用 扫码、验证码、账号密码等)完成登录 登录成功后关闭 Chrome
重新运行 启动_chrome.py,登录态现已保存,以后启动无需重新登录。
- 查询 CDP 连接信息
输出:
Browser: Chrome/145.0.7632.160 WS URL: ws://localhost:9222/dev工具s/browser/8c3e... Version: 12.7
标签页 (1): - 京东首页 | https://www.jd.com/
工作流场景 场景 A:用 Playwright 直接操作(确定性任务)
适用于:数据提取、页面截图、表单填充等明确的操作
导入 a同步io from scripts.playwright_connect 导入 获取_page
a同步 def 提取_data(): pw, browser, page = awAIt 获取_page() try: awAIt page.goto("https://example.com/data-page") awAIt page.wAIt_for_load_状态("networkidle") # 用 JS 提取页面信息 items = awAIt page.evaluate(""" () => { return Array.from(document.查询SelectorAll('.item-name')) .map(el => el.textContent.trim()); } """) print("提取的数据:", items) finally: awAIt pw.停止()
a同步io.运行(提取_data())
优点:
快速、可靠、确定性强 直接控制 DOM,支持 JS 注入 无需 LLM 场景 B:用 browser-use 代理(自然语言任务)
适用于:开放式任务、需要 AI 判断的操作
python 运行_代理.py --task "打开网站,找出最新发布的产品名称" --模型 qwen3.5:9b
或在代码中:
导入 a同步io from scripts.运行_代理 导入 运行_task
a同步io.运行(运行_task( task="打开网站列表页,提取所有商品的名称和价格", 模型="qwen3.5:9b" ))
优点:
支持自然语言描述任务 AI 自动判断操作流程 适合复杂的人机交互
注意:
需要本地 Ollama 运行且模型可用 LLM 输出质量直接影响效果 技术详解 核心脚本说明 脚本 用途 何时使用 启动_chrome.py 启动 Chrome CDP 模式,复制 性能分析 首次初始化、每次重启浏览器 查询_cdp.py 查询 CDP 连接状态和已打开标签页 诊断、获取 网页Socket URL playwright_connect.py 用 Playwright 直连 CDP Chrome 需要确定性自动化操作 运行_代理.py 用 browser-use 代理 + LLM 需要 AI 驱动的自然语言任务 Chrome 性能分析 复制机制
首次运行 启动_chrome.py 时:
复制 Local 状态:包含加密密钥元数据,确保旧 Cookie 能被解密 复制 Default 性能分析:包含所有 Cookie、历史记录、书签等 排除大文件:自动跳过 缓存、Code 缓存、日志等不必要的文件(加快速度) 原始路径:%LOCAL应用DATA%\Google\Chrome\User Data ↓ (复制) 自定义路径:(可通过环境变量配置) ↓ (启动 Chrome) Chrome 以 --remote-调试ging-port 识别为"非默认路径" ✓ ↓ (DPAPI 解密) 旧 Cookie 被解密并加载 ✓
DPAPI 与登录态
首次登录态可能丢失的原因:DPAPI 密钥绑定到原始 user-data-dir 路径。
解决方案:手动登录一次后,新 Cookie 使用新路径的 DPAPI 密钥加密,之后自动保持。
详见:references/chrome-cdp-solution.md 中的 DPAPI 章节。
依赖与环境 最小依赖 # 仅启动 Chrome(无需额外包) python 启动_chrome.py
# 查询 CDP(仅需标准库) python 查询_cdp.py
Playwright 支持 pip 安装 playwright playwright 安装 chromium
browser-use 代理 支持 pip 安装 browser-use langchAIn-ollama ollama pull qwen3.5:9b # 或其他模型
常见问题 Q: 为什么首次登录态丢失?
A: Chrome 126+ 用 DPAPI 加密 Cookie,密钥绑定到原始 user-data-dir。复制 性能分析 后需重新登录一次,之后会自动保持。详见参考文档。
Q: 我想多开几个 Chrome 实例,怎么做?
A: 修改 启动_chrome.py 中的 PORT 和 DST_DIR 变量,为每个实例指定不同端口(如 9222、9223)和独立 性能分析 目录。
Q: CDP 端口 9222 一直不通
A: 检查清单(详见参考文档故障排查章节):
task列出 | grep chrome 确认 Chrome 进程 netstat -ano | grep 9222 检查端口占用 确认 --user-data-dir 是非默认路径 Q: Playwright 连接报 网页Socket 错误
A: 运行 查询_cdp.py 确认 CDP 在线,再尝试连接。如仍失败,检查防火墙设置。
进阶用法 用法 1: 自定义 性能分析 位置和端口 # 方式 1:修改脚本中的常数(开发模式) # 编辑 启动_chrome.py,修改 DST_DIR 和 PORT
# 方式 2:使用环境变量(推荐,更灵活) $env:CHROME_性能分析_DIR = "E:\my-chrome-性能分析" $env:CDP_PORT = 9223 python 启动_chrome.py
用法 2: Playwright 中的高级操作 a同步 def fill_form(): pw, browser, page = awAIt 获取_page() try: awAIt page.fill("输入[name='username']", "user_输入") awAIt page.fill("输入[name='password']", "pass_输入") awAIt page.命令行工具ck("button[type='submit']") awAIt page.wAIt_for_load_状态("networkidle") awAIt page.screenshot(path="结果.png") finally: awAIt pw.停止()
用法 3: 代理 中自定义提示词 a同步io.运行(运行_task( task="打开网站,用中文列出首页推荐商品的名称和价格", 模型="qwen3.5:9b" ))
技术参考
详细的技术说明、Chrome 版本历史、DPAPI 机制、故障排查等信息,见:
📄 references/chrome-cdp-solution.md
本 技能 解决的核心问题 ✅ Chrome 130+ 强制非默认 user-data-dir 限制 ✅ DPAPI 应用-Bound 加密ion 导致的登录态丢失 ✅ 简化 CDP 初始化流程(一条命令搞定) ✅ 提供 Playwright 和 browser-use 两种使用方式 ✅ 完整的故障诊断和排查工具 下一步 运行 python 启动_chrome.py 启动 Chrome 查看 references/chrome-cdp-solution.md 深入了解技术细节 选择 Playwright(确定性)或 代理(AI 驱动)的方式操作浏览器