GBProxies

Scrapy에서 로테이팅 프록시 설정 방법

Scrapy의 내장 HttpProxyMiddleware는 request.meta에서 프록시를 읽어요. 회전 게이트웨이를 사용하면 하나의 URL만 설정해도 모든 요청에 새로운 IP가 할당돼요.

단계

  1. HttpProxyMiddleware 활성화 유지(기본값)
  2. 각 요청 또는 start_requests에서 meta={"proxy": url} 설정
  3. 프록시 URL에 사용자 이름과 비밀번호를 입력하세요
  4. 사이트에서 여전히 속도 제한이 걸리면 CONCURRENT_REQUESTS_PER_DOMAIN 값을 낮추세요

예제 코드

import scrapy

PROXY = "http://USERNAME-cc-gb:PASSWORD@gw.gbproxies.cc:10000"

class PricesSpider(scrapy.Spider):
    name = "prices"
    start_urls = ["https://example.com/catalog"]

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url, meta={"proxy": PROXY})

    def parse(self, response):
        for href in response.css("a.product::attr(href)").getall():
            yield response.follow(href, self.parse_item, meta={"proxy": PROXY})

    def parse_item(self, response):
        yield {"title": response.css("h1::text").get(), "url": response.url}

프록시 콘솔의 Proxies 페이지에서 프록시 로그인 정보로 USERNAME과 PASSWORD를 입력하세요. 포트 10000은 residential HTTP용이에요. 각 제품의 포트는 아래에서 확인할 수 있어요.

팁

  • 이미지 다운로드를 끄고 미디어 다운로드를 피해 GB를 절약하세요 (IMAGES_ENABLED off 설정)
  • 안정적인 실행을 위해 DOWNLOAD_TIMEOUT 30과 RETRY_TIMES 3을 설정하세요

자주 묻는 질문

로테이션 미들웨어가 필요할까요?

아니요. 게이트웨이에서 자동으로 회전해 주기 때문에, 하나의 proxy URL로 충분해요.

Scrapy에서 로테이팅 프록시 설정 방법