Que fait Proxy Rotator ?
Utilisez cette compétence lorsqu'un scraper doit répartir les requêtes sur plusieurs proxies et cesser d'utiliser ceux qui sont devenus inactifs. Le rotator distribue le proxy sain suivant, compte les échecs et met un proxy en attente pour une durée de temporisation après trop d'échecs - puis lui redonne une chance. Vous apportez la liste des proxies ; rien n'est engagé.
Quand l'utiliser
- L'utilisateur dit : « faire tourner les proxies », « répartir les requêtes sur les proxies », « arrêter de se faire bannir par IP », « réessayer via un autre proxy ».
- Le code dans la conversation effectue de nombreuses requêtes sortantes et a besoin de les distribuer sur un pool de proxies.
Quand NE PAS l'utiliser
- Une seule connexion suffit, ou la cible autorise explicitement votre volume - faire tourner les proxies ajoute une complexité inutile.
- L'intention est de contourner un blocage explicite ou d'abuser d'un service ; respectez les conditions d'utilisation de la cible.
Exemple concret
Entrée utilisateur :
J'ai 5 proxies. Distribuez-les en round-robin et ignorez ceux qui commencent à échouer.
Sortie :
import requests
from rotator import ProxyRotator
rot = ProxyRotator.from_env() # PROXY_POOL="http://h1:8080,socks5://h2:1080,..."
for url in urls:
p = rot.get() # prochain proxy sain
try:
r = requests.get(url, proxies=p.as_dict(), timeout=15)
rot.report(p, ok=r.ok) # renvoyer le résultat pour que le pool s'auto-répare
except Exception:
rot.report(p, ok=False) # trop d'échecs -> mis en attente pendant la temporisation
Pattern à appliquer
- Chargez les proxies depuis l'environnement ou un fichier ignoré par git - ne commettez jamais les vraies URL de proxy ou les identifiants.
- Appelez toujours
report(proxy, ok=...)après chaque requête pour que les proxies défaillants soient automatiquement mis en attente. - Ajustez
max_failsetcooldownen fonction de la cible ; une temporisation courte récupère les proxies instables, une longue élimine les mauvais. - Exécutez
health_checkavant un gros lot pour mettre les proxies morts en attente dès le départ. - Gérez l'erreur « aucun proxy sain » - reculez et réessayez plutôt que de faire planter l'exécution.
Référence : assets/rotator.py.
Source
Extrait de l'utilisation en production dans les projets d'automatisation de l'auteur. v1.0.0. Voir aussi : [[playwright-login-session]], [[pipeline-orchestrator]], [[cron-dispatch]].
→ Construisez le bot complet et exécutable avec Trawlkit.