Claude Code 操作 Chrome Headless 導致我的 Windows 帳戶遭到鎖定
週六凌晨,我讓另一台 Windows 電腦上的 Claude Code 跑網站建置和 E2E 測試,透過瀏覽器檢查操作流程和畫面。沒過多久,我用自己的工作筆電重新連上遠端桌面,想看看建置和測試跑得怎麼樣,結果跳出「帳戶已鎖定」,連不進去了。
我一開始懷疑有可疑的連線正在嘗試登入,索性先把那台 Windows 電腦關掉。
到了週一,我直接請那台 Claude Code 幫我查:
幫我查一下禮拜六日,是否有透過 mstsc 連線登入錯誤的 log。
mstsc 就是 Windows 內建的遠端桌面程式。我只想知道那兩天到底發生了什麼,也沒特別指定要查哪些紀錄或下什麼指令。
繼續查下去,怎麼查到 Chrome 了?
Claude 一開始說,週末沒有找到 RDP 登入失敗的紀錄。不過,它也提到,有不少密碼錯誤是 chrome.exe 造成的。
我告訴它,紀錄裡那台工作機就是我自己的筆電,再請它往下查,看看帳戶到底為什麼被鎖。它接著查 Windows 的鎖定規則、登入紀錄和 Chrome 設定檔,也去比對自己跑畫面驗證的時間。
查下來才發現,Claude 做截圖和頁面檢查時,會用腳本啟動不顯示視窗的 Chrome,也就是 headless Chrome。有些腳本每跑一次,就開一個全新的瀏覽器設定檔。
原來 Chrome 在某些情況下,會用空白密碼試著驗證 Windows 帳戶,確認這個帳戶是不是沒有設密碼。我的帳戶有密碼,這次驗證就失敗了,Windows 也把它算成密碼錯誤。Chromium 原始碼裡確實有這段檢查。
設定檔會記住檢查結果,快取仍有效時就不用再試。但 Claude 的腳本一直開新的設定檔,裡面沒有之前的紀錄,Chrome 就可能再檢查一次。跑多了,密碼錯誤次數累積到門檻,我的 Windows 帳戶就被鎖住了。
這次是我用的驗證腳本碰到這個問題,其他人的環境不一定一樣。
我再請它拿出紀錄,確認是不是這個原因
Chrome 做畫面檢查,居然會影響 Windows 登入,這個原因我原本沒想到。我把 Claude 的說明交給 Codex 幫忙核對,也請那台 Claude 拿出原始紀錄、Chrome 版本、執行指令和測試結果。
紀錄裡,週五晚上到週六凌晨共有 37 筆 Chrome 登入失敗,帳戶被鎖了三次。我嘗試連遠端桌面的時間,剛好就在最後一次鎖定期間裡。Codex 重新讀過原始事件,數量和時間也都對得上。
Claude 還做了對照測試:用全新設定檔開 Chrome,密碼錯誤計數就加一次;先放好檢查結果的快取再開,計數就沒有增加。
時間和測試結果都對得上,我大致知道問題出在哪了。不過,當時沒記下每個 Chrome 是誰啟動的,這部分查不到。
Claude 一開始說沒找到 RDP 失敗紀錄,後來也改口了。原來帳戶已經被鎖時,被拒絕的登入可能因為稽核設定而沒留下紀錄,不能只看「沒紀錄」就說沒有發生。Microsoft 的說明也有提到這種情況。
請 Claude 把 Chrome 啟動方式改掉
找到原因後,我再請 Claude Code 幫忙修。做法是開 Chrome 之前,先在自動化設定檔的 Local State 寫好「這個 Windows 帳戶有密碼」的檢查結果,讓 Chrome 不用再拿空白密碼試一次。
它做了一個共用工具 chrome-profile.mjs,讓驗證腳本開 Chrome 前先寫好快取,也把這個做法記進 CLAUDE.md 和相關專案的操作記憶。
我的 Windows 帳戶本來就有設密碼,才適合先寫入這個檢查結果。這次只改自動化用的設定檔,平常的瀏覽器資料和 Windows 帳戶鎖定規則都沒有動。
改完後,它再測了開瀏覽器、重用設定檔、截圖和 Playwright。六種情境都回報沒有再增加密碼錯誤次數,其中四種也查了 Windows Security 紀錄,沒有新增登入失敗。兩種 Playwright 測試只看了錯誤計數。
聊聊你的想法
有不同的做法,或遇到相似的問題?歡迎一起討論。
正在載入留言…
留言與討論