初始化并启动 Chrome DevTools Protocol(CDP)模式,支持用 Playwright 和 browser-use Agent 远程控制真实 Chrome 浏览器。解决 Chrome 145+ App-Bound Encryption 限制,自动复制 Profile 到非默认路径以启用 CDP。适合自动化网页操作、数据提取、Form 填表、爬虫等场景。
技能名称: browser-use-init
详细描述:
此技能提供完整的 Chrome DevTools 协议(CDP)初始化和连接方案,用于在 Chrome 145+ 版本下远程控制浏览器。
Chrome 130+ 引入了安全限制,--remote-debugging-port 强制要求使用非默认的 user-data-dir 路径。直接用默认 Profile 启动 CDP 调试会失败,导致无法用 Playwright 或 browser-use 连接浏览器。
此技能通过自动复制 Profile 到自定义目录的方式绕过此限制,同时保留登录态。
bash
cd <技能目录>/scripts
python start_chrome.py
输出示例:
[1] 关闭现有 Chrome...
[2] 准备 profile...
[profile] 首次复制 profile...
复制 Default (~可能需要几分钟)...
[profile] 复制完成:
[3] 启动 Chrome (CDP 模式)...
[4] 等待 CDP 就绪...
[OK] Chrome 已启动: Chrome/145.0.7632.160
[OK] CDP 端口 9222 就绪
[OK] WS URL: ws://localhost:9222/devtools/browser/...
此时 Chrome 窗口已打开,可用浏览器操作。
如果登录状态丢失(DPAPI 绑定限制),需要手动登录一次:
重新运行 start_chrome.py,登录态现已保存,以后启动无需重新登录。
bash
python query_cdp.py
输出:
Browser: Chrome/145.0.7632.160
WS URL: ws://localhost:9222/devtools/browser/8c3e...
Version: 12.7
标签页 (1):
- 京东首页 | https://www.jd.com/
适用于:数据提取、页面截图、表单填充等明确的操作
python
import asyncio
from scripts.playwrightconnect import getpage
async def extract_data():
pw, browser, page = await get_page()
try:
await page.goto(https://example.com/data-page)
await page.waitforload_state(networkidle)
# 用 JS 提取页面信息
items = await page.evaluate(
() => {
return Array.from(document.querySelectorAll(.item-name))
.map(el => el.textContent.trim());
}
)
print(提取的数据:, items)
finally:
await pw.stop()
asyncio.run(extract_data())
优点:
适用于:开放式任务、需要 AI 判断的操作
bash
python run_agent.py --task 打开网站,找出最新发布的产品名称 --model qwen3.5:9b
或在代码中:
python
import asyncio
from scripts.runagent import runtask
asyncio.run(run_task(
task=打开网站列表页,提取所有商品的名称和价格,
model=qwen3.5:9b
))
优点:
注意:
| 脚本 | 用途 | 何时使用 |
|---|---|---|
| startchrome.py | 启动 Chrome CDP 模式,复制 Profile | 首次初始化、每次重启浏览器 |
| querycdp.py |
首次运行 start_chrome.py 时:
原始路径:%LOCALAPPDATA%\Google\Chrome\User Data
↓ (复制)
自定义路径:
↓ (启动 Chrome)
Chrome 以 --remote-debugging-port 识别为非默认路径 ✓
↓ (DPAPI 解密)
旧 Cookie 被解密并加载 ✓
首次登录态可能丢失的原因:DPAPI 密钥绑定到原始 user-data-dir 路径。
解决方案:手动登录一次后,新 Cookie 使用新路径的 DPAPI 密钥加密,之后自动保持。
详见:references/chrome-cdp-solution.md 中的 DPAPI 章节。
bash
bash
pip install playwright
playwright install chromium
bash
pip install browser-use langchain-ollama
ollama pull qwen3.5:9b # 或其他模型
A: Chrome 126+ 用 DPAPI 加密 Cookie,密钥绑定到原始 user-data-dir。复制 Profile 后需重新登录一次,之后会自动保持。详见参考文档。
A: 修改 startchrome.py 中的 PORT 和 DSTDIR 变量,为每个实例指定不同端口(如 9222、9223)和独立 Profile 目录。
A: 检查清单(详见参考文档故障排查章节):
A: 运行 query_cdp.py 确认 CDP 在线,再尝试连接。如仍失败,检查防火墙设置。
bash
python
async def fill_form():
pw, browser, page = await get_page()
try:
await page.fill(input[name=username], user_input)
await page.fill(input[name=password], pass_input)
await page.click(button[type=submit])
await page.waitforload_state(networkidle)
await page.screenshot(path=result.png)
finally:
await pw.stop()
python
asyncio.run(run_task(
task=打开网站,用中文列出首页推荐商品的名称和价格,
model=qwen3.5:9b
))
详细的技术说明、Chrome 版本历史、DPAPI 机制、故障排查等信息,见:
📄 references/chrome-cdp-solution.md
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 browser-use-init-1776277509 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 browser-use-init-1776277509 技能
skillhub install browser-use-init-1776277509
文件大小: 13.37 KB | 发布时间: 2026-4-17 14:15