proxys.store

Scrapy에서 프록시 쓰기

HttpProxyMiddleware는 기본으로 켜져 있습니다. 요청의 meta에 접속 문자열을 넣기만 하면 됩니다.

최소한의 스파이더

따로 켤 것은 없습니다. HttpProxyMiddleware가 기본 파이프라인에 있고 meta의 proxy 키를 읽습니다. 인증 정보는 평범한 접속 문자열과 똑같이 주소 안에 들어갑니다.

import scrapy


class IpSpider(scrapy.Spider):
    name = "ip"
    proxy = "http://LOGIN__cr.de:PASSWORD@gw.dataimpulse.com:823"

    def start_requests(self):
        yield scrapy.Request(
            "https://ipinfo.io/json",
            meta={"proxy": self.proxy},
        )

    def parse(self, response):
        self.logger.info(response.text)

스크래핑할 때 유의할 점

포트 823에서 재시도는 다른 주소에서 옵니다. 고장이 아니라 로테이션입니다. Scrapy의 재시도는 여기서 올바르게 동작하지만, 요청 사이에 주소가 그대로일 것이라고 가정해서는 안 됩니다. 그럴 때 쓰라고 고정 포트 10000–20000이 있습니다.

DOWNLOAD_TIMEOUT을 넉넉히 잡으세요. 레지덴셜 출구는 데이터센터보다 느리게 응답하고, 타임아웃 없는 요청은 몇 분씩 멈춰 있을 수 있습니다. 동시 연결은 최대 2000개까지 허용되며 일반적인 스크래핑은 그 근처에도 가지 않습니다.

이어서 읽기