티스토리 뷰

반응형

🚀 파이썬으로 웹사이트 접근 시 차단 우회 방법

일부 웹사이트는 자동화된 크롤링을 감지하고 차단합니다. 하지만 Selenium, requests, 프록시(proxy), User-Agent, 헤더 조작 등의 기법을 활용하면 이러한 차단을 우회할 수 있습니다.


1. 웹사이트 차단 방식 및 우회 기법

웹사이트는 다양한 방법으로 크롤러를 감지하고 차단합니다. 이를 우회하는 다양한 방법을 소개합니다.

차단 방식 설명 우회 방법

robots.txt 차단 크롤링이 허용되지 않은 페이지 지정 robots.txt 확인 후 우회
User-Agent 차단 봇의 User-Agent를 감지하여 차단 User-Agent 변경
IP 차단 동일한 IP에서 반복 요청 시 차단 프록시 서버 이용
로그인 필요 인증 없이 접근할 수 없음 Selenium으로 로그인 유지
JavaScript 렌더링 데이터가 JS로 로드됨 Selenium 이용
reCAPTCHA 봇인지 확인하는 CAPTCHA 사용 AI OCR 또는 2Captcha 활용

2. 기본적인 차단 우회 방법

🔹 (1) User-Agent 변경

웹사이트는 브라우저의 User-Agent를 확인하여 봇을 감지합니다.
이를 우회하려면 일반적인 브라우저 User-Agent를 설정해야 합니다.

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}

url = "https://example.com"
response = requests.get(url, headers=headers)

print(response.text)

🟢 Tip:


🔹 (2) 프록시 서버 사용 (IP 차단 우회)

웹사이트는 같은 IP에서 반복 요청이 발생하면 차단할 수 있습니다.
이럴 때는 **프록시 서버(proxy)**를 이용하면 새로운 IP로 요청을 보낼 수 있습니다.

proxies = {
    "http": "http://123.45.67.89:8080",
    "https": "https://123.45.67.89:8080"
}

response = requests.get("https://example.com", proxies=proxies)

print(response.text)

📌 무료 프록시 서버 목록 확인 사이트

🟢 Tip:

  • 무료 프록시는 속도가 느리거나 금방 차단될 수 있음.
  • VPN 또는 **유료 프록시(Rotating Proxy)**를 사용하면 더 안정적.

🔹 (3) IP 회피 (Tor 네트워크 활용)

Tor 네트워크를 사용하면 IP를 계속 변경하면서 크롤링할 수 있습니다.

pip install requests[socks]
import requests

proxies = {
    "http": "socks5h://127.0.0.1:9150",
    "https": "socks5h://127.0.0.1:9150"
}

response = requests.get("https://check.torproject.org/", proxies=proxies)
print(response.text)

🟢 Tip:

  • Tor를 사용하려면 Tor 브라우저를 실행한 상태에서 크롤링해야 함.
  • socks5h://127.0.0.1:9150는 Tor 네트워크를 경유하는 기본 설정.

🔹 (4) Selenium으로 JavaScript 렌더링 차단 우회

일부 웹사이트는 JavaScript를 이용해 데이터를 로딩하기 때문에, requests만으로는 데이터를 가져올 수 없습니다.
이럴 때는 Selenium을 활용해야 합니다.

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com")

# JavaScript로 동적으로 로딩된 데이터 가져오기
elements = driver.find_elements(By.CLASS_NAME, "dynamic-content")

for element in elements:
    print(element.text)

driver.quit()

🟢 Tip:

  • JavaScript 기반 웹사이트는 Selenium 또는 Playwright을 활용해야 함.
  • driver.page_source를 활용하면 전체 HTML 소스 코드를 가져올 수 있음.

3. 고급 우회 방법

🔹 (1) Google reCAPTCHA 자동 해결 (2Captcha API)

Google reCAPTCHA는 일반적인 방법으로는 우회할 수 없습니다.
2Captcha API를 활용하면 해결할 수 있습니다.

import requests

API_KEY = "YOUR_2CAPTCHA_API_KEY"
site_key = "6LeW..._AAB"  # 웹사이트의 reCAPTCHA site-key
url = "https://example.com"

# 2Captcha 요청
captcha_id = requests.get(f"http://2captcha.com/in.php?key={API_KEY}&method=userrecaptcha&googlekey={site_key}&pageurl={url}").text.split('|')[-1]

# 해결된 CAPTCHA 가져오기
solution = requests.get(f"http://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}").text.split('|')[-1]

print("CAPTCHA 해결 코드:", solution)

🟢 Tip:

  • reCAPTCHA v2, v3는 AI Solver를 사용해야 함.
  • 2Captcha 외에도 Anti-Captcha, DeathByCaptcha 같은 서비스가 있음.

🔹 (2) 헤더(Header) 및 쿠키(Cookie) 조작

웹사이트는 브라우저의 헤더 정보 및 쿠키를 확인하여 차단할 수 있습니다.
이럴 때는 Selenium으로 로그인 후 쿠키를 requests에 전달하면 해결할 수 있습니다.

from selenium import webdriver
import requests

# 1️⃣ Selenium으로 로그인 후 쿠키 가져오기
driver = webdriver.Chrome()
driver.get("https://example.com/login")

# 로그인 과정 진행
driver.find_element("name", "username").send_keys("my_username")
driver.find_element("name", "password").send_keys("my_password")
driver.find_element("id", "login-button").click()

# 쿠키 가져오기
cookies = driver.get_cookies()
driver.quit()

# 2️⃣ requests에 쿠키 추가하여 요청
session = requests.Session()

for cookie in cookies:
    session.cookies.set(cookie['name'], cookie['value'])

response = session.get("https://example.com/protected-page")
print(response.text)

🟢 Tip:

  • 로그인이 필요한 사이트는 requests만으로 접근할 수 없으며, 쿠키를 추가해야 함.
  • Selenium으로 로그인 후 쿠키를 requests로 넘기면 빠르게 데이터를 가져올 수 있음.

4. 차단 우회 자동화 전략

차단 방식 해결 방법

User-Agent 차단 User-Agent 변경
IP 차단 프록시 사용, VPN 활용
JavaScript 렌더링 Selenium 이용
로그인 필요 Selenium으로 로그인 후 쿠키 전달
reCAPTCHA 2Captcha 같은 AI Solver 사용

5. 정리 및 결론

User-Agent, 프록시, Selenium을 조합하면 대부분의 차단을 우회 가능
로그인이 필요한 사이트는 쿠키(Session)를 이용해야 접근 가능
Google reCAPTCHA는 AI Solver(2Captcha) 활용 필수

🔹 추천 추가 학습

  • Playwright: Selenium보다 빠르고 강력한 웹 자동화 라이브러리
  • Scrapy + Selenium: 크롤링 + JavaScript 렌더링 조합
  • AI 기반 CAPTCHA 분석 (OpenCV + 딥러닝)

 

반응형