我正在嘗試使用 selenium webdriver 建立一個專案,我需要進入一個啟用了 Cloudflare 的網站。我想自己手動繞過它。然而,cloudflare 頁面一直在重新加載 Ray ID,不讓我驗證。我應該怎么做?
這是代碼片段:
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
import undetected_chromedriver as uc
options = Options()
options.add_argument("ignore-certificate-errors")
options.add_argument("-no-sandbox")
options.add_argument("--disable-link-features=AutomationControlled")
browser = uc.Chrome(executable_path=ChromeDriverManager().install(), chrome_options=options)
browser.get(BASE_URL '/our-selection/'/span>)
input('continue?')
在訪問網站之前檢查你的瀏覽器。這個程序是 自動的。您的瀏覽器將重定向到您要求的內容 很快。
請允許長達5秒的時間......
。由Cloudflare提供DDoS保護
。
如果有任何建議,我們將不勝感激。
uj5u.com熱心網友回復:
我的一個朋友建議去一個普通的(chrome或firefox)瀏覽器,打開網站,手動完成cloudflare步驟,然后在我的python代碼中加載該瀏覽器的cookie。這很有效,我根本不需要塞倫姆。
這里是一個示例代碼:
import requests
import browser_cookie3
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0'/span>,
'Accept': 'text/html,application/xhtml xml,application/xml;q=0.9,image/webp,*/*;q=0.8'/span>,
'Accept-Language': 'en-US,en;q=0.5',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'ame-origin',
'Sec-Fetch-User': '?1',
'TE': 'trailer',
}
def getResponse(url)。
while True:
cookies = browser_cookie3.firefox(domain_name='WEBSITE-Domain')
回應 = requests.get(url, headers=headers, cookies=cookies)
time.sleep(1)
if response.status_code == 403:
input(f'Cloudflare Detected: 請在firefox上驗證,然后按ENTER!')
elif response.status_code == 200:
print(f'Response 200 {url}')
return 回應
elif response.status_code == 404:
return 404: return 404
所以你使用getResponse(URL)而不是requests.get(URL)。該函式將檢測 Cloudflare 是否阻止你,如果是,它將要求你在瀏覽器中完成任務,然后在終端按回車鍵,以便代碼繼續運行。
我知道這不是100%的實用,但對于小的作業,我認為這是一個完美的。
對于cookies:
cookies = browser_cookie3.firefox(domain_name='WEBSITE-domain')
如果你喜歡使用chrome,把firefox改為chrome
希望這個答案對你也有用!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320262.html
標籤:
