« Dois-je faire une rotation à chaque requête ? » est l’une des premières questions que se posent les équipes qui commencent à utiliser des proxies résidentiels, et la réponse honnête est : cela dépend de ce que vos requêtes ont en commun. Trop de rotation casse les flux qu’un site s’attend à voir provenir d’un seul visiteur. Pas assez de rotation entasse tout votre trafic sur une seule adresse. Les deux vous coûtent des blocages, des nouvelles tentatives et de la bande passante.
Ce guide propose une méthode simple pour décider. La question décisive ne porte pas du tout sur le proxy. Elle porte sur votre travail : quelles requêtes vont ensemble, et pendant combien de temps.
Les trois modes
| Mode | Ce qu’il fait | Sur Shifter |
|---|---|---|
| Rotation par requête | Chaque requête part d’une IP résidentielle différente | Le mode par défaut : pas d’indicateur de session dans le nom d’utilisateur |
| Session persistante | Les requêtes partageant le même identifiant de session partagent une IP jusqu’à la fin de la session | Ajoutez sid-<id> au nom d’utilisateur, éventuellement ttl-<seconds> ; la durée de vie par défaut est de 120 secondes |
| IP fixe | Une adresse dans une ville et un FAI choisis pour toute la période de facturation | Proxies FAI |
Une session persistante se termine aussi de façon anticipée si l’IP résidentielle qui la porte se déconnecte, donc un code qui utilise des sessions doit s’attendre à une nouvelle IP occasionnelle en cours de session. Les sessions persistantes sont conservées par région, donc les outils qui partagent une même session doivent se connecter via le même point d’entrée régional.
La question décisive : qu’est-ce qui va ensemble ?
Observez la plus petite unité de travail que votre scraper répète, et posez-vous deux questions à son sujet.
1. Combien de requêtes composent une unité ? Une page produit récupérée seule est une requête. Une recherche suivie de six pages de détail est un flux. Un test de passage en caisse est un flux avec un état : un panier, un cookie de session, peut-être un jeton CSRF.
2. Combien de temps dure une unité ? Secondes, minutes, ou heures ?
À partir de ces deux réponses :
- Requêtes indépendantes isolées : rotation. Chaque page existe seule, donc il n’y a rien à gagner à conserver une IP, et répartir les requêtes sur de nombreuses adresses évite qu’une seule d’entre elles ne paraisse surchargée.
- Un flux qui se termine en moins de 30 minutes : session persistante. Le site définit des cookies dès la première requête et attend le reste du flux du même visiteur. Changer d’IP au milieu d’une recherche ou d’un panier ressemble à un détournement de session, et c’est une cause fréquente de blocages soudains et de perte d’état.
- Tout ce qui dure plus longtemps, ou une connexion à laquelle vous revenez : IP fixe. Les sessions persistantes sont conçues pour des minutes, pas des heures. Pour une session qui dure toute la journée, ou un compte que vous utilisez quotidiennement, utilisez un proxy FAI. Notre guide sur la configuration des proxies FAI pour les sessions longues traite cela en détail.
En code
Les deux fonctions ci-dessous codent la règle et construisent le nom d’utilisateur Shifter correspondant :
def proxy_username(user, country=None, session_id=None, ttl_seconds=None):
"""Build a Shifter residential username: rotate per request, or stick to one IP."""
parts = [f"customer-{user}"]
if country:
parts.append(f"country-{country}")
if session_id:
parts.append(f"sid-{session_id}")
if ttl_seconds:
parts.append(f"ttl-{ttl_seconds}")
elif ttl_seconds:
raise ValueError("ttl only works together with a session id")
return "-".join(parts)
def choose_rotation(steps, minutes, needs_login=False, same_ip_required=False):
"""Pick a rotation mode for one unit of work.
steps: requests that belong together (one page = 1, a checkout flow = many)
minutes: how long that unit of work takes
"""
if needs_login and minutes > 30:
return "isp" # a login that outlives a sticky session
if steps == 1 and not same_ip_required:
return "rotate" # independent requests: new IP each time
if minutes <= 30:
return "sticky" # a short flow: one IP until it ends
return "isp"
Appliqué à quatre tâches typiques :
from rotation import choose_rotation, proxy_username
jobs = { # session ids must not contain hyphens: the username uses them as separators
"products": dict(steps=1, minutes=0.1),
"search": dict(steps=6, minutes=2),
"checkout": dict(steps=15, minutes=8),
"seller": dict(steps=400, minutes=240, needs_login=True),
}
for name, job in jobs.items():
mode = choose_rotation(**job)
if mode == "rotate":
user = proxy_username("USERNAME", "us")
elif mode == "sticky":
user = proxy_username("USERNAME", "us", session_id=name, ttl_seconds=job["minutes"] * 60 + 120)
else:
user = "an ISP proxy username from your plan"
print(f"{name:<9} {mode:<7} {user}")
products rotate customer-USERNAME-country-us
search sticky customer-USERNAME-country-us-sid-search-ttl-240
checkout sticky customer-USERNAME-country-us-sid-checkout-ttl-600
seller isp an ISP proxy username from your plan
Le TTL est fixé à la durée attendue du flux plus deux minutes de marge, de sorte que la session survit au travail sans s’éterniser. Donnez à chaque flux simultané son propre identifiant de session : deux workers partageant un même identifiant partagent une seule IP, ce qui va à l’encontre du but recherché.
Comment ce choix affecte le coût et le taux de réussite
Taux de réussite. L’erreur de rotation la plus courante consiste à faire une rotation à l’intérieur d’un flux. La première requête reçoit un cookie, la deuxième arrive depuis le FAI d’un autre pays avec ce cookie, et le site la considère comme suspecte. Les sessions persistantes pour les flux corrigent généralement plus d’échecs que tout autre changement isolé. L’erreur inverse, envoyer des milliers de requêtes indépendantes via une seule IP persistante, fait paraître cette unique adresse comme un bot. Notre guide sur les proxies résidentiels persistants versus rotatifs approfondit les deux types d’échec.
Bande passante. Le trafic résidentiel est facturé au gigaoctet, et la rotation en elle-même ne change rien à cela. Ce qui change les choses, ce sont les nouvelles tentatives : chaque flux échoué est téléchargé à nouveau. Adapter le mode au travail réduit les nouvelles tentatives, et c’est de là que vient l’économie. Au sein d’une session persistante, réutiliser la même connexion et les mêmes cookies peut aussi éviter de télécharger deux fois les mêmes ressources.
Vitesse. La rotation par requête signifie une nouvelle route pour chaque requête. Si vous ouvrez aussi une nouvelle connexion à chaque fois, le temps d’établissement s’accumule. Réutiliser les connexions compte plus que le mode de rotation ; notre test dans votre scraper est lent et ce n’est probablement pas la faute du proxy en a mesuré l’ampleur.
Signaux indiquant un mauvais choix
| Ce que vous observez | Cause probable | Changement |
|---|---|---|
| Les flux échouent après la première étape ; panier ou session perdus | Rotation à l’intérieur d’un flux | Session persistante par flux |
| Une IP bloquée après une rafale de requêtes | Trop de travail indépendant sur une seule session persistante | Rotation par requête pour les pages indépendantes |
| Les sessions tombent avant la fin du travail | TTL trop court, ou flux trop long pour une session persistante | Augmenter le TTL ; déplacer le travail de plusieurs heures vers un proxy FAI |
| Deux workers interfèrent entre eux | Identifiant de session partagé | Un identifiant de session par flux simultané |
| Connexions contestées chaque jour | Une connexion sur des IP rotatives ou persistantes | IP FAI fixe par compte |
FAQ
Dois-je faire une rotation de mon IP proxy à chaque requête ?
Pour des requêtes indépendantes, comme récupérer des pages produits sans lien entre elles, oui. Pour tout ce qui s’étend sur plusieurs requêtes avec un état partagé, comme une recherche, un panier ou une connexion, conservez une seule IP pour tout le flux grâce à une session persistante.
Combien de temps une session persistante doit-elle durer ?
Aussi longtemps que le flux qu’elle sert, plus une petite marge. Sur Shifter, la valeur par défaut est de 120 secondes et vous pouvez la définir avec ttl-<seconds>. Les flux de plus de 30 minutes environ, et les connexions auxquelles vous revenez, relèvent des proxies FAI.
La rotation des IP réduit-elle les blocages ?
Elle répartit la charge pour qu’aucune adresse ne paraisse surchargée, ce qui aide pour les requêtes indépendantes. Faire une rotation à l’intérieur d’un flux produit l’effet inverse : cela fait ressembler un seul visiteur à de nombreux visiteurs, ce que les sites bloquent souvent.
La rotation affecte-t-elle le coût de la bande passante ?
Pas directement, puisque le trafic résidentiel est facturé au volume. Indirectement, le mauvais mode provoque des flux échoués et des nouvelles tentatives, qui sont téléchargés à nouveau et alourdissent la facture.
En résumé
Faites une rotation par requête pour le travail indépendant, maintenez une session persistante pour chaque flux qui va de pair, et utilisez une IP FAI fixe pour tout ce qui dure des heures ou implique une connexion à laquelle vous revenez. Décidez en observant votre unité de travail, pas les paramètres du proxy, donnez à chaque flux simultané son propre identifiant de session, et surveillez les signaux du tableau ci-dessus. Notre explication sur le fonctionnement de la rotation des proxies résidentiels couvre les mécanismes derrière chaque mode.