Heroku에서 호스팅 될 때 Selenium 앱이 Cloudflare 페이지로 리디렉션 됨
셀레늄을 사용하여 웹 사이트에 액세스하고 정보를 얻는 불일치 봇을 만들었습니다. 로컬에서 코드를 실행하면 문제가 없지만 Heroku에 배포하면 첫 번째 URL이 페이지로 리디렉션됩니다 Attention Required! | Cloudflare
.
나는 시도했다 :
- Selenium webdriver : 셀레늄 감지를 방지하기 위해 navigator.webdriver 플래그 수정
그리고 내가 사용하는 것과 동일한 설정을 가진 다른 많은 것 :
options = Options()
options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
options.add_experimental_option("excludeSwitches", ["enable-logging", "enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--headless")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--no-sandbox")
self.driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), options=options)
self.driver.execute_cdp_cmd('Network.setUserAgentOverride', {
"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
하지만 이것은 작동하지 않으며 코드는 로컬에서만 실행됩니다.
추신 : 로컬에서 Windows에 있습니다.
리디렉션되는 페이지의 소스 : https://gist.github.com/rafalou38/9ae95bd66e86d2171fc8a45cebd9720c

답변
경우에 셀레늄 구동 ChromeDriver는 시작 - 크롬 구글 브라우징 문맥이 페이지로 리디렉션지고 ...

... 이것은 Cloudflare 프로그램이 프로그램이 AUT (Application under Test)에 액세스하는 것을 차단 하고 있음을 의미합니다 .
분석
Cloudflare 가 액세스를 차단하는 데는 다음과 같은 몇 가지 이유가있을 수 있습니다 .
- Cloudflare 가 프로그램을 봇으로 식별 했으며 액세스가 거부되었습니다. chromedriver와 함께 셀레늄을 사용할 때 웹 사이트에서 감지 할 수 있습니까? 에서 자세한 설명을 찾을 수 있습니다 . .
다음 요인으로 인해 액세스가 거부 될 수 있습니다.
- Cloudflare 는 가능한 사전 공격 에 대응하려고합니다 .
- 귀하의 시스템 IP는 귀하의 시스템을 사용하여 비트 코인 또는 Monero 코인 을 채굴 하기 위해 Cloudflare 에 의해 검은 색으로 나열됩니다 .
이러한 경우 결국에는 보안 문자 페이지 로 리디렉션됩니다 .
해결책
이 경우 잠재적 인 해결책은 undetected-chromedriver 를 사용 하여 Chrome Browsing Context 를 초기화하는 것 입니다.
undetected-chromedriver 는 최적화 된 Selenium Chromedriver 패치로 Distill Network / Imperva / DataDome / Botprotect.io와 같은 안티 봇 서비스를 트리거하지 않습니다. 드라이버 바이너리를 자동으로 다운로드하고 패치합니다.
코드 블록 :
import undetected_chromedriver as uc from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("start-maximized") driver = uc.Chrome(options=options) driver.get('https://bet365.com')
대체 솔루션
대체 솔루션은 Project Honey Pot 웹 사이트를 통해 IP 주소를 화이트리스트 에 추가하는 것이며, Attention Required 한 단계 더 보안 문자 CloudFlare Error 라는 제목의 비디오에서 자세히 설명 된 종단 간 프로세스를 찾을 수 있습니다 .