Selenium과 2Captcha로 Cloudflare Turnstile 우회하는 방법



Selenium과 2Captcha로 Cloudflare Turnstile 우회하는 방법

웹 스크래핑을 진행할 때, Cloudflare Turnstile 캡차에 의해 데이터 수집이 차단되는 경우가 많습니다. 이 글에서는 Selenium과 2Captcha API를 활용하여 Cloudflare 캡차를 우회하고 웹페이지에 자동으로 접속하는 방법을 설명합니다. 또한, 성공적으로 접속한 후 을 저장하는 방법도 다룰 예정입니다.

 

👉 ✅ 상세 정보 바로 확인 👈

 

개요

Cloudflare Turnstile은 자동화된 요청을 차단하기 위해 캡차를 사용합니다. API가 제공되지 않는 웹사이트의 경우, 웹 크롤링을 통해 데이터를 수집해야 하지만 Turnstile이 이를 방해할 수 있습니다. 이 과정에서 Selenium을 사용하여 브라우저를 자동으로 제어하고, 2Captcha를 이용해 캡차를 해결하는 방법을 알아보겠습니다.



 

👉 ✅ 상세 정보 바로 확인 👈

 

API Key 준비

2Captcha의 웹사이트에 가입하여 API 키를 발급받습니다. Cloudflare Turnstile의 캡차는 1,000건당 약 $1.45의 비용이 발생하며, 이는 상대적으로 저렴한 편입니다. 회원 가입 후, API 사용을 위해 충전을 해야 하며, 개인적으로 Worker로 등록하면 수익을 통해 요금을 충당할 수 있습니다. API 키를 발급받고, 이를 통해 캡차를 해결하는 준비를 마칩니다.

개발 환경 설정

필요한 라이브러리 설치

Python 환경에서 다음 패키지를 설치합니다.

bash
pip install selenium 2captcha-python

  • selenium: 브라우저 자동화를 위한 라이브러리입니다.
  • 2captcha-python: 2Captcha API를 통해 캡차를 풀기 위한 라이브러리입니다.

또한, Chrome WebDriver를 설치하고, Chrome 버전에 맞춰 환경 변수를 설정해야 합니다.

API 키 설정

config.json 파일을 생성하고, 다음과 같이 API 키를 입력합니다.

json
{
"2captcha_api_key": "여기에_본인의_2captcha_API_키를_입력"
}

전체 코드 및 설명

전체 코드를 살펴보며, 각 단계별로 설명하겠습니다.

“`python
import os
import time
import json
import re
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from twocaptcha import TwoCaptcha

CONFIGURATION

with open(“config.json”, “r”) as config_file:
config = json.load(config_file)

apikey = config[“2captcha_api_key”]
url = “https://2captcha.com/demo/cloudflare-turnstile-challenge”

INTERCEPT SCRIPT

intercept_script = “””
console.clear = () => console.log(‘Console was cleared’)
const i = setInterval(()=>{
if (window.turnstile)
console.log(‘success!!’)
{clearInterval(i)
window.turnstile.render = (a,b) => {
let params = {
sitekey: b.sitekey,
pageurl: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action,
userAgent: navigator.userAgent,
}
console.log(‘intercepted-params:’ + JSON.stringify(params))
window.cfCallback = b.callback
return
}
}
},50)
“””

ACTIONS

def get_captcha_params(script):
# … (중략) …
return params

def solver_captcha(apikey, params):
# … (중략) …
return result[‘code’]

def send_token_callback(token):
# … (중략) …

def save_page_():
# … (중략) …

LOCATORS

locator = “//p[contains(@class,’successMessage’)]”

def check_success():
# … (중략) …

MAIN LOGIC

chrome_options = Options()
chrome_options.add_argument(“user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (K, like Gecko) ”
“Chrome/126.0.0.0 Safari/537.36”)
chrome_options.set_capability(“goog:loggingPrefs”, {“browser”: “INFO”})

with webdriver.Chrome(service=Service(), options=chrome_options) as browser:
browser.get(url)
params = get_captcha_params(intercept_script)

if params:
    token = solver_captcha(apikey, params)

    if token:
        send_token_callback(token)
        time.sleep(5)  # 페이지가 로드될 시간을 줌
        check_success()

“`

위 코드는 웹사이트에 접속하고, Turnstile 캡차의 파라미터를 인터셉트한 후, 2Captcha API를 통해 캡차를 풀고, 브라우저에서 정상적으로 페이지를 로드하는 과정을 포함합니다.

자주 묻는 질문

질문1: Cloudflare Turnstile 우회를 위한 기본 요구 사항은 무엇인가요?

Cloudflare Turnstile을 우회하기 위해서는 Selenium과 2Captcha API 키가 필요합니다.

질문2: 2Captcha의 비용은 어떻게 되나요?

Cloudflare Turnstile의 캡차는 1,000건당 약 $1.45의 비용이 발생합니다.

질문3: Selenium을 사용하는 이유는 무엇인가요?

Selenium은 브라우저 자동화를 통해 웹페이지에 직접 접속하고, JavaScript를 실행하여 필요한 데이터를 수집할 수 있습니다.

질문4: API 키는 어떻게 발급받나요?

2Captcha 웹사이트에 가입한 후, 관리 페이지에서 API 키를 발급받을 수 있습니다.

질문5: 캡차를 풀기 위해 필요한 라이브러리는 무엇인가요?

Python 환경에서 selenium2captcha-python 라이브러리를 설치해야 합니다.

질문6: 코드에서 어떤 부분을 수정해야 하나요?

웹사이트 주소와 성공 여부를 확인할 때 사용할 CSS 선택자를 웹사이트에 맞게 수정해야 합니다.

이전 글: 현대카드 슈퍼매치 14 티켓팅을 위한 공식 사이트 방문 가이드