Communitygithub.com

Proxy Rotator

Faites tourner un pool de proxies HTTP/SOCKS avec sélection round-robin, suivi des échecs et une temporisation qui met les proxies morts en attente avant de réessayer. Apportez votre propre liste de proxies via l'environnement - aucun n'est fourni.

Qu'est-ce que Proxy Rotator ?

Cette compétence fournit un Proxy Rotator qui distribue les requêtes HTTP sur un pool de proxies tout en gérant automatiquement les proxies défaillants. Elle implémente une sélection round-robin, un comptage des échecs, et une temporisation qui met un proxy hors service après trop d'échecs, avant de lui redonner une chance après un délai configurable. L'utilisateur doit fournir sa propre liste de proxies via une variable d'environnement `PROXY_POOL`. La compétence s'intègre facilement dans des scripts Python où chaque requête est suivie d'un appel à `rotator.report()` pour signaler le succès ou l'échec, permettant ainsi au pool de s'auto-réparer. Elle est utile pour éviter les bannissements IP, répartir la charge sur plusieurs proxies, ou effectuer des vérifications de santé des proxies avant une campagne de scraping.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/baronguyen001/ai-automation-skills/tree/HEAD/skills/proxy-rotator

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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

  1. Chargez les proxies depuis l'environnement ou un fichier ignoré par git - ne commettez jamais les vraies URL de proxy ou les identifiants.
  2. Appelez toujours report(proxy, ok=...) après chaque requête pour que les proxies défaillants soient automatiquement mis en attente.
  3. Ajustez max_fails et cooldown en fonction de la cible ; une temporisation courte récupère les proxies instables, une longue élimine les mauvais.
  4. Exécutez health_check avant un gros lot pour mettre les proxies morts en attente dès le départ.
  5. 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.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

baronguyen001/ai-automation-skills

Schedule any script to run on a recurring schedule on Windows (Task Scheduler) or Linux (cron) - register, list, and remove jobs from one command, with logging to a file and a guard against overlapping runs. Use for schedule a script, run nightly, set up a cron job, windows task scheduler, or run on a timer.

baronguyen001/ai-automation-skills

Turn a run's list of result dicts into a schema'd CSV and a Markdown table from one column spec - declare columns once, emit both, with stable ordering and safe escaping, stdlib only, no pandas. Use when the user asks to write results to CSV, export a report, make a markdown summary table, or save a run's output as a spreadsheet.

baronguyen001/ai-automation-skills

Strip HTML to clean plain text with the standard library only (no BeautifulSoup/lxml): drops script/style, turns block tags into line breaks, and collapses whitespace. Use when the user wants readable text from an HTML page/email, to clean scraped HTML before sending it to an LLM, or to build a text index from web content.

baronguyen001/ai-automation-skills

Persist records between scheduled runs as append-only JSON Lines (one object per line) with streaming reads and optional key-based dedup, stdlib only. Use when the user wants to log run results to JSONL, append events to a file, dedup records by id across runs, or keep a simple durable history without a database.

baronguyen001/ai-automation-skills

Extract text and simple table-like rows from a PDF for downstream AI without OCR binaries. Use when the user asks to read a PDF, turn a PDF into text, pull simple tables from statements/reports, or feed PDF content into an LLM pipeline.

baronguyen001/ai-automation-skills

Parse an RSS 2.0 or Atom feed into normalized item dicts (title, link, id, published, summary) with the standard library only - no feedparser. Use when the user asks to read an RSS/Atom feed, poll a blog/news feed, extract feed entries, or watch a site that publishes a feed.

baronguyen001/ai-automation-skills

Upload and download run artifacts from S3-compatible storage with BYO bucket and credentials from env. Use when the user asks to store scraper output, archive reports, publish artifacts to object storage, fetch a prior run file, or use MinIO/R2/Spaces/S3 without hardcoding credentials.

baronguyen001/ai-automation-skills

Draft a short-form TikTok/Reels/Shorts or long-form video script from a topic and creator persona file - hook variants, beat-structured body, CTA, b-roll cues, caption overlays, and [STORY]/[NUMBER] slots so the model never fabricates personal facts. Use for write a video script, tiktok script, youtube script, or /shortform-script.

baronguyen001/ai-automation-skills

Give scheduled scripts memory between runs with one SQLite file - a seen-set for dedup, a key/value cursor to resume where you left off, and order-preserving new-item filtering. Use for dedup across runs, don't re-alert the same item, remember the last id, resume a scraper, or persist state between cron runs.

Skills associés