01什么是 Cloudflare 驗證碼
Cloudflare 提供網(wǎng)絡(luò)工具,并提供一套全面的安全功能,以保護網(wǎng)站免受各種在線威脅。Cloudflare 驗證碼是一種用于區(qū)分人類用戶和自動化機器人的功能。它是 Cloudflare 安全服務(wù)的重要組成部分,旨在防御網(wǎng)站免受自動化攻擊和濫用。

Cloudflare 驗證碼的獨特功能
集成的安全解決方案:
Cloudflare 的驗證碼服務(wù)通常作為其整體安全解決方案的一部分提供,包括DDoS 保護、Web 應(yīng)用防火墻 (WAF)、內(nèi)容分發(fā)網(wǎng)絡(luò) (CDN)等。這使得網(wǎng)站可以從單個平臺獲得全面的安全保護。
智能流量管理:
Cloudflare 利用其全球網(wǎng)絡(luò)和智能流量管理技術(shù),通過在檢測到異常流量或潛在威脅時動態(tài)觸發(fā)驗證碼,更有效地保護網(wǎng)站。
無縫用戶體驗:
Cloudflare 致力于通過減少對合法用戶的干擾來提供無縫的用戶體驗。例如他們的“Turnstile”驗證碼旨在通過最少的用戶交互來驗證人類訪問者。
隱私:
Cloudflare 強調(diào)隱私,致力于減少對用戶數(shù)據(jù)的依賴和收集,并提供更隱私友好的身份驗證方法。
02Cloudflare 如何檢測機器人
Chromedriver 檢測
確定瀏覽器是否受自動化工具控制。
像 Chromedriver 這樣的自動化工具可以通過檢查特定的瀏覽器行為和屬性來檢測,這些行為和屬性是自動化腳本所特有的。例如,某些 JavaScript 變量或瀏覽器屬性可以揭示自動化工具的存在。此外,監(jiān)控交互的時間和模式可以幫助識別非人類行為。
設(shè)備指紋識別
如果相同的瀏覽器指紋用于大量訪問,可以識別為機器行為。需要使用不同的有效瀏覽器指紋信息來分配訪問。
設(shè)備指紋識別涉及收集用戶設(shè)備的各種屬性,如屏幕分辨率、安裝的字體、瀏覽器插件等。通過組合這些屬性,可以為每個設(shè)備創(chuàng)建一個唯一標識符(指紋)。在多個會話中重復(fù)使用相同的指紋可能表明自動化活動。為減輕這種情況,需要隨機化和變化指紋數(shù)據(jù),使其更像人類。
IP 代理檢測
阻止惡意 IP 位置并限制請求頻率。
IP 代理檢測涉及識別和阻止與惡意活動或高頻請求相關(guān)的 IP 地址。技術(shù)包括維護已知壞 IP 地址的黑名單,使用地理位置數(shù)據(jù)阻止可疑區(qū)域,并實施速率限制以防止單個 IP 地址發(fā)出過多請求。此外,分析 IP 地址的行為模式可以幫助區(qū)分合法用戶和自動化機器人。
瀏覽器真實性
檢查瀏覽器屬性和請求信息是否異常,例如,頭部中的User-Agent是否由 Python 代碼發(fā)出,以及User-Agent聲明的瀏覽器是否具有相應(yīng)屬性。
JavaScript 挑戰(zhàn)
向用戶發(fā)送 JavaScript 代碼。通常,爬蟲沒有直接渲染 JS 的能力。通過其他手段模擬腳本執(zhí)行有相應(yīng)的檢測方法。在代碼執(zhí)行期間,收集一系列設(shè)備信息,如 canvas、navigator、插件、Chrome 版本以及一系列物理硬件設(shè)備信息。這些設(shè)備信息被加密并由 Cloudflare 判斷其真實性。
Cookie
通過檢查cf_clearance的有效期,持續(xù)更新并跟蹤用戶行為是否異常。
TLS 指紋識別
瀏覽器通常使用 HTTP/2,但編程語言發(fā)出的請求大多默認使用 HTTP/1.1。此外,瀏覽器請求的 JA3 信息與編程語言的不同。
TLS 指紋識別是一種用于識別和驗證 TLS(傳輸層安全)通信的技術(shù)。
TLS 指紋可以通過檢查在 TLS 握手期間使用的密碼套件、協(xié)議版本和加密算法來確定 TLS 通信的特征。由于每個 TLS 實現(xiàn)使用不同的密碼套件、協(xié)議版本和加密算法,比較 TLS 指紋可以確定通信是否來自預(yù)期的源或目標。
TLS 指紋識別可用于檢測網(wǎng)絡(luò)欺騙、中間人攻擊和間諜活動等安全威脅,還可用于識別和管理設(shè)備和應(yīng)用程序。
03如何繞過并解決 Cloudflare 驗證碼
1. CapSolver
有很多方法可以解決 Cloudflare 中的驗證碼,但最流行和高效的方法是使用第三方解決服務(wù),你可以使用 CapSolver 來解決驗證碼。以下是基本步驟:
使用 CapSolver 獲取有效令牌,然后通過 TLS 請求庫正常訪問。
CapSolver 可以通過提供有效的 Cookie 和會話數(shù)據(jù)來幫助繞過各種檢測機制。一旦獲得這些憑證,就可以使用令牌正常發(fā)送請求。你需要使用 TLS 庫發(fā)送有效請求。這種方法確保請求看起來是真實的,不太可能被阻止或標記為可疑。
此外,使用 CapSolver 可以幫助你解決以下問題:
IP 檢測:使用高質(zhì)量代理繞過 IP 阻止和限制。
JavaScript 挑戰(zhàn):像真實瀏覽器一樣執(zhí)行 JavaScript 代碼,確保正確處理挑戰(zhàn)。
人機交互:根據(jù)挑戰(zhàn)執(zhí)行相應(yīng)操作,模擬人類行為。
設(shè)備環(huán)境指紋識別:每次使用干凈有效的瀏覽器環(huán)境信息,通過真實性檢查。
以下是使用 Python 獲取 Cloudflare Turnstile 解決方案的示例代碼:

2. Puppeteer、Selenium、Playwright
使用瀏覽器自動化工具來驅(qū)動網(wǎng)站訪問并檢索數(shù)據(jù),這可以避免復(fù)雜的 JavaScript 檢測;然而,這些工具可能會被檢測到是由機器人控制的。
瀏覽器自動化工具如 Puppeteer、Selenium 和 Playwright可以模擬用戶與網(wǎng)站的真實交互,包括處理 JavaScript 挑戰(zhàn)和渲染動態(tài)內(nèi)容。雖然它們可以繞過一些檢測機制,但它們通常會留下可被反機器人系統(tǒng)識別的痕跡。通過隨機化鼠標移動、按鍵等互動,可以幫助減輕被檢測的風(fēng)險。
3. Undetected Chromedriver
可以繞過一些機器人控制檢測。
undetected_chromedriver是一個修改版的 Chromedriver,包含了避免被反機器人機制檢測的補丁。它可以通過模擬人類行為和修改瀏覽器屬性來處理各種形式的瀏覽器指紋識別和其他檢測技術(shù)。此工具特別適用于網(wǎng)絡(luò)抓取和自動化測試,其中標準 Chromedriver 會被阻止。
4. 使用 Python curl_cffi 解決 TLS 檢測
獲取有效的 Cookie 后,結(jié)合其他方法重復(fù)訪問網(wǎng)站。關(guān)鍵是要確保 TLS 請求連接有效地被掩蓋,否則數(shù)據(jù)訪問仍會受到限制。
04結(jié)論
通過遵循這些步驟,你可以使用 Python 和 Selenium 以及 CapSolver 服務(wù)繞過并解決 Cloudflare 驗證碼。此方法確保你的自動化腳本可以順利運行而無需人工干預(yù)。然而,始終以道德方式使用這些技術(shù),并遵守你所互動網(wǎng)站的服務(wù)條款。
-
自動化測試
+關(guān)注
關(guān)注
0文章
268瀏覽量
27785 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
8249瀏覽量
94660 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90012
發(fā)布評論請先 登錄
【上?!揩C頭推薦職位-自動化測試工程師(java/python)
如何在Python中使用Selenium
打碼平臺是如何高效的破解市面上各家驗證碼平臺的各種形式驗證碼的?
多樣變換的手寫驗證碼自動識別算法
簡單地描述了如何用機器學(xué)習(xí)繞過E-ZPass New York網(wǎng)站的驗證碼
以一個真實網(wǎng)站的驗證碼為例,實現(xiàn)了基于一下KNN的驗證碼識別
如何使用Python機器學(xué)習(xí)解決驗證碼的資料說明
驗證碼層出不窮?試試這個自動跳過驗證碼的工具
驗證碼太麻煩,自動跳過驗證碼神器試一試
Selenium2 Python自動化測試實戰(zhàn)第二版的PDF電子書免費下載
云測試自動化中的Python
Selenium在自動化中有何用處
分享10個實用的Python自動化腳本
Java 中驗證碼的使用
自動化測試如何繞過Cloudflare驗證碼?Python + Selenium 腳本實戰(zhàn)指南!
評論