Passer au contenu

Comment faire pivoter les proxys pour un scraping Web réussi

En tant qu'expert expérimenté en web scraping, j'ai rencontré à maintes reprises des problèmes de blocage de proxy. Je ne saurais trop insister sur l’importance d’une rotation appropriée des proxys pour réussir un scraping Web à grande échelle.

Dans ce guide complet de plus de 3000 XNUMX mots, nous approfondirons les stratégies optimales de rotation de proxy pour éviter les blocages et gratter efficacement.

Pourquoi la rotation des proxys est essentielle pour le Web Scraping

Récapitulons rapidement pourquoi les proxys sont nécessaires dans le web scraping.

Lorsque vous supprimez un site Web, vous envoyez à ses serveurs des centaines, voire des milliers de requêtes automatisées en peu de temps. Ce modèle de trafic hautement suspect est facilement détecté par le site cible.

Pour identifier et bloquer les scrapers, la plupart des sites Web utilisent des protections telles que :

  • Limitation du débit IP – Limite le nombre de requêtes qu’une adresse IP peut effectuer sur une période donnée
  • Captchas – Présente un défi pour valider que vous êtes humain
  • Blocs IP – Interdit votre adresse IP si elle est détectée comme un grattoir

Désormais, si vous n'utilisez pas de proxys, tout votre trafic scraper provient d'une seule adresse IP résidentielle ou de centre de données.

Il ne faudra pas longtemps avant que votre adresse IP atteigne une limite de débit ou soit complètement bloquée.

D'après mon expérience, voici ce qui se passe lors du scraping à partir d'une seule adresse IP :

  • Après 50-100 demandes, vous atteindrez probablement une limite de débit et devrez ralentir à 1 requête toutes les 10 secondes et plus. Cela réduit considérablement la vitesse de grattage.

  • Après 200-500 demandes, il y a de fortes chances que vous déclenchiez un captcha pour valider que vous n'êtes pas un bot. La résolution manuelle des captchas décime la vitesse de grattage.

  • Après 500-1,000 demandes, votre adresse IP sera probablement complètement bloquée. Jeu terminé.

Comme vous pouvez le constater, il est impossible de récupérer un nombre significatif de pages sans proxy.

C’est là qu’intervient la rotation des proxys.

La rotation proxy signifie distribuer les demandes de votre scraper sur plusieurs adresses IP en utilisant des serveurs proxy. Cela vous permet de :

  • Évitez que tout le trafic provienne d’une seule adresse IP qui peut facilement être signalée pour le scraping.

  • Augmentez le nombre de requêtes tout en respectant les limites de débit du site cible.

  • Continuez à gratter même si certains proxys sont bloqués en les désactivant rapidement.

Permettez-moi de partager un exemple concret qui prouve pourquoi la rotation des proxys est essentielle.

Récemment, j'ai été embauché pour extraire 50,000 XNUMX listes de produits d'un site de commerce électronique. Sans proxy, voici ce qui s'est passé :

  • Environ 500 requêtes, j'ai commencé à frapper des captchas et des délais de 5 secondes entre les requêtes. Le grattage ralentit jusqu'à devenir rampant.

  • A 2000 requêtes, mon IP a été complètement bloquée par le site. Le grattage s'est arrêté.

Maintenant, je suis passé à une rotation de seulement 5 proxys résidentiels, voici les résultats :

  • Chaque proxy a effectué environ 500 requêtes avant de devoir ralentir pour éviter les captchas.

  • Aucun proxy n'a été bloqué depuis que j'ai continué à passer à une nouvelle adresse IP.

  • J'ai réussi à supprimer les 50,000 XNUMX annonces en répartissant la charge entre les proxys.

Cet exemple réel montre clairement comment la rotation du proxy peut faire la différence entre quelques centaines de pages supprimées et des dizaines de milliers.

D'après mon expérience, la rotation des proxys est obligatoire pour toute opération sérieuse de web scraping.

Examinons ensuite quelques stratégies de rotation de proxy intelligent que vous devriez utiliser.

Stratégies de rotation des proxys

Il existe plusieurs modèles de rotation de proxy éprouvés qui peuvent optimiser les performances de scraping. Certaines approches populaires incluent :

Round Robin

Cette méthode parcourt votre liste d’adresses IP proxy en séquence.

Par exemple avec 3 proxys :

Request 1 -> Proxy 1 
Request 2 -> Proxy 2
Request 3 -> Proxy 3
Request 4 -> Proxy 1
Request 5 -> Proxy 2

La rotation à tour de rôle garantit que nous répartissons les demandes de manière assez uniforme entre tous les proxys. Cela évite de réutiliser le même proxy à plusieurs reprises.

Le principal inconvénient est que si un proxy est bloqué, il continuera à être sélectionné à chaque rotation.

D'après mes tests, le round robin fonctionne décemment avec un pool de taille moyenne de 5 à 10 proxys sains.

Proxy aléatoire

Cette stratégie sélectionne un proxy complètement aléatoire dans le pool pour chaque requête.

Request 1 -> Proxy 3
Request 2 -> Proxy 2
Request 3 -> Proxy 5
Request 4 -> Proxy 1
Request 5 -> Proxy 8 

La sélection aléatoire de proxys offre une imprévisibilité totale quant à la manière dont les proxys sont utilisés. Les sites ont du mal à détecter les modèles de rotation aléatoire.

Le risque est que la randomisation peut parfois conduire à ce que le même proxy soit choisi à plusieurs reprises par hasard. Des algorithmes de randomisation habiles sont nécessaires pour éviter cela.

J'ai trouvé que la rotation aléatoire des proxys fonctionne mieux avec des pools plus grands de 15 à 25+ proxys.

Basé sur les performances

Des méthodes plus avancées suivent le taux de réussite/échec du proxy et sélectionnent les proxys en conséquence.

Par exemple, les proxys qui rencontrent des captchas ou des blocs sont moins utilisés, tandis que les proxys très performants sont davantage utilisés.

Cela nécessite une certaine logique pour détecter les échecs de proxy et conserver les statistiques sur chaque proxy. Mais cela garantit que nous maximisons l’utilisation de proxys « sains ».

D'après mon expérience, la rotation basée sur les performances produit les meilleurs résultats mais nécessite plus d'efforts de codage pour sa mise en œuvre.

Cohérence IP

Certains sites grattent les empreintes digitales en détectant les incohérences IP dans les sessions utilisateur.

Par exemple, si au cours d'une seule session utilisateur, le site voit des requêtes provenant de différentes adresses IP, c'est un signal d'alarme pour le scraping.

La rotation de cohérence IP garantit que chaque proxy gère tout le trafic pour une session utilisateur individuelle. Ainsi, le site cible voit des adresses IP cohérentes pour chaque utilisateur.

Cette technique est utile lors du scraping de sites avec des sessions utilisateur fortement surveillées, comme les réseaux sociaux et le commerce électronique.

Conseil d'expert

"Un piège courant est la rotation trop rapide des proxys. Changer d'adresse IP à chaque requête est souvent excessif. J'effectue généralement une rotation progressive toutes les 50 à 100 requêtes par proxy. Cela évite les modèles d'empreinte qui peuvent sembler suspects."

Quelle que soit la stratégie de rotation que vous utilisez, il est important de tourner progressivement et pas trop agressivement. Les sites peuvent détecter les commutations IP hyper fréquentes comme une empreinte de grattage.

Examinons maintenant quelques conseils clés pour optimiser votre rotation de proxy…

Meilleures pratiques pour la rotation des proxys

Grâce à de nombreux essais et erreurs, j'ai identifié quelques bonnes pratiques en matière de rotation de proxy :

Rotation par sous-réseau proxy

De nombreux proxys proviennent des mêmes plages de sous-réseaux sous de grands fournisseurs comme Luminati ou Smartproxy.

Une rotation aléatoire peut entraîner l'apparition de proxys dans l'ordre s'ils appartiennent au même sous-réseau.

Request 1 -> 123.45.67.89 (Subnet A)
Request 2 -> 123.45.67.93 (Subnet A again!) 

Les adresses IP répétées de la même plage de sous-réseaux sont un cadeau infaillible pour le scraping.

Assurez-vous d’effectuer une rotation active entre différents sous-réseaux et fournisseurs proxy. Ne choisissez jamais deux proxys d’affilée dans le même sous-réseau.

Utilisez un mélange sain de types de proxy

Ne mettez pas tous vos œufs dans le même panier. Utilisez un mélange de :

  • Datacenter – Vitesses les plus rapides. Risque de blocage dû à une utilisation intensive du grattoir.
  • Résidentiel – Plus lent mais paraissant plus « humain ». Disponibilité limitée.
  • Breeze Mobile – Apparaissez en tant qu’utilisateurs mobiles. De nombreux sites ne prennent pas entièrement en charge les appareils mobiles.

Trouver le bon équilibre entre les types de proxy garantit que vous disposez d'angles couverts si un pool de proxy est surchargé ou bloqué.

Désactiver les proxys défaillants

Même avec une rotation robuste, certains proxys commenceront inévitablement à échouer avec des blocages et des captchas.

Désactivez temporairement les proxys renvoyant des erreurs ou des blocages. Cela leur donne la possibilité de se « rafraîchir » et réinitialise leur statut auprès du site cible.

Vous pouvez périodiquement retester les proxys désactivés pour voir s’ils ont récupéré.

Ajouter des retards

L'insertion de délais aléatoires entre les requêtes permet de garantir que le trafic de scraping semble plus humain et d'éviter les limites de taux d'abus.

Mon approche typique consiste à ajouter des délais randomisés de 1 à 3 secondes toutes les 5 à 10 demandes.

Vous pouvez également détecter des signes de limitation comme les défis captcha et augmenter dynamiquement les délais.

Rotation des pays

Si vous ciblez des sites spécifiques à un pays, assurez-vous d'utiliser des proxys réellement situés dans ce pays.

Par exemple, lors du scraping d'un site destiné aux utilisateurs britanniques, je m'assure de faire alterner les proxys résidentiels et de centres de données situés au Royaume-Uni.

La rotation basée sur la géographie permet de s'intégrer en tant qu'utilisateur local faisant des demandes.

Conseil d'expert

"Une astuce astucieuse que je recommande consiste à modifier légèrement l'agent utilisateur à chaque rotation de proxy. Cela ajoute encore une autre variable qui empêche le site cible de profiler et de détecter facilement votre scraper."

Faites preuve de créativité en ajoutant de petits ajustements comme la rotation de l'agent utilisateur pour masquer davantage les empreintes digitales de votre grattoir.

Implémentation de la rotation des proxys en Python

Maintenant que nous avons exploré les stratégies de rotation de proxy, examinons un exemple d'implémentation Python.

Nous allons d’abord définir une liste de proxys disponibles :

proxies = [
  ‘104.45.147.53:8080‘,
  ‘45.15.62.230:8123‘, 
  ‘177.36.45.82:3128‘,
  # etc
]

Ensuite, nous avons besoin de logique pour parcourir cette liste. Nous utiliserons Python random bibliothèque pour choisir un proxy aléatoire à chaque requête :

import random

def get_random_proxy():
  return random.choice(proxies)

Pour éviter de choisir deux fois le même proxy, nous pouvons suivre le proxy précédemment utilisé et le re-randomiser jusqu'à ce que nous en obtenions un nouveau :

last_proxy = None

def get_random_proxy():

  proxy = random.choice(proxies)  

  while proxy == last_proxy:
    proxy = random.choice(proxies)

  last_proxy = proxy

  return proxy 

Nous pouvons maintenant passer le proxy pivoté dans le requests module:

import requests

# Rotate proxy
proxy = get_random_proxy() 

# Make request with rotated proxy  
requests.get(‘http://example.com‘, proxies={‘http‘: proxy, ‘https‘: proxy})

Cela nous donne une configuration de base de rotation de proxy en quelques lignes seulement !

Examinons ensuite un rotateur de proxy plus avancé qui intègre quelques bonnes pratiques…

import random
from time import sleep

# Proxy list
proxies = [
  {‘ip‘: ‘104.45.147.53:8080‘, ‘country‘: ‘US‘, ‘subnet‘: ‘147‘},
  {‘ip‘: ‘45.15.62.230:8123‘, ‘country‘: ‘CA‘, ‘subnet‘: ‘62‘},
  # etc
]

# Tracking variables
last_proxy = None
last_subnet = None
disabled_proxies = [] 

def get_proxy():

  # Remove disabled proxies
  global proxies 
  proxies = [p for p in proxies if p[‘ip‘] not in disabled_proxies]

  # Weight random selection 
  proxy_weights = []
  for proxy in proxies:
    if proxy[‘country‘] == ‘US‘:
      # Prefer US proxies
      weight = 100 
    else:
      # Lower weight for non-US
      weight = 50

    if proxy[‘subnet‘] == last_subnet:
      # Lower weight if same subnet
      weight -= 20

    # Apply weight    
    proxy_weights.extend([proxy]*weight)

  # Pick weighted random proxy
  proxy = random.choice(proxy_weights) 

  # Avoid immediate subnet repeat
  while proxy[‘subnet‘] == last_subnet:
    proxy = random.choice(proxy_weights)

  # Rotate subnet 
  last_subnet = proxy[‘subnet‘]

  # Optional delay
  sleep(1)

  return proxy[‘ip‘]

# Usage:

proxy = get_proxy()
try:
  response = requests.get(‘http://example.com‘, proxies={‘http‘: proxy, ‘https‘: proxy})
  # Success - do nothing
except:
  # Failure - disable proxy
  disabled_proxies.append(proxy) 

Cela nous donne un rotateur plus robuste avec :

  • Pondération par procuration
  • Suppression des proxys défaillants
  • Rotation de sous-réseau
  • Délai entre les demandes

Il existe de nombreuses autres optimisations, telles que les intégrations avec les API du gestionnaire de proxy, qui peuvent améliorer encore les performances.

Tirer parti des API proxy pour la rotation

Gérer vous-même la rotation des proxys peut prendre beaucoup de temps. Les API proxy simplifient la gestion des proxys et rendent l'intégration transparente.

Quelques API proxy notables à consulter :

Luminati – Le plus grand réseau proxy payant avec plus de 72 millions d’IP. Idéal pour les opérations de grattage extrêmement importantes. Coûts minimum environ 500 $/mois.

oxylabs – Offre 3 millions de proxys de types résidentiels, de centres de données et mobiles. Les prix commencent à 300 $/mois pour 1 million de demandes.

Proxy intelligent – Spécialisé dans les proxys résidentiels backconnect avec 40 millions d’IP. Les forfaits commencent à 75 $/mois pour 5 Go de trafic.

GéoSurf – Idéal pour le ciblage de niche avec des proxys dans plus de 50 pays. Les forfaits résidentiels commencent à 290 $/mois.

Microfeuilles – API proxy résidentiel budgétaire à partir de 85 $/mois pour 1 million de requêtes.

ScrapeOps – API proxy intelligente avec rotation intégrée et résolution CAPTCHA. Les forfaits commencent à 299 $/mois pour 1 million de demandes.

Le principal avantage des API est une intégration simplifiée et l’obtention instantanée de proxys sans configuration longue. La plupart gèrent l’optimisation de l’utilisation du proxy sous le capot.

Par exemple, voici un script utilisant l'API proxy ScrapeOps pour scraper un site :

import scrapeops

api = scrapeops.API()

for page in range(1, 100):
   url = f‘http://site.com/page/{page}‘
   html = api.get_html(url)
   # Parse html

L'API supprime toute gestion de proxy et fournit du HTML propre à partir de n'importe quelle page.

Pour les projets de scraping plus importants, l'utilisation d'une API de proxy dédiée peut faire gagner énormément de temps de développement par rapport à la gestion des proxys vous-même.

Réflexions finales

Les proxys sont obligatoires pour toute opération sérieuse de web scraping. En termes simples, pas de proxy, pas de scraping.

Assurez-vous d'utiliser plusieurs proxys et de mettre en œuvre une stratégie de rotation solide comme le round robin, les performances pondérées ou aléatoires.

Suivez les meilleures pratiques telles que la rotation des sous-réseaux, la désactivation des proxys défaillants, l'ajout de délais et le mélange des types de proxy.

Une rotation de proxy minutieuse et réfléchie vous permettra d'effectuer du scraping à grande échelle sans vous soucier des blocages IP ou des captchas.

J'espère que ce guide fournit un aperçu complet des techniques optimales pour la rotation des proxys dans vos projets de web scraping. Faites-moi savoir si vous avez d'autres conseils sur la rotation des proxy !

Mots clés:

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *