홈 / 사용 사례 / 웹 스크래핑
웹 스크래핑용 무료 프록시
단일 IP로 스크래핑하면 금방 차단됩니다. 신선한 검증 목록을 로테이션하면 요청을 여러 IP로 분산할 수 있습니다 — 매시간 검증되는 무료 목록으로 하는 방법입니다.
왜 프록시를 교체(로테이션)하나
대부분의 사이트는 요청이 너무 많은 IP를 제한하거나 차단합니다. 프록시 풀은 각 요청(또는 배치)을 다른 주소에서 내보내므로 어떤 IP도 한도에 걸리지 않습니다. 무료 프록시는 어느 것이든 몇 분 만에 죽을 수 있으므로 신뢰할 수 있는 방식은 하나에 의존하지 않고 여러 검증된 프록시로 로테이션+재시도하는 것입니다.
Python에서 검증된 목록 로테이션
이 예제는 JSON 목록(빠른 순 정렬)을 불러와 순회하며, 실패하면 다음 프록시로 재시도합니다.
import requests
LIST = "https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/proxies/all/data.json"
# 1
pool = requests.get(LIST, timeout=15).json()
def scheme(p):
proto = p["protocol"]; host = p["proxy"]
return f"socks5h://{host}" if proto.startswith("socks5") else \
f"socks4://{host}" if proto.startswith("socks4") else f"http://{host}"
def fetch(url):
for p in pool: # 2
px = scheme(p)
try:
r = requests.get(url, proxies={"http": px, "https": px}, timeout=8)
if r.ok:
return r.text
except requests.RequestException:
continue # 3
raise RuntimeError("all proxies failed")
print(fetch("https://httpbin.org/ip")[:200])
예의 바르게
- 요청 사이에 지터가 있는 지연(예: 1~5초)을 둡니다.
- 현실적인
User-Agent를 설정합니다. - 대상 사이트의
robots.txt와 약관을 준수합니다. 429 Too Many Requests에서는 백오프(더 오래 대기)합니다.- 목록을 주기적으로 새로고침합니다 — 매시간 재검증됩니다.
사용이 허용된 데이터만 수집하세요. 접근 제어 우회나 사이트 약관 위반에 프록시를 사용하지 마세요.
자주 묻는 질문
무료 프록시가 웹 스크래핑에 충분한가요?
공개 페이지의 중소 규모 스크래핑, 테스트, 프로토타입에 좋습니다. 개별 프록시는 금방 죽으므로 여러 개로 로테이션하고 재시도하세요.
IP 차단을 어떻게 피하나요?
요청마다 로테이션, 지연과 지터 추가, 현실적인 User-Agent, robots.txt 준수, 429에서 백오프.