PowerScan
TC

為什麼每個網站都跳出 CAPTCHA?成因與解決方法

多帳號經營 · 閱讀約 9 分鐘 · 作者:PowerOps

圖片:Unsplash

一直遇到 CAPTCHA,幾乎都能追溯到網路路徑、瀏覽器設定,或兩者彼此矛盾。依常見程度列出成因,並附上對應的解法。

不斷出現 CAPTCHA,通常只代表一件事:你連上網站的方式看起來像機器,或像一群人共用同一扇門,於是網站提高了進入的門檻,直到取得更明確的訊號為止。驗證只是症狀,成因藏在你的網路路徑、你的瀏覽器設定,或是這兩者向網站述說了不同的故事。

請依下列順序逐一排查。前三項遠比其他原因常見,而且都出在同一個地方:你的流量所來自的位址。

先從位址查起,因為通常就是它

位址是共用的,或有過不良紀錄

多數連線並不會給你專屬的位址。行動網路業者和許多家用寬頻業者,會讓大量用戶躲在一小批公開位址後面。辦公室、校園與共享辦公空間也是如此。這個位址背後的任何人今天早上做了什麼,你下午就得跟著承受。

廉價的代理池更是如此,而且勝算更低。共用的住宅代理池會把同一個位址租給當下任何購買的人,如果網站稍早曾在該位址看到一波登入嘗試,對下一次來自它的連線自然會格外謹慎。

解法是先弄清楚自己實際呈現的位址是什麼,然後親自測試,而不是相信賣家的說明。在 PowerOps 中,代理會先加入代理庫並完成測試,才會用到任何帳號上,測試結果會回報實際觀察到的位址。如果發現路徑是共用的,就把設定檔換到不共用的路徑上。

它是資料中心位址

屬於主機代管業者的位址範圍是公開、有編目、而且很容易查到的。資料中心位址本身沒有問題,許多正常流量也來自這類位址。但對於已登入的一般消費者帳號來說,從這裡連線並不常見,網站也會據此給予相應的權重。

解法是把資料中心位址留給不需要個人登入的工作,帳號工作階段則使用住宅或行動網路位址。成本會上升,阻力會下降,整個取捨就在這裡。

你使用的是人人都在用的 VPN 出口

一般消費型 VPN 會把大量使用者集中到少數幾個出口位址。這正是產品設計的運作方式,也是為什麼躲在其中的工作階段會遇到其他地方遇不到的驗證。並不是你做了什麼讓這個位址受到審視,而是龐大的流量本身造成的。

解法是為每個設定檔配置專屬路徑,並向提供固定位址的業者購買。如果你因為其他用途需要 VPN,請不要讓它出現在處理帳號工作的機器或設定檔上,也絕不要把它疊在代理之上。

位址在工作階段中途改變

輪換式端點會在每次請求或每隔一段時間給你一個新位址。這對收集公開資料很有用,但對已登入的工作階段來說,卻是你自己製造的麻煩。一個工作階段從某個城市開始,幾分鐘後又從另一個城市繼續,描述的是沒有任何人類會做出的行為。

這種成因有明顯的特徵:最初幾分鐘一切正常,接著每次換頁都出現驗證,中途往往還會突然被登出。

解法是把端點切換成固定或工作階段持續模式,保留時間要比你的工作時段更長。請在第一次登入之前就指派好路徑,因為第一次工作階段會為該帳號建立「正常」的基準。

接著檢查瀏覽器講的故事是否一致

時區、語言與位址互相矛盾

一個經由法蘭克福連線的設定檔,卻回報洛杉磯時區,等於用兩種方式回答了同一個問題。同樣地,呈現巴西位址、瀏覽器語言清單卻只有越南文,也是如此。單獨來看,這些值都不特別,但合在一起,就是網站最容易檢查的矛盾。

解法是讓設定檔的時區與語言清單與路徑所在的國家一致,並且在每次更換路徑後一併檢查。這是清單上最常見、由自己造成的原因,而且大約十秒鐘就能修正。

請求節奏看起來像自動化

頁面以剛好四秒的間隔載入。表單瞬間填完,中間沒有任何焦點事件。瀏覽時完全沒有捲動。十幾個設定檔在同一秒、從同一個子網路做完全相同的事。這些都不是被禁止的,但全都不尋常,而不尋常正是提高進入門檻的原因。

解法是控制節奏。錯開設定檔的啟動時間,而不是一次全部啟動。為腳本工作加入隨機的延遲,讓頁面穩定後再執行下一個動作。把批次拆小。如果腳本在網站間移動的速度比人快,網站有權問對面到底是誰。

然後看看瀏覽器保留了什麼、封鎖了什麼

Cookie 過期、遺失,或每晚被清掉

多數驗證會記錄自己的結果。通過一次後,網站會儲存一筆資料,表示這個瀏覽器已經回答過了,之後一段時間就不會再出現驗證。如果你每次結束都清除 Cookie、使用無痕視窗瀏覽,或每次都建立全新的暫時設定檔,這筆紀錄就會在每次工作階段結束時被丟棄,下次造訪又得從頭開始。

解法是使用擁有專屬持久目錄的設定檔,並且正常關閉,讓狀態確實寫入。工作階段中途被強制結束的設定檔,可能連剛剛賺到的那筆紀錄都會遺失。

有東西封鎖了驗證所需的腳本

驗證是以腳本形式執行的,通常從屬於安全服務供應商的網域載入,而不是你造訪的網站。強力的內容封鎖器、腳本封鎖器、強化隱私的擴充功能,以及停用第三方儲存空間,都可能讓載入失敗。驗證永遠無法完成,於是不斷重試。從你這邊看來,就像是無限迴圈,或是一個一直轉圈卻永遠不會結束的驗證框。

請依序處理:

  1. 在完全沒有擴充功能的設定檔中開啟同一個頁面。如果迴圈消失,原因就是某個擴充功能。
  2. 逐一重新啟用擴充功能,直到問題再次出現。內容封鎖器與隱私強化工具是最常見的元凶。
  3. 在封鎖它的工具中允許驗證服務商的網域,而不是整個關閉封鎖器。
  4. 確認該網站沒有停用 JavaScript 與第三方儲存空間。
  5. 檢查系統時鐘。時鐘相差幾分鐘就會破壞驗證所依賴的簽章權杖,而且這種失敗看起來完全不像時鐘問題。

從症狀對應到成因

把你看到的情況與左欄對照,再從右欄的解法開始嘗試。

你看到的情況最可能的成因先嘗試的做法
每個網站、每個設定檔,從第一個請求就出現驗證位址本身:共用、繁忙,或屬於資料中心位址空間測試路徑,並查出該位址的歸屬
只有一個設定檔受影響,其他都正常該設定檔的路徑,或其儲存的狀態先換成確定良好的路徑,再改其他設定
前幾分鐘正常,之後每次換頁都出現驗證輪換式端點在工作階段中途改變位址將端點切換成保留時間較長的固定模式
通過驗證後,同樣的驗證立刻又出現通過紀錄沒有被儲存,或必要的腳本被封鎖停止在結束時清除 Cookie,然後關閉擴充功能再試一次
驗證框一直轉圈,永遠無法完成封鎖器阻止驗證腳本載入允許該服務商的網域,然後檢查系統時鐘
登入前網站就以錯誤的語言載入地區設定與路徑不一致讓設定檔的語言與時區符合路徑所在的國家
剛更換代理就開始發生新端點本身的不良紀錄測試該端點,並請供應商提供另一個
剛好在擴充功能更新後開始發生該擴充功能在該網站停用它,然後重新載入

不要這樣做

有幾種反射動作一定會讓情況更糟。

還有一件我們不會協助的事。自動解開這些驗證不在 PowerOps 的範圍內,也超出本部落格願意說明的範圍。市面上確實有販售這類服務,但我們不整合、不寫文件,產品中的任何功能也都不是為了繞過安全驗證而設計。上述一切都是在消除網站一開始就要詢問你的理由。代替你回答問題是另一門生意,我們不做這個。

如果都沒有用

有時候,驗證與你完全無關。遭受攻擊的網站會對所有人提高門檻,整個國家的流量可能會在一兩天內被套用更嚴格的規則。在花一整個下午處理之前,請先用沒有代理、也沒有設定檔的一般連線載入同一個頁面。如果驗證同樣在那裡等著你,答案就是等待。

其餘時候,問題都歸結為一份簡短的清單:一條有不良紀錄的路徑、一條無法保持穩定的路徑、彼此矛盾的值,以及一個留不住自己所賺得紀錄的瀏覽器。把這四點修好,驗證就會回到偶爾出現的小麻煩,而不再是你工作日的常態。

所有文章 · 開始掃描