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