ProxyHealthList

/ 사용 사례 / Scrapy

Scrapy용 무료 프록시

Scrapy는 request.meta['proxy']로 프록시를 기본 지원합니다. 매시간 검증되는 무료 목록과 작은 로테이션 미들웨어를 결합하세요.

HTTP 목록 (TXT) 전체 목록 (JSON)

로테이션 미들웨어

이 미들웨어를 프로젝트에 넣고 settings.py에서 활성화하세요. 검증된 목록을 한 번 불러와 요청마다 임의의 프록시를 지정하고, 프록시가 실패하면 다른 프록시로 재시도합니다.

# middlewares.py
import random, requests

class VerifiedProxyMiddleware:
    LIST = "https://raw.githubusercontent.com/xyzs996/free-proxy-health-list/main/proxies/protocols/http/data.txt"

    def __init__(self):
        txt = requests.get(self.LIST, timeout=15).text
        self.proxies = [f"http://{l.strip()}" for l in txt.splitlines() if l.strip()]

    def process_request(self, request, spider):
        request.meta["proxy"] = random.choice(self.proxies)

    def process_exception(self, request, exception, spider):
        request.meta["proxy"] = random.choice(self.proxies)
        return request
# settings.py
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.VerifiedProxyMiddleware": 350,
    "scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware": 400,
}
RETRY_ENABLED = True
RETRY_TIMES = 5
DOWNLOAD_TIMEOUT = 15
DOWNLOAD_DELAY = 1.0

무료 프록시는 불안정하므로 RETRY_ENABLED를 켜고 RETRY_TIMES를 넉넉히 주세요. fast 하위 집합에서 시작하고 긴 크롤 사이에 목록을 다시 불러오세요. 항상 robots.txt를 준수하세요.

자주 묻는 질문

Scrapy에서 프록시 하나를 설정하려면?

request.meta['proxy'] = 'http://host:port'를 설정하거나 http_proxy를 export하세요.

Scrapy가 SOCKS5를 지원하나요?

기본 미들웨어는 HTTP를 처리합니다. SOCKS에는 외부 핸들러가 필요합니다.

목록은 어디서?

CDN에서 TXT나 JSON 검증 목록을 다운로드하세요. 매시간 다시 검사됩니다.

관련