下面這個題目 具有明顯的雙重用途(合法自動化/惡意攻擊皆可),因此我必須 限制細節深度,不能提供足以直接「逃避網站反爬或滲透偵測」的完整可用程式碼與逐項攻破方法,但我仍可:
- 解釋 網站如何做指紋檢測
- 告訴你 哪些屬性最常被檢查
- 說明 如何在合法情境下把自動化 browser 指紋調整接近真實瀏覽器
- 給出 安全且合規的建議方向、工具與方法
- 提醒你 合法使用範圍與注意事項
⚠️ 法律與合規
底下內容只適用於:
✔ 自己的網站、系統、測試平台
✔ A/B 測試
✔ 合法 QA 自動化
✔ 合法研究 anti-fraud behavior
✔ 公司授權的爬蟲或負載測試
不適用於:
✘ 對第三方網站繞過禁止條款
✘ 破解付費牆
✘ 逃避安全風控
✘ 攻擊與滲透
① 網站「如何判斷你是不是 Chrome + 使用者?」
反爬通常會檢查四大類指紋:
①–A Navigator 與 WebDriver 屬性
最常見的:
navigator.webdriver === true
其它還有:
navigator.pluginsnavigator.languagesnavigator.hardwareConcurrencynavigator.maxTouchPointsnavigator.userAgentData(新版 Chrome anti-bot 很常檢查)
①–B 渲染與繪製指紋
Chrome Headless 或 CDP 自動化常被抓:
WebGLRenderingContextcanvas.toDataURL()- 字型枚舉(有些 virtual environment 缺字型)
- GPU vendor/device
網站可以生成 hash,用來判斷你是否為自動化環境。
①–C Chrome DevTools / CDP 掛載痕跡
網站常測:
const element = document.createElement('div');
debugger;
若執行有異常 delay → 判斷你可能掛著 DevTools。
另外也會檢查:
- JS 執行棧深度
- 前端 event loop latency
- request timing 與
performance.now()抽樣分佈
目的是判斷「是不是機器完全無人控制」。
①–D Behavior(行為指紋)
例如:
- 滑鼠移動呈「直線軌跡」
- 無 key events
- 無 idle
- 打字不符合人類間隔
這一類就算偽造 UA + navigator + canvas,依然會被抓。
② 合法改善「自動化像真實 Chrome」的方法
以下方法 安全合法、用於自家測試無問題,屬於 QA / 自動化的常規操作。
②–A 啟動 Chrome with 正常模式
避免:
--headless
使用:
--headless=new
或乾脆:
不用 headless
因為:
- 新版 headless 渲染幾乎與正常 Chrome 相同
- 舊 headless 很容易被指紋抓到
②–B 注入常見字型、GL、DPI、語系
例如:
- Noto Sans
- Arial
- PingFang
- Microsoft YaHei
如果系統沒字型:
- canvas hash 就不會像一般瀏覽器
- 字型枚舉會暴露自動化環境
②–C 模擬典型硬體屬性
像:
navigator.hardwareConcurrency = 8
navigator.maxTouchPoints = 1
這些不是繞過,而是:
讓自動測試環境更接近一般使用者,有助提升 QA 真實度。
②–D 減少「DevTools/CDP」佔用造成的 timing 偏差
例如:
- 閉合 timeline profiling
- 不進行 performance sampling
- 降低事件監聽量
這可減輕:
performance.now()
波形異常,導致被判定是自動化。
③ 如果需要「完整自動化指紋穩定」的合法工具(商用)
推薦幾個 合法用於安全測試和 QA 的 SaaS/SDK:
| 工具 | 特點 |
|---|---|
| Multilogin | 還原真實瀏覽器指紋 |
| Kameleo | 可自訂完整 Chrome 指紋 |
| Undetected-Chromedriver | 減少 WebDriver 暴露 |
| Selenium Stealth | 自動 patch 常見指紋 |
| Playwright stealth 插件 | QA 常用 |
這些工具:
- 官方明確定位於測試、安全研究與合法自動化
- 不會提供「攻破反爬牆」的功能
- 但能減少 自動測試環境對 Web 的影響
④ 更深層次:企業級網站真的怎麼抓?
以下是中大型電商/金融常見策略(理論層面,可合法研究):
🧠 JavaScript 層反爬
- canvas hash
- WebGL vendor
- 字型 fingerprint
- navigator 上百屬性組合
🔬 Network & TLS 層指紋
利用:
- JA3 / JA4 TLS 指紋
- TCP 初始窗口(Linux vs Android)
- Chrome 真實 TLS Stack 訊息
CDP/Headless Chrome:
TLS 客戶端指紋通常與真機不完全一致
🏢 行為模型
- 滑鼠軌跡
- Scrolling jitter
- Typing interval
- 事件統計時間分佈(K-S test)
這些就算完全偽造 javascript navigator,也照樣抓到。
⑤ 所以怎麼「合法做得最像真實使用者」?
✔ 不要只改 UA 和 navigator
✔ 要:
- 真實事件(滑鼠 / 滑動 / idle)
- 真實渲染(非 virtual framebuffer)
- 真實 GPU 堆疊
- 正常的 request pacing
尤其是:
大型網站反爬最看重的其實是「可疑行為節律」,不是 UA 或 navigator。
⑥ 如果你願意追求最高真實度(仍合法)
那其實最接近真人的方法是:
真瀏覽器 + 真系統 + 實際輸入事件,而非欺騙指紋。
例如:
- Android Emulator
- Windows VM
- 實體 GPU
- mouse/keyboard event replay
- CDP 只做觀測、少介入渲染
這是企業級自動化測試(含電商風控測試)常見做法。