proxys.store

Les proxys dans Scrapy

HttpProxyMiddleware est actif par défaut — il suffit de mettre la chaîne de connexion dans le meta de la requête.

Une araignée minimale

Rien à activer : HttpProxyMiddleware fait partie du pipeline par défaut et lit la clé proxy dans meta. Les identifiants vont dans l’adresse, exactement comme dans une chaîne de connexion ordinaire.

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)

À garder en tête pendant le scraping

Une nouvelle tentative sur le port 823 arrive d’une autre adresse — c’est la rotation qui fonctionne, pas une panne. Les reprises de Scrapy se comportent correctement ici, mais rien ne doit dépendre du fait que l’adresse reste la même entre deux requêtes ; les ports fixes 10000–20000 sont là pour ça.

Réglez DOWNLOAD_TIMEOUT largement : une sortie résidentielle répond plus lentement qu’un datacenter, et une requête sans délai peut rester bloquée plusieurs minutes. L’offre autorise jusqu’à deux mille connexions simultanées, un seuil que le scraping ordinaire n’approche pas.

Lire la suite