일부 웹사이트가 프록시를 통해 열리지 않는 이유: 완벽한 가이드
프록시는 웹 스크래핑, 테스트, SNS 자동화 및 지역 제한 우회에 필수적인 도구입니다. 하지만 때때로 콘텐츠 대신 오류 403, 타임아웃 또는 빈 페이지가 표시됩니다. 이런 일이 발생하는 이유와 해결 방법을 알아봅시다.
1. 프록시 감지 및 차단
이것이 가장 흔한 원인입니다. 최신 웹 애플리케이션은 프록시 트래픽을 감지하기 위해 특수 서비스를 사용합니다. 사이트는 다음을 분석합니다:
- ASN(자율 시스템 번호) — 많은 프록시 제공자가 알려진 ASN 범위를 사용하므로 쉽게 차단할 수 있습니다
- 사용자 행동 — IP 간 빠른 전환 불가능, 쿠키 부재, 이상한 클릭 패턴
- TLS 지문 — 브라우저는 SSL 버전, 확장, 암호화 순서에 대한 고유한 데이터를 전송합니다
- WebGL 및 Canvas 지문 — JavaScript도 프록시 사용을 노출할 수 있습니다
예시: 사이트는 10초 동안 귀하의 IP에서 100개의 상품 페이지가 로드된 것을 봅니다. 이것은 명백히 사람이 아니므로 차단은 불가피합니다.
2. 지역 제한
사이트는 IP 지리적 위치를 확인하고 예상과 일치하지 않으면 접근을 거부합니다:
- 은행 및 금융 서비스는 특정 국가에서의 접근을 차단합니다
- 스트리밍 서비스(Netflix, YouTube)는 지역별로 콘텐츠를 제한합니다
- 정부 웹사이트는 국외에서 접근할 수 없을 수 있습니다
- 전자상거래 플랫폼은 IP를 기반으로 언어 및 통화를 변경합니다
미국의 데이터센터 프록시를 사용하는데 사이트가 유럽에서만 접근을 요구하면 오류 403 또는 리디렉션이 표시됩니다.
3. IP 주소 평판
각 IP는 역사를 가지고 있습니다. 주소가 이전에 스팸, 파싱 또는 DDoS 공격에 사용된 경우 사이트는 이를 차단합니다:
- 블랙리스트 — IP는 Project Honey Pot, Spamhaus, AbuseIPDB 데이터베이스에 들어갑니다
- IPQualityScore와 같은 서비스의 낮은 점수 — 사이트는 이러한 서비스를 사용하여 필터링합니다
- 이전 위반 — IP가 사이트에서 이미 차단된 경우 오랫동안 블랙리스트에 남을 수 있습니다
IP 평판은 abuseipdb.com 또는 ipqualityscore.com에서 확인할 수 있습니다.
4. 잘못된 헤더 및 구성
종종 사이트는 HTTP 헤더가 없거나 잘못되어 요청을 차단합니다:
| 헤더 | 문제 |
|---|---|
User-Agent |
없거나 이상함(예: Python-requests/2.25.1) |
Referer |
사이트 탐색 논리와 일치하지 않음 |
Accept-Language |
없거나 IP 지리적 위치와 일치하지 않음 |
X-Forwarded-For |
프록시 또는 VPN 사용을 노출합니다 |
해결책: 실제 브라우저 헤더를 사용하세요. Python의 예시입니다:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
proxy = 'http://your-proxy:port'
response = requests.get('https://example.com',
headers=headers,
proxies={'http': proxy, 'https': proxy})
5. 프로토콜 및 포트 문제
일부 프록시는 HTTP만 지원하는데 HTTPS 사이트에 접근하려고 합니다. 또는 포트가 네트워크 수준에서 차단됩니다:
- HTTP vs HTTPS — 프록시가 두 프로토콜을 모두 지원하는지 확인하세요
- 포트 — 표준 80(HTTP) 및 443(HTTPS)이지만 일부 사이트는 비표준 포트를 사용합니다
- SOCKS vs HTTP — 다양한 프록시 유형은 다양한 제한이 있습니다
팁: HTTP 프록시를 통해 사이트가 열리지 않으면 SOCKS5를 시도하세요. 더 낮은 수준에서 작동하며 일부 제한을 더 잘 우회합니다.
6. 속도 제한 및 DDoS 보호
많은 요청을 연속으로 하면 다양한 IP를 통해서도 사이트가 차단할 수 있습니다:
- 429 Too Many Requests — 요청 제한을 초과했습니다
- 임시 차단 — 보통 1-24시간
- 영구 차단 — 계속 서버를 공격하면
- Cloudflare, WAF — 봇과 사람을 구분하는 전문 보호 시스템
7. 실용적인 해결책
✓ 데이터센터 대신 레지던셜 프록시 사용
레지던셜 프록시는 실제 가정용 사용자의 IP 주소입니다. 일반 트래픽처럼 보이므로 감지하기가 훨씬 어렵습니다. 데이터센터는 ASN이 알려져 있어 자주 차단됩니다.
✓ 요청 간에 지연 추가
import time
import random
for url in urls:
response = requests.get(url, headers=headers, proxies=proxies)
# 1~5초 사이의 무작위 지연
time.sleep(random.uniform(1, 5))
✓ 프록시 로테이션
모든 요청에 하나의 IP를 사용하지 마세요. 다양한 주소 간에 전환하세요:
proxies_list = [
'http://proxy1:port',
'http://proxy2:port',
'http://proxy3:port',
]
for i, url in enumerate(urls):
proxy = proxies_list[i % len(proxies_list)]
response = requests.get(url, proxies={'http': proxy, 'https': proxy})
✓ 사용 전에 IP 확인
IP가 블랙리스트에 없는지 확인하세요:
import requests
def check_ip_reputation(ip):
response = requests.get(f'https://ipqualityscore.com/api/json/ip/{ip}')
data = response.json()
return data.get('fraud_score', 0)
# 낮은 점수의 IP만 사용
if check_ip_reputation(proxy_ip) < 75:
# IP는 안전함
pass
✓ 복잡한 사이트에 브라우저 자동화 사용
사이트가 JavaScript를 사용하고 복잡한 보호를 하면 일반 HTTP 요청은 도움이 되지 않습니다. Selenium 또는 Puppeteer를 사용하세요:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://proxy:port')
driver = webdriver.Chrome(options=options)
driver.get('https://example.com')
✓ 모바일 사이트에 모바일 프록시 사용
모바일 프록시는 실제 모바일 네트워크(4G/5G)를 통해 작동합니다. 모바일 애플리케이션에 더 안정적이며 PC 접근을 제한하는 사이트에서 자주 차단되지 않습니다.
✓ 오류를 올바르게 처리
try:
response = requests.get(url, proxies=proxies, timeout=10)
response.raise_for_status()
except requests.exceptions.ProxyError:
print("프록시 오류 — IP가 차단되었을 수 있습니다")
except requests.exceptions.Timeout:
print("타임아웃 — 서버가 응답하지 않습니다")
except requests.exceptions.HTTPError as e:
if response.status_code == 403:
print("접근 거부 — 다른 프록시를 시도하세요")
결론
사이트는 다양한 이유로 프록시를 차단합니다: 트래픽 패턴 감지부터 단순한 IP 평판까지. 보편적인 해결책은 없지만 좋은 프록시, 올바른 헤더, 지연 및 IP 로테이션의 조합이 대부분의 문제를 해결합니다.
파싱 및 자동화의 경우 실제 가정용 사용자의 트래픽처럼 보이는 고품질 레지던셜 프록시를 사용하는 것이 좋습니다. 데이터센터보다 비싸지만 더 안정적으로 작동하며 거의 차단되지 않습니다.