使用 Python 和 Selenium 解決 Cloudflare 驗證碼的問題
你知道嗎?大約 20% 你需要抓取的網站使用 Cloudflare,這是一個強大且不斷崛起的反機器人保護系統,可以輕松擊敗你的努力。如果你正在為 Cloudflare 驗證碼失敗而苦惱,你并不孤單。在每一秒都很重要的世界里,許多人因為驗證碼障礙而失去了寶貴的時間。但別擔心,在本文中,我們將告訴你如何在 2024 年解決 Cloudflare 驗證碼問題。我們將解釋什么是 Cloudflare 驗證碼、為什么它有時會失敗,并提供一種通過 Python 和 Selenium 克服這些障礙的有效解決方案。準備好了嗎?讓我們開始吧!
什么是 Cloudflare 驗證碼
Cloudflare 提供網絡工具,并提供一套全面的安全功能,以保護網站免受各種在線威脅。Cloudflare 驗證碼是一種用于區(qū)分人類用戶和自動化機器人的功能。它是 Cloudflare 安全服務的重要組成部分,旨在防御網站免受自動化攻擊和濫用。
Cloudflare 驗證碼的獨特功能
- 集成的安全解決方案:Cloudflare 的驗證碼服務通常作為其整體安全解決方案的一部分提供,包括 DDoS 保護、Web 應用防火墻 (WAF)、內容分發(fā)網絡 (CDN) 等。這使得網站可以從單個平臺獲得全面的安全保護。
- 智能流量管理:Cloudflare 利用其全球網絡和智能流量管理技術,通過在檢測到異常流量或潛在威脅時動態(tài)觸發(fā)驗證碼,更有效地保護網站。
- 無縫用戶體驗:Cloudflare 致力于通過減少對合法用戶的干擾來提供無縫的用戶體驗。例如,他們的“Turnstile”驗證碼旨在通過最少的用戶交互來驗證人類訪問者。
- 隱私:Cloudflare 強調隱私,致力于減少對用戶數據的依賴和收集,并提供更隱私友好的身份驗證方法。
是否在反復失敗解決令人討厭的驗證碼時苦惱?
發(fā)現無縫的自動驗證碼解決方案,使用 Capsolver AI 驅動的自動網絡解鎖技術!
領取你的 優(yōu)惠碼,獲取頂級驗證碼解決方案;CapSolver: WEBS。兌換后,每次充值可額外獲得 5% 獎金,無限次。
Cloudflare 如何檢測機器人?
1.Chromedriver 檢測
- 確定瀏覽器是否受自動化工具控制。
- 像 Chromedriver 這樣的自動化工具可以通過檢查特定的瀏覽器行為和屬性來檢測,這些行為和屬性是自動化腳本所特有的。例如,某些 JavaScript 變量或瀏覽器屬性可以揭示自動化工具的存在。此外,監(jiān)控交互的時間和模式可以幫助識別非人類行為。
2.設備指紋識別
如果相同的瀏覽器指紋用于大量訪問,可以識別為機器行為。需要使用不同的有效瀏覽器指紋信息來分配訪問。
設備指紋識別涉及收集用戶設備的各種屬性,如屏幕分辨率、安裝的字體、瀏覽器插件等。通過組合這些屬性,可以為每個設備創(chuàng)建一個唯一標識符(指紋)。在多個會話中重復使用相同的指紋可能表明自動化活動。為減輕這種情況,需要隨機化和變化指紋數據,使其更像人類。
3.IP 代理檢測
- 阻止惡意 IP 位置并限制請求頻率。
- IP 代理檢測涉及識別和阻止與惡意活動或高頻請求相關的 IP 地址。技術包括維護已知壞 IP 地址的黑名單,使用地理位置數據阻止可疑區(qū)域,并實施速率限制以防止單個 IP 地址發(fā)出過多請求。此外,分析 IP 地址的行為模式可以幫助區(qū)分合法用戶和自動化機器人。
4.瀏覽器真實性
- 檢查瀏覽器屬性和請求信息是否異常,例如,頭部中的 User-Agent 是否由 Python 代碼發(fā)出,以及 User-Agent 聲明的瀏覽器是否具有相應屬性。
5.JavaScript 挑戰(zhàn)
- 向用戶發(fā)送 JavaScript 代碼。通常,爬蟲沒有直接渲染 JS 的能力。通過其他手段模擬腳本執(zhí)行有相應的檢測方法。在代碼執(zhí)行期間,收集一系列設備信息,如 canvas、navigator、插件、Chrome 版本以及一系列物理硬件設備信息。這些設備信息被加密并由 Cloudflare 判斷其真實性。
6.Cookie
- 通過檢查 cf_clearance 的有效期,持續(xù)更新并跟蹤用戶行為是否異常。
7.TLS 指紋識別
- 瀏覽器通常使用 HTTP/2,但編程語言發(fā)出的請求大多默認使用 HTTP/1.1。此外,瀏覽器請求的 JA3 信息與編程語言的不同。
- TLS 指紋識別是一種用于識別和驗證 TLS(傳輸層安全)通信的技術。
- TLS 指紋可以通過檢查在 TLS 握手期間使用的密碼套件、協議版本和加密算法來確定 TLS 通信的特征。由于每個 TLS 實現使用不同的密碼套件、協議版本和加密算法,比較 TLS 指紋可以確定通信是否來自預期的源或目標。
- TLS 指紋識別可用于檢測網絡欺騙、中間人攻擊和間諜活動等安全威脅,還可用于識別和管理設備和應用程序。
如何繞過并解決 Cloudflare 驗證碼
1. CapSolver
有很多方法可以解決 Cloudflare 中的驗證碼,但最流行和高效的方法是使用第三方解決服務,你可以使用 CapSolver 來解決驗證碼。以下是基本步驟:
- 使用 CapSolver 獲取有效令牌,然后通過 TLS 請求庫正常訪問。
CapSolver 可以通過提供有效的 Cookie 和會話數據來幫助繞過各種檢測機制。一旦獲得這些憑證,就可以使用令牌正常發(fā)送請求。你需要使用 TLS 庫發(fā)送有效請求。這種方法確保請求看起來是真實的,不太可能被阻止或標記為可疑。
此外,使用 CapSolver 可以幫助你解決以下問題:
- IP 檢測:使用高質量代理繞過 IP 阻止和限制。
- JavaScript 挑戰(zhàn):像真實瀏覽器一樣執(zhí)行 JavaScript 代碼,確保正確處理挑戰(zhàn)。人機交互:根據挑戰(zhàn)執(zhí)行相應操作,模擬人類行為。
- 設備環(huán)境指紋識別:每次使用干凈有效的瀏覽器環(huán)境信息,通過真實性檢查。
以下是使用 Python 獲取 Cloudflare Turnstile 解決方案的示例代碼:
# pip install requests import requests import time api_key = "YOUR_API_KEY" # TODO: 你的 capsolver API 密鑰 site_key = "0x4XXXXXXXXXXXXXXXXX" # TODO: 目標網站的站點密鑰 site_url = "https://www.yourwebsite.com" # TODO: 目標網站的頁面 URL def capsolver(): payload = { "clientKey": api_key, "task": { "type": 'AntiTurnstileTaskProxyLess', "websiteKey": site_key, "websiteURL": site_url, "metadata": { "action": "" # 可選 } } } res = requests.post("https://api.capsolver.com/createTask", json=payload) resp = res.json() task_id = resp.get("taskId") if not task_id: print("創(chuàng)建任務失敗:", res.text) return print(f"獲取任務 ID: {task_id} / 獲取結果...") while True: time.sleep(1) # 延遲 payload = {"client```python Key": api_key, "taskId": task_id} res = requests.post("https://api.capsolver.com/getTaskResult", json=payload) resp = res.json() status = resp.get("status") if status == "ready": return resp.get("solution", {}).get('token') if status == "failed" or resp.get("errorId"): print("解決失?。№憫?", res.text) return token = capsolver() print(token)
2. Puppeteer、Selenium、Playwright
- 使用瀏覽器自動化工具來驅動網站訪問并檢索數據,這可以避免復雜的 JavaScript 檢測;然而,這些工具可能會被檢測到是由機器人控制的。
- 瀏覽器自動化工具如 Puppeteer、Selenium 和 Playwright 可以模擬用戶與網站的真實交互,包括處理 JavaScript 挑戰(zhàn)和渲染動態(tài)內容。雖然它們可以繞過一些檢測機制,但它們通常會留下可被反機器人系統識別的痕跡。通過隨機化鼠標移動、按鍵等互動,可以幫助減輕被檢測的風險。
3. Undetected Chromedriver
- 可以繞過一些機器人控制檢測。
undetected_chromedriver
是一個修改版的 Chromedriver,包含了避免被反機器人機制檢測的補丁。它可以通過模擬人類行為和修改瀏覽器屬性來處理各種形式的瀏覽器指紋識別和其他檢測技術。此工具特別適用于網絡抓取和自動化測試,其中標準 Chromedriver 會被阻止。
4. 使用 Python curl_cffi 解決 TLS 檢測
- 獲取有效的 Cookie 后,結合其他方法重復訪問網站。關鍵是要確保 TLS 請求連接有效地被掩蓋,否則數據訪問仍會受到限制。
結論
通過遵循這些步驟,你可以使用 Python 和 Selenium 以及 CapSolver 服務繞過并解決 Cloudflare 驗證碼。此方法確保你的自動化腳本可以順利運行而無需人工干預。然而,始終以道德方式使用這些技術,并遵守你所互動網站的服務條款。
到此這篇關于使用 Python 和 Selenium 解決 Cloudflare 驗證碼的文章就介紹到這了,更多相關Python 和 Selenium 解決 Cloudflare 驗證碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- python+selenium行為鏈登錄12306(滑動驗證碼滑塊)
- Python Selenium破解滑塊驗證碼最新版(GEETEST95%以上通過率)
- Python +Selenium解決圖片驗證碼登錄或注冊問題(推薦)
- Selenium+Python 自動化操控登錄界面實例(有簡單驗證碼圖片校驗)
- selenium+python實現1688網站驗證碼圖片的截取功能
- Python使用selenium實現網頁用戶名 密碼 驗證碼自動登錄功能
- Python Selenium Cookie 繞過驗證碼實現登錄示例代碼
- python+selenium識別驗證碼并登錄的示例代碼
- Python爬蟲selenium驗證之中文識別點選+圖片驗證碼案例(最新推薦)
相關文章
Python的json.loads() 方法與json.dumps()方法及使用小結
json.loads() 是一個非常有用的方法,它允許你在處理 JSON 數據時,將其轉換為 Python 數據類型,以便于在代碼中進行操作和處理,這篇文章給大家介紹Python的json.loads() 方法與json.dumps()方法及使用小結,感興趣的朋友一起看看吧2024-03-03編譯 pycaffe時報錯:fatal error: numpy/arrayobject.h沒有那個文件或目錄
這篇文章主要介紹了編譯 pycaffe時報錯:fatal error: numpy/arrayobject.h沒有那個文件或目錄,需要的朋友可以參考下2020-11-11python如何寫入dbf文件內容及創(chuàng)建dbf文件
這篇文章主要介紹了python如何寫入dbf文件內容及創(chuàng)建dbf文件,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08