Como Configurar Proxies Rotativos no Scrapy
O HttpProxyMiddleware embutido do Scrapy lê o proxy de request.meta. Com um gateway rotativo, você define uma URL e cada solicitação ainda recebe um novo IP.
Passos
- Mantenha o HttpProxyMiddleware habilitado (ele está ativo por padrão)
- Defina meta={"proxy": url} em cada solicitação ou em start_requests
- Coloque o nome de usuário e senha na URL do proxy
- Reduza CONCURRENT_REQUESTS_PER_DOMAIN se um site ainda limitar a taxa
Exemplo de código
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}Substitua USERNAME e PASSWORD pelo login do proxy da página Proxies do console. A porta 10000 é HTTP residencial; veja as portas de cada produto abaixo.
Dicas
- Desative IMAGES_ENABLED e evite downloads de mídia para economizar GB
- Use DOWNLOAD_TIMEOUT 30 e RETRY_TIMES 3 para execuções estáveis
Perguntas comuns
Preciso de um middleware de rotação?
Não. O gateway faz a rotação para você; uma URL de proxy é suficiente.