Skip to content

為什麼 80% 的 Browser-Use 自動化 Agent 活不過第三步?多步互動防封實戰 ​

進入 2026 年,基於大型語言模型視覺與多模態驅動的瀏覽器自動化智慧代理(如開源社群極受矚目的 Browser-Use、Stagehand、Playwright + Vision Agent 等)徹底顛覆了自動化測試、競品數據監控、跨平台資料登錄以及跨境電商營運的方式。

與傳統仰賴脆弱 CSS 選擇器寫死流程的自動化腳本不同,現代 AI Agent 能夠自主理解網頁截圖,判讀文字輸入框、按鈕與下拉選單的語意,並自行拆解業務目標:「開啟目標網站 -> 搜尋商品 -> 篩選規格 -> 加入購物車 -> 提交結帳」。

然而,幾乎所有在生產環境落地過此類 Agent 的工程師,都會遭遇一個極為普遍且令人沮喪的瓶頸:

  • 第一步(開啟首頁)極為順暢,HTML 完整渲染,截圖清晰正常;
  • 第二步(在搜尋列輸入關鍵字或點擊分類選單),網頁載入速度開始隱約卡頓;
  • 到了第三步(點擊分頁、進入詳情頁或嘗試點擊登入/結帳),頁面瞬間彈出 Cloudflare Turnstile、DataDome 拼圖驗證碼,甚至直接回傳 403 Forbidden: Access Denied,整個 Agent 任務當場宣告失敗。

為什麼多步互動的 AI 智慧代理總是「活不過第三步」?

許多開發者的直覺反應往往是:「是不是模型 Prompt 沒寫精準?」或是「是不是本地代理節點出了問題?」。事實上,這與大型語言模型本身的推理能力毫無關係,而是自動化框架底層的執行時期特徵、網路出口的工作階段(Session)連續性,與現代反爬防禦系統的動態升級產生了嚴重衝突。

本文將深度揭密多步互動 Agent 頻遭攔截的底層機制,並提供一套能穩定執行數十步至上百步長流程自動化的完整防封實作架構。


一、破案:為什麼智慧代理總是在第 2~3 步被 WAF 識破? ​

現代主流網站部署的安全防禦體系(如 Cloudflare Bot Management、DataDome、Akamai Bot Manager 等),其偵測機制早已不是靜態地「檢查你像不像爬蟲」,而是基於有限狀態機的全生命週期動態信任評分模型。

智慧代理之所以死在第 3 步,本質上是因為您在前兩步的操作中,早已將「反欺詐信任分數」扣至負值:

text
[第 1 步:存取首頁] ──> 純讀取請求,風控維持低警戒(避免誤傷一般訪客與搜尋引擎)
                               │
                               ▼ 信任分數輕微扣減 (偵測到底層無頭環境特徵)
[第 2 步:點擊/輸入] ──> 觸發瀏覽器實體互動事件!WAF 動態注入 JS 探針,檢查 CDP 與連線連續性
                               │
                               ▼ 信任分數直接歸零 (偵測到 IP 突變 或 機房 ASN 或 僵硬軌跡)
[第 3 步:關鍵提交] ──> 風險評分超標,安全閘道立即收網:強制彈出人機驗證 / 403 阻斷!

導致評分斷崖式崩跌的致命傷,主要源自以下四個維度:

1. 致命傷 1:動態輪替 IP 引發的「工作階段撕裂與時空瞬移」 ​

這是多數使用代理的工程師最常誤入的深坑。許多團隊直覺認為「動態住宅代理匿名度最高最安全」,於是為 Browser-Use 配置了動態按量計費的輪替住宅代理。

殊不知,動態住宅代理的核心設計是服務於單次離散的資料擷取,完全不適用於維持有狀態(Stateful)的長效會話!

  • 步驟 1 載入首頁時,出口 IP 位於美國俄亥俄州;
  • 步驟 2 智慧代理思考了 10 秒並發起搜尋點擊,底層重新建立了一條 TCP 連線,出口 IP 突然跳轉至德州;
  • 步驟 3 代理嘗試切換分頁時,IP 又瞬移到了英國倫敦。

在目標網站的風控系統看來,同一個 Cookie / Session ID 的網路連線在短短數十秒內跨越數千公里,這屬於典型且嚴重的工作階段劫持(Session Hijacking)或憑證遭盜用特徵,系統會毫不猶豫地判定為異常並立即中斷連線。

2. 致命傷 2:資料中心機房 IP 的「延遲處決」 ​

為了降低成本,部分團隊直接在 AWS、DigitalOcean 或各類平價 VPS 雲端主機上執行自動化 Agent,對外出口 IP 皆為資料中心機房(Datacenter ASN)。

許多高防禦網站為了兼顧 SEO 檢索,對機房 IP 的首頁 GET 請求採取「寬鬆放行」策略;然而一旦偵測到該機房節點開始發起實質的 DOM 事件互動、表單輸入或涉及金流帳號等操作,風控規則便立即升級,直接祭出最高層級的人機驗證挑戰。

3. 致命傷 3:CDP(Chrome DevTools Protocol)執行時期指紋洩漏 ​

Browser-Use、Playwright 等自動化函式庫本質上皆是透過 CDP 協定控制底層 Chrome 瀏覽器。 現代 WAF 的進階前端探針會動態嗅探以下執行時期特徵:

  • window.navigator.webdriver === true(即便部分工具宣告已抹除,但在多層執行上下文仍有殘留);
  • Runtime.enable 啟用時所衍生的控制台呼叫堆疊污染與除錯延遲特性;
  • Permissions API、Plugins 列表與實體桌上型 Chrome 瀏覽器存在深層不相符;
  • WebGL 渲染引擎直接暴露出軟體模擬(如 SwiftShader),缺乏實體獨立顯示卡硬體特徵。

4. 致命傷 4:機械化行為軌跡(Kinematic Machine Jumps) ​

當多模態視覺 Agent 辨識出「搜尋按鈕位於座標 (520, 310)」時,一般的自動化驅動器會直接讓滑鼠指標在 0 毫秒內瞬間移動 至該座標,並立即發起 click 事件。 人類的肢體操作必然遵循平滑的貝塞爾曲線,且伴隨著自然的微小晃動與加速度變化;瞬時跳躍的機械化軌跡在行為生物識別(Behavioral Biometrics)引擎眼中,無異於直接宣告自身為自動化程式。


二、架構重構:打造能穩定執行 100 步的自動化黃金防線 ​

要讓 Browser-Use 或 Playwright 能如同真人般順暢完成複雜的多步長流程,必須建立網路層、環境層與行為層的三維一體防禦架構:

text
    ┌─────────────────────────── [第 1 層:網路基石] ───────────────────────────┐
    │  • 1:1 獨享 ISP 靜態住宅代理(電信寬頻 ASN,數小時/數天絕對固定,杜絕會話中斷) │
    └─────────────────────────────────────┬─────────────────────────────────────┘
                                          │
    ┌─────────────────────────── [第 2 層:核心偽裝] ───────────────────────────┐
    │  • 採用反偵測瀏覽器核心(如 Camoufox / Patchright / Undetected-Chrome)       │
    │  • 抹除 CDP 協定特徵、隱藏 webdriver 標記、模擬真實實體 GPU 與 Canvas/音訊    │
    └─────────────────────────────────────┬─────────────────────────────────────┘
                                          │
    ┌─────────────────────────── [第 3 層:擬真行為] ───────────────────────────┐
    │  • 貝塞爾曲線平滑滑鼠移動軌跡 + 高斯隨機微晃動                              │
    │  • 模擬真人鍵盤輸入延遲(50~150ms 隨機間隔),完全通過行為特徵檢測          │
    └───────────────────────────────────────────────────────────────────────────┘

為什麼說「ISP 獨享靜態住宅」是多步 Agent 的唯一解答? ​

在所有防禦環節中,網路出口的選擇決定了 80% 的穩定性:

  1. 正統電信業者寬頻信譽:ISP 代理在官方資料庫中登記為合法的在地家庭寬頻網路(如 AT&T, Comcast, Verizon),與歐美本地真實住宅網路毫無二致,天然具備極高的信譽評分。
  2. 連線絕對穩定恆定:整個 Agent 任務從第 1 步到第 100 步,所有 HTTP、WebSocket 以及 TLS 連線皆由同一個專屬靜態 IP 傳輸,Cookie、Token 與底層 TCP 連線完美對齊,徹底消除「頻繁更換 IP 導致的異地異常中斷」。
  3. 單一節點彈性開通與免費更換 IP 容災: 在 JoyProxy,開發者無須承擔傳統大廠動輒 10~20 個綑綁起售的高額月費,單個 ISP 獨享靜態節點每月僅 $3 起。更關鍵的是,JoyProxy 提供租期內支援免費更換一次 IP 的安全機制——若因本地除錯失誤導致節點遭目標站暫時列入觀察,可直接在控制台一鍵置換全新乾淨節點,快速恢復業務運作。

三、程式碼實作:於 Browser-Use 中整合 JoyProxy ISP 代理與防封策略 ​

以下以目前最熱門的 Python 開源代理人函式庫 browser-use 為例,示範如何配置抗偵測 Browser 環境與 JoyProxy 靜態獨享 ISP 節點。

1. 必備套件安裝 ​

bash
pip install browser-use langchain-openai python-dotenv
playwright install chromium

2. 完整整合程式碼範例 ​

python
import os
import asyncio
from browser_use import Agent
from browser_use.browser.browser import Browser, BrowserConfig
from browser_use.browser.context import BrowserContextConfig
from langchain_openai import ChatOpenAI

async def run_stealth_agent():
    # 1. 配置 JoyProxy ISP 獨享靜態住宅節點
    # 格式:http://username:password@isp-gate.joyproxy.com:port
    PROXY_SERVER = "http://isp-gate.joyproxy.com:port"
    PROXY_USERNAME = "your_joyproxy_username"
    PROXY_PASSWORD = "your_joyproxy_password"
    
    # 2. 深度客製化防偵測瀏覽器啟動設定
    browser_config = BrowserConfig(
        headless=False,  # 執行多步高風控任務時強烈建議優先選用有頭模式,或搭配虛擬螢幕 (Xvfb)
        disable_security=False,
        extra_chromium_args=[
            # 關鍵防反爬啟動參數
            "--disable-blink-features=AutomationControlled", # 核心:隱藏自動化控制特徵
            "--disable-infobars",
            "--no-first-run",
            "--no-service-autorun",
            "--password-store=basic",
            # 設定網路代理
            f"--proxy-server={PROXY_SERVER}",
            # 模擬真實螢幕解析度
            "--window-size=1920,1080",
        ],
    )
    
    # 3. 配置瀏覽器上下文(嚴格對齊節點時區與語系)
    # 假設所選的 JoyProxy ISP 節點位於美國洛杉磯
    context_config = BrowserContextConfig(
        locale="en-US",
        timezone_id="America/Los_Angeles",
        viewport={"width": 1920, "height": 1080},
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
        proxy={
            "server": PROXY_SERVER,
            "username": PROXY_USERNAME,
            "password": PROXY_PASSWORD,
        }
    )
    
    # 建立持久化瀏覽器實例
    browser = Browser(config=browser_config)
    
    # 4. 初始化 LLM 與任務指令
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    
    task_prompt = """
    開啟目標電商網站:https://www.target-ecommerce.com
    1. 於搜尋列輸入 'mechanical keyboard' 並送出。
    2. 等候商品清單載入,篩選評分大於 4 星之品項。
    3. 點選第一個商品進入詳情頁面,取得商品名稱與即時庫存資訊。
    """
    
    agent = Agent(
        task=task_prompt,
        llm=llm,
        browser=browser,
        browser_context_config=context_config,
        use_vision=True,  # 啟用多模態視覺決策
    )
    
    # 執行自動化多步任務
    history = await agent.run(max_steps=25)
    print("Agent 執行完畢,最終產出:", history.final_result())
    
    await browser.close()

if __name__ == "__main__":
    asyncio.run(run_stealth_agent())

四、方案存活率實測對比:哪種架構能順暢走完業務流程? ​

為直觀檢驗不同網路與環境組合在真實商業環境下的穩定度,我們在包含 Cloudflare Turnstile 與 DataDome 防禦的 5 個代表性網站(涵蓋跨境電商、機票訂位與海外社群)中,讓 Agent 連續執行 10 步以上的端到端互動操作,實測統計如下:

網路出口與環境架構組合步驟 1 (首頁載入)步驟 2 (搜尋/選單互動)步驟 3 (進入詳情/表單輸入)步驟 5+ (跨頁流轉/提交結帳)最終任務成功率核心失敗原因拆解
原生 Playwright + 雲端機房 VPS IP成功70% 阻擋95% 阻擋0% 存活< 3%機房 ASN 疊加原生 CDP 標記,直接觸發強制阻斷
反偵測瀏覽器 + 動態輪替住宅 IP成功成功80% 阻擋 (彈出驗證碼)90% 斷線< 15%IP 中途跳變引發工作階段撕裂,被判定憑證遭竊
反偵測瀏覽器 + 免費公共代理池30% 成功0% 存活0% 存活0% 存活0%IP 歷史紀錄嚴重污染,全子網遭列黑名單
反偵測環境 + JoyProxy ISP 獨享靜態住宅100% 成功98% 成功94% 成功88% 存活~88%全流程維持固定真實電信出口,連線穩定無撕裂

測試結果明確表明:缺乏純淨、專屬固定的 ISP 住宅網路作為基礎,上層的視覺 Agent 邏輯設計得再精妙,自動化任務依然會在第三步遭遇攔截崩潰。


五、打造穩健多步 Agent 的 3 個實務建議 ​

在將自動化 Agent 部屬至生產流程時,建議嚴格遵循以下準則:

  1. 嚴禁在多步互動任務中採用「每次請求更換 IP」的動態代理: 除非任務僅需進行單頁式的純靜態資料擷取(此時推薦直接使用 Web Scraping API),否則凡是牽涉跨頁點擊、表單填寫、帳號登入、購物車互動等長會話操作,必須 100% 採用固定單一出口的 ISP 靜態獨享住宅代理。
  2. 時區、語言與代理節點地理資訊必須完全一致: 若所採購之 ISP 節點位於美國西岸(如 California),請務必於 Browser Context 中將時區明確設定為 America/Los_Angeles,並將語言參數配置為 en-US。連線出口在北美、本地環境卻為東八區的矛盾特徵,是觸發動態防禦探針的關鍵破綻。
  3. 保留充足且隨機的擬真思考延遲: 真人在閱讀介面時必然需要 1~3 秒尋找目標按鈕。讓 Agent 在各步驟之間加入 1.5~3.5 秒的高斯隨機延遲(Random Jitter),不僅能避免瞬間發起高頻請求觸發速率限制(Rate Limit),更能顯著提升整體會話的真人可信度。

官方工具與相關檔案連結: