ProxyHealthList

/ 사용 사례 / 웹 스크래핑

웹 스크래핑용 무료 프록시

단일 IP로 스크래핑하면 금방 차단됩니다. 신선한 검증 목록을 로테이션하면 요청을 여러 IP로 분산할 수 있습니다 — 매시간 검증되는 무료 목록으로 하는 방법입니다.

목록 다운로드 (JSON) 빠른 프록시 (TXT)

왜 프록시를 교체(로테이션)하나

대부분의 사이트는 요청이 너무 많은 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. 요청 사이에 지터가 있는 지연(예: 1~5초)을 둡니다.
  2. 현실적인 User-Agent를 설정합니다.
  3. 대상 사이트의 robots.txt와 약관을 준수합니다.
  4. 429 Too Many Requests에서는 백오프(더 오래 대기)합니다.
  5. 목록을 주기적으로 새로고침합니다 — 매시간 재검증됩니다.

사용이 허용된 데이터만 수집하세요. 접근 제어 우회나 사이트 약관 위반에 프록시를 사용하지 마세요.

자주 묻는 질문

무료 프록시가 웹 스크래핑에 충분한가요?

공개 페이지의 중소 규모 스크래핑, 테스트, 프로토타입에 좋습니다. 개별 프록시는 금방 죽으므로 여러 개로 로테이션하고 재시도하세요.

IP 차단을 어떻게 피하나요?

요청마다 로테이션, 지연과 지터 추가, 현실적인 User-Agent, robots.txt 준수, 429에서 백오프.

스크래핑에 HTTP인가 SOCKS5인가?

둘 다 됩니다. HTTP가 가장 간단하고, SOCKS5는 DNS를 프록시로 해석합니다.

관련