browser-use-init

👤 xyzmeat 📦 v1.0.0 ⭐ 4.6 ⬇️ 909 下載
🤖 AI-Agent 免費

📖 技能介紹


name: browser-use-init description: 初始化並啟動 Chrome DevTools Protocol(CDP)模式,支援用 Playwright 和 browser-use Agent 遠端控制真實 Chrome 瀏覽器。解決 Chrome 145+ App-Bound Encryption 限制,自動複製 Profile 到非預設路徑以啟用 CDP。適合自動化網頁操作、資料提取、Form 填表、爬蟲等場景。


browser-use-init Skill

概述

此 Skill 提供完整的 Chrome DevTools Protocol(CDP)初始化和連線方案,用於在 Chrome 145+ 版本下遠端控制瀏覽器。

為什麼需要這個 Skill

Chrome 130+ 引入了安全限制,--remote-debugging-port 強制要求使用非預設的 user-data-dir 路徑。直接用預設 Profile 啟動 CDP 除錯會失敗,導致無法用 Playwright 或 browser-use 連線瀏覽器。

此 Skill 通過自動複製 Profile 到自定義目錄的方式繞過此限制,同時保留登入態。


快速開始

1. 首次初始化(一次性)

cd <skill 目錄>/scripts
python start_chrome.py

輸出示例:

[1] 關閉現有 Chrome...
[2] 準備 profile...
[profile] 首次複製 profile...
  複製 Default (~可能需要幾分鐘)...
[profile] 複製完成: <CHROME_PROFILE_DIR>
[3] 啟動 Chrome (CDP 模式)...
[4] 等待 CDP 就緒...
[OK] Chrome 已啟動: Chrome/145.0.7632.160
[OK] CDP 埠 9222 就緒
[OK] WS URL: ws://localhost:9222/devtools/browser/...

此時 Chrome 視窗已開啟,可用瀏覽器操作。

2. 處理首次登入態丟失

如果登入狀態丟失(DPAPI 繫結限制),需要手動登入一次

  • 在彈出的 Chrome 視窗中開啟:你的登入網址
  • 使用你的登入方式(App 掃碼、驗證碼、賬號密碼等)完成登入
  • 登入成功後關閉 Chrome

重新執行 start_chrome.py,登入態現已儲存,以後啟動無需重新登入。

3. 查詢 CDP 連線資訊

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/

工作流場景

場景 A:用 Playwright 直接操作(確定性任務)

適用於:資料提取、頁面截圖、表單填充等明確的操作

import asyncio
from scripts.playwright_connect import get_page

async def extract_data():
    pw, browser, page = await get_page()
    try:
        await page.goto("https://example.com/data-page")
        await page.wait_for_load_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())

優點: - 快速、可靠、確定性強 - 直接控制 DOM,支援 JS 注入 - 無需 LLM


場景 B:用 browser-use Agent(自然語言任務)

適用於:開放式任務、需要 AI 判斷的操作

python run_agent.py --task "開啟網站,找出最新發布的產品名稱" --model qwen3.5:9b

或在程式碼中:

import asyncio
from scripts.run_agent import run_task

asyncio.run(run_task(
    task="開啟網站列表頁,提取所有商品的名稱和價格",
    model="qwen3.5:9b"
))

優點: - 支援自然語言描述任務 - AI 自動判斷操作流程 - 適合複雜的人機互動

注意: - 需要本地 Ollama 執行且模型可用 - LLM 輸出質量直接影響效果


技術詳解

核心指令碼說明

指令碼 用途 何時使用
start_chrome.py 啟動 Chrome CDP 模式,複製 Profile 首次初始化、每次重啟瀏覽器
query_cdp.py 查詢 CDP 連線狀態和已開啟標籤頁 診斷、獲取 WebSocket URL
playwright_connect.py 用 Playwright 直連 CDP Chrome 需要確定性自動化操作
run_agent.py 用 browser-use Agent + LLM 需要 AI 驅動的自然語言任務

Chrome Profile 複製機制

首次執行 start_chrome.py 時:

  1. 複製 Local State:包含加密金鑰後設資料,確保舊 Cookie 能被解密
  2. 複製 Default Profile:包含所有 Cookie、歷史記錄、書籤等
  3. 排除大檔案:自動跳過 Cache、Code Cache、日誌等不必要的檔案(加快速度)
原始路徑:%LOCALAPPDATA%\Google\Chrome\User Data
    ↓ (複製)
自定義路徑:<CHROME_PROFILE_DIR>(可通過環境變數配置)
    ↓ (啟動 Chrome)
Chrome 以 --remote-debugging-port 識別為"非預設路徑" ✓
    ↓ (DPAPI 解密)
舊 Cookie 被解密並載入 ✓

DPAPI 與登入態

首次登入態可能丟失的原因:DPAPI 金鑰繫結到原始 user-data-dir 路徑。

解決方案:手動登入一次後,新 Cookie 使用新路徑的 DPAPI 金鑰加密,之後自動保持。

詳見:references/chrome-cdp-solution.md 中的 DPAPI 章節。

7w4.net收錄了海量優質技能外掛。


依賴與環境

最小依賴

# 僅啟動 Chrome(無需額外包)
python start_chrome.py

# 查詢 CDP(僅需標準庫)
python query_cdp.py

Playwright 支援

pip install playwright
playwright install chromium

browser-use Agent 支援

pip install browser-use langchain-ollama
ollama pull qwen3.5:9b  # 或其他模型

常見問題

Q: 為什麼首次登入態丟失?

A: Chrome 126+ 用 DPAPI 加密 Cookie,金鑰繫結到原始 user-data-dir。複製 Profile 後需重新登入一次,之後會自動保持。詳見參考文件。

Q: 我想多開幾個 Chrome 例項,怎麼做?

A: 修改 start_chrome.py 中的 PORTDST_DIR 變數,為每個例項指定不同埠(如 9222、9223)和獨立 Profile 目錄。

Q: CDP 埠 9222 一直不通

A: 檢查清單(詳見參考文件故障排查章節): - tasklist | grep chrome 確認 Chrome 程序 - netstat -ano | grep 9222 檢查端口占用 - 確認 --user-data-dir 是非預設路徑

Q: Playwright 連線報 WebSocket 錯誤

A: 執行 query_cdp.py 確認 CDP 線上,再嘗試連線。如仍失敗,檢查防火牆設定。


進階用法

用法 1: 自定義 Profile 位置和埠

# 方式 1:修改指令碼中的常數(開發模式)
# 編輯 start_chrome.py,修改 DST_DIR 和 PORT

# 方式 2:使用環境變數(推薦,更靈活)
$env:CHROME_PROFILE_DIR = "E:\my-chrome-profile"
$env:CDP_PORT = 9223
python start_chrome.py

用法 2: Playwright 中的高階操作

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.wait_for_load_state("networkidle")
        await page.screenshot(path="result.png")
    finally:
        await pw.stop()

用法 3: Agent 中自定義提示詞

asyncio.run(run_task(
    task="開啟網站,用中文列出首頁推薦商品的名稱和價格",
    model="qwen3.5:9b"
))

技術參考

詳細的技術說明、Chrome 版本歷史、DPAPI 機制、故障排查等資訊,見:

📄 references/chrome-cdp-solution.md


本 Skill 解決的核心問題

  1. ✅ Chrome 130+ 強制非預設 user-data-dir 限制
  2. ✅ DPAPI App-Bound Encryption 導致的登入態丟失
  3. ✅ 簡化 CDP 初始化流程(一條命令搞定)
  4. ✅ 提供 Playwright 和 browser-use 兩種使用方式
  5. ✅ 完整的故障診斷和排查工具

下一步

  • 執行 python start_chrome.py 啟動 Chrome
  • 檢視 references/chrome-cdp-solution.md 深入瞭解技術細節
  • 選擇 Playwright(確定性)或 Agent(AI 驅動)的方式操作瀏覽器

🤖 AI 評測

這個工具解決了新版 Chrome 無法遠端控制的難題,文件清晰易懂,程式碼註釋詳細,能快速上手。主要優點是功能完整、配置靈活,同時提供簡單和高階兩種使用方式。不足之處是缺少自動化測試,對蘋果電腦使用者支援不夠完善,引數校驗也有待加強。整體質量良好,適合需要自動化網頁操作的開發者使用。

📊 多維度評分

適應性4.5
規範性4.8
有效性4.8
可靠性4.4
可信度4.7

📁 包含檔案 (7 個)

📄 SKILL.md 8.1 KB
📄 _meta.json 135 B
📄 references/chrome-cdp-solution.md 8 KB
📄 scripts/playwright_connect.py 2.6 KB
📄 scripts/query_cdp.py 1.8 KB
📄 scripts/run_agent.py 2.5 KB
📄 scripts/start_chrome.py 4.1 KB