反偵測
go-browser 為了讓自動化的 Chrome 更接近一般瀏覽器做了哪些調整,以及到哪裡為止。
啟動參數
| 參數 | 效果 |
|---|---|
disable-blink-features=AutomationControlled |
Chrome 不透過 Blink 宣告自動化 |
user-agent |
Option.UserAgent,或 DefaultUserAgent(Linux x86_64 上的 Chrome 124) |
window-size=1280,960 |
桌面尺寸視窗,與預設 viewport 一致 |
window-position=-32000,-32000 |
僅有頭視窗:放在螢幕外 |
注入的 stealth 腳本
Option.StealthJS 以 EvalOnNewDocument 註冊,因此在分頁載入的每份文件中都早於頁面腳本執行。內嵌預設值做四件事:
| 屬性 | 頁面看到的值 |
|---|---|
navigator.webdriver |
undefined |
navigator.plugins |
三筆:Chrome PDF Plugin、Chrome PDF Viewer、Native Client |
navigator.languages |
["en-US", "en"] |
window.chrome |
{ runtime: {} } |
設定 StealthJS 會完全取代預設值,而不是附加在後面。
行為
擬人化捲動
每輪捲動等待 150ms 加最多 300ms 隨機抖動,並在 300ms 內平滑捲動而非跳轉,見 頁面載入。
有頭降級
站點仍回 403、429、503 或驗證頁時,有 GUI 的主機會以有頭瀏覽器重試一次,可通過針對 headless Chrome 的檢查。見 Fetch 路由。
限制
反偵測僅止於啟動參數、stealth 腳本、捲動節奏與有頭降級,不保證通過所有防護:TLS 指紋、CAPTCHA 與行為評分都不在處理範圍內。