Les proxys résidentiels sont plus lents qu’une connexion directe, et ce n’est pas un bug. Votre trafic passe par un vrai appareil grand public sur un vrai réseau domestique, ce qui est exactement ce qui vous achète la confiance d’un vrai utilisateur, et cela coûte des millisecondes. Il y a un plancher, et aucune quantité de réglage ne passe en dessous.
Mais voici ce que la plupart des plaintes sur la performance manquent : l’essentiel de la latence contre laquelle les gens luttent n’est pas le plancher, c’est du surcoût qu’ils ont ajouté eux-mêmes. Refaire le handshake à chaque requête, des filtres géo trop serrés, des payloads surdimensionnés, et des tempêtes de réessais coûtent typiquement bien plus que le saut résidentiel. Ce guide sépare l’irréductible du reste, et parcourt les techniques qui bougent vraiment le chiffre, grossièrement par ordre d’impact.
D’abord, savoir où passe le temps
Une requête proxifiée est une chaîne : votre client → le gateway → l’appareil de sortie → la cible, et retour. Le temps se répartit en quatre seaux :
- Établissement de connexion — handshake TCP vers le gateway, le tunnel CONNECT, puis un handshake TLS vers la cible. C’est généralement le plus gros coût évitable, et vous le payez à nouveau à chaque nouvelle connexion.
- Le saut résidentiel — le vrai appareil grand public et son réseau domestique. C’est le plancher. Il varie selon la qualité de l’appareil et du réseau, et vous ne pouvez pas le régler pour le faire disparaître.
- Temps de réponse de la cible — combien de temps le site lui-même prend. Pas la faute du proxy, et il vaut la peine de l’isoler avant de blâmer quoi que ce soit d’autre.
- Réessais — une requête bloquée ou expirée qui doit être réessayée ne coûte pas seulement sa propre latence, elle multiplie votre latence effective.
Seul le deuxième seau est fixe. Les trois autres sont à vous d’optimiser.
1. Réutiliser les connexions (le plus gros gain à lui seul)
Chaque connexion toute neuve paie la chaîne de handshake complète à travers le proxy, ce qui peut facilement éclipser la requête réelle. Si votre code crée une connexion fraîche par requête, vous payez cette taxe encore et encore.
Utilisez une session ou un client avec pooling de connexions plutôt que des appels ponctuels :
import os, requests
USER, PASS = os.environ["SHIFTER_USER"], os.environ["SHIFTER_PASS"]# Session sticky pour que la connexion du pool reste sur une IP de sortieproxy_url = f"http://{USER}-country-us-sid-job1-ttl-600:{PASS}@p.shifter.io:443"proxies = {"http": proxy_url, "https": proxy_url}
with requests.Session() as s: # met en pool + réutilise les connexions s.proxies.update(proxies) for url in urls: r = s.get(url, timeout=30) # handshake payé une fois, pas par requêteLe hic à comprendre : la rotation et la réutilisation de connexions tirent en sens inverse. Si vous tournez vers une nouvelle IP à chaque requête, chaque requête est une nouvelle connexion et un nouveau handshake. C’est bien quand vous avez besoin de rotation par requête, mais reconnaissez que vous achetez la rotation avec de la latence.
2. Utiliser des sessions sticky là où la charge le permet
Dans la foulée : une session sticky (sid + ttl) vous épingle à une IP de sortie, ce qui rend les connexions poolées réellement réutilisables. Tournez entre unités logiques de travail, par job, par cible, par identité, plutôt qu’entre chaque requête individuelle.
Si un flux couvre plusieurs requêtes qui devraient de toute façon ressembler à un utilisateur (paginer des résultats, une page à plusieurs étapes), sticky est à la fois le comportement correct et le plus rapide. Voir sticky vs rotatif pour choisir le bon mode.
3. Scaler par la concurrence, pas en poursuivant une requête plus rapide
La latence résidentielle par requête a un plancher, donc la façon de bouger le débit est le parallélisme, pas de grappiller des millisecondes sur un seul appel. L’async vous emmène bien plus loin que la micro-optimisation :
import asyncio, httpx
async def fetch(client, url): r = await client.get(url, timeout=30) return r.status_code
async def main(urls): async with httpx.AsyncClient(proxy=proxy_url) as client: # connexions réutilisées return await asyncio.gather(*(fetch(client, u) for u in urls))Mais ne montez pas la concurrence aveuglément. Trop de requêtes parallèles sur une cible déclenchent des rate limits et la détection comportementale, et les blocages vous coûtent bien plus de latence (en réessais) que la concurrence n’en a économisé. Trouvez le niveau que la cible tolère et restez en dessous.
4. Ne sur-contraignez pas vos filtres géo
Chaque flag de ciblage rétrécit le pool d’IP de sortie éligibles. Empilez country + city + asn et vous sélectionnez peut-être dans un petit ensemble, ce qui signifie moins d’appareils, possiblement plus lents, plus d’échecs, et plus de réessais. Desserrez tout filtre dont vos données n’ont pas vraiment besoin.
La réserve : si votre cas d’usage exige véritablement une localisation précise pour que les données soient correctes, gardez-la. La précision bat la vitesse, une réponse rapide du mauvais marché ne vaut rien (quand le ciblage au niveau de la ville compte). Ne payez simplement pas la taxe pour une précision que vous n’utilisez pas.
5. Des payloads plus petits sont des payloads plus rapides
Les optimisations de latence et de bande passante sont le même travail ici : moins d’octets traversent le fil, moins de temps de transfert. Sautez le rendu navigateur quand le HTML ou un endpoint JSON contient vos données, bloquez images/médias/polices quand vous devez rendre, et gardez la compression active. La liste complète est dans comment réduire les coûts de bande passante proxy, et chaque élément y raccourcit vos requêtes autant que votre facture.
6. Poser des timeouts et échouer vite
Une requête bloquée cloue un worker et tire votre latence de queue. Posez des timeouts explicites de connexion et de lecture, et quand quelque chose reste pendu, abandonnez et réessayez sur une IP fraîche plutôt que d’attendre un défaut de 60 secondes. Échouer vite sur une mauvaise sortie est presque toujours plus rapide qu’espérer qu’elle se rétablisse.
7. Réduire les réessais en ne se faisant pas bloquer
C’est le dormeur. Une requête qui se fait bloquer et réessayer vous coûte deux ou trois allers-retours au lieu d’un, donc votre latence effective est bien pire que votre latence mesurée par requête. Réduire le taux de blocage est une optimisation de latence : utilisez des IP de qualité, envoyez des en-têtes réalistes et une empreinte cohérente, et cadencez raisonnablement. Voir pourquoi les scrapers se font bloquer et comment éviter de se faire bloquer.
8. Mesurer les percentiles, et isoler la cible
Optimisez ce que vous pouvez voir. Suivez p50 et p95 plutôt qu’une moyenne, la queue est ce qui bloque les workers concurrents, et séparez le surcoût proxy de la lenteur de la cible en chronométrant un endpoint neutre rapide à côté de votre vraie cible. La méthode est dans comment tester la vitesse, le taux de réussite et la précision de localisation d’un proxy résidentiel. Sans cette séparation, vous passerez une semaine à régler un proxy alors que la cible était la partie lente.
Ce que vous ne pouvez pas corriger, et quoi faire
Le saut résidentiel est un plancher. Parfaitement réglé, le résidentiel n’égalera pas le p50 du datacenter, parce qu’un vrai appareil grand public est dans le chemin par conception. C’est l’échange : de la latence contre la confiance qui vous obtient la vraie page sur les cibles défendues (résidentiel vs datacenter).
Si votre charge a véritablement besoin d’une latence plus basse et plus constante et d’une IP stable, et n’a pas besoin d’un pool résidentiel rotatif, c’est un signal que vous voulez peut-être un produit différent plutôt qu’une config résidentielle plus rapide. Les proxys ISP se situent entre les deux : vitesse de niveau datacenter avec des adresses enregistrées comme résidentielles (le juste milieu). Choisir le bon outil bat le sur-réglage du mauvais.
FAQ
Pourquoi les proxys résidentiels sont-ils plus lents que les datacenter ? Parce que le trafic passe par un vrai appareil grand public sur un réseau domestique, ce qui ajoute un saut par conception. Ce saut est ce qui vous fait ressembler à un vrai utilisateur sur les sites qui bloquent les IP de datacenter. C’est un échange délibéré, pas un défaut.
Quel est le moyen le plus rapide de réduire la latence d’un proxy résidentiel ? Réutiliser les connexions. Une session poolée avec une IP sticky paie le handshake TCP/TLS une fois au lieu de à chaque requête, ce qui est généralement le plus gros morceau de latence évitable dans une configuration naïve.
La rotation d’IP ralentit-elle les requêtes ? Oui, un peu : une nouvelle IP signifie une nouvelle connexion et un nouveau handshake, donc la rotation par requête renonce à la réutilisation de connexions. Tournez entre unités logiques de travail plutôt qu’à chaque requête quand votre cas d’usage le permet.
Des filtres géo plus serrés ralentissent-ils les choses ? Ils le peuvent. Chaque filtre rétrécit le pool éligible, donc pays + ville + ASN ensemble peuvent laisser peu de sorties, ce qui signifie des appareils plus lents et plus d’échecs. Gardez la précision dont vos données ont vraiment besoin et lâchez le reste.
Comment savoir si c’est le proxy ou la cible qui est lent ? Chronométrez le même test contre un endpoint neutre rapide et contre votre vraie cible à travers le même proxy. La différence est grosso modo le temps de réponse propre de la cible. Mesurez p50 et p95, pas la moyenne.
En résumé
Les proxys résidentiels ont un plancher de latence que vous ne pouvez pas régler pour le faire disparaître, mais presque tout au-dessus de ce plancher est sous votre contrôle. Réutilisez les connexions, utilisez des sessions sticky là où le travail le permet, scalez par la concurrence au lieu de poursuivre la vitesse d’une seule requête, ne sur-contraignez pas la géo, réduisez les payloads, échouez vite sur les blocages, et surtout arrêtez de vous faire bloquer, car les réessais dominent la latence effective. Puis mesurez les percentiles pour optimiser la queue qui fait vraiment mal.
Faites cela et une configuration de proxy résidentiel performe près de son plafond réaliste. Si vous avez encore besoin de moins de latence avec une IP statique, regardez les proxys ISP plutôt que de lutter contre la physique. La page tarifs propose les forfaits au Go pour tester l’un ou l’autre contre votre propre charge de travail.