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개까지 허용되며 일반적인 스크래핑은 그 근처에도 가지 않습니다.