티스토리 뷰
🚀 파이썬으로 웹사이트 접근 시 차단 우회 방법
일부 웹사이트는 자동화된 크롤링을 감지하고 차단합니다. 하지만 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:
- User-Agent는 WhatIsMyBrowser에서 확인할 수 있음.
🔹 (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 + 딥러닝)
'[실전] 파이썬 (Python)' 카테고리의 다른 글
[selenium 고급] Selenium과 OpenCV을 활용한 이미지 CAPTCHA 자동 입력 방법 (0) | 2025.02.13 |
---|---|
[selenium 고급] Selenium과 AI OCR을 활용한 CAPTCHA 자동 입력 방법 (0) | 2025.02.13 |
[selenium 중급] Selenium을 이용한 웹 자동화 (자동로그인, 자동 게시글/댓글 작성 등) (0) | 2025.02.13 |
pygame으로 만든 게임 apk파일로 빌드 및 출시하기 (0) | 2025.02.01 |
[챗지피티+pygame] 지피티를 이용해 리듬게임 만들기 (0) | 2025.02.01 |