Un schéma s’est imposé au cours des 18 derniers mois. Les systèmes d’IA intéressants, ceux qui produisent un travail utile en production, ne se contentent pas d’interroger un modèle et de retourner sa réponse. Ils récupèrent des données depuis une source en direct au moment de l’inférence, transmettent les résultats au modèle en tant que contexte, et laissent le modèle raisonner à partir des informations les plus récentes disponibles.
Ce schéma porte plusieurs noms. RAG est le plus courant. Tool-use, function-calling, génération ancrée sur la recherche web. Les étiquettes varient ; l’architecture est la même. Un modèle seul ne connaît que ce sur quoi il a été entraîné. Un modèle avec récupération peut répondre à des questions que la date de coupure de l’entraînement ne couvre pas.
Ce dont personne ne parle, c’est la récupération. Plus précisément, ce qui détermine si le site cible sert réellement à l’IA la page qu’elle souhaite obtenir.
Le mode d’échec de la récupération
Imaginons un agent IA en production qui doit répondre à la question “quel est le prix actuel de ce produit sur amazon.com ?” L’agent construit une recherche, interroge un index, obtient des URL, en récupère une, analyse le HTML, trouve le prix, et le retourne.
Cette séquence comporte six étapes, et chacune peut échouer. Celle qui échoue le plus souvent, et qui reçoit le moins d’attention de la part des ingénieurs, est la récupération. Le site cible reçoit une requête, décide de servir la vraie page, une version dégradée, ou rien du tout, et répond. Cette décision repose en grande partie sur ce que le site pense de l’IP source.
Si la requête provient d’une IP de sortie AWS / GCP / Azure, le site a une forte probabilité a priori qu’il s’agit d’un bot. Les grands sites, Amazon, Google, Reddit, X, tous les grands médias, disposent de défenses agressives contre le trafic provenant de datacenters. La page renvoyée est souvent vide, un défi CAPTCHA, une erreur 403, ou (de façon encore plus insidieuse) une version allégée sans prix, sans stock, sans contenu réel.
Le système d’IA, en aval, ne sait pas que la page reçue est dégradée. Il analyse ce qu’il a obtenu, ne trouve rien d’utile, et soit invente une réponse, soit retourne “Je n’ai pas d’informations actuelles à ce sujet.” Ces deux modes d’échec sont pires que de ne pas avoir récupéré la page du tout.
Pourquoi le résidentiel change la donne
Une IP résidentielle est, par construction, une IP qu’un vrai FAI grand public a attribuée à un vrai foyer. Elle dispose derrière elle d’années de trafic normal : streaming, navigation, appels vidéo, utilisation d’applications mobiles. Du point de vue du site cible, les requêtes provenant de cette IP sont indiscernables de celles d’un visiteur domestique, parce qu’elles proviennent effectivement du réseau d’un foyer.
La couche défensive qui se déclenche sur le trafic de datacenter ne se déclenche généralement pas sur le trafic résidentiel. La page renvoyée est celle qu’un visiteur domestique verrait. Le système d’IA en aval de la récupération obtient le contenu réel de la vraie page.
C’est la raison d’être des réseaux de proxies résidentiels en tant que catégorie de produit. C’est aussi la raison pour laquelle les systèmes d’IA en production qui ont besoin de données web fraîches, et il en existe désormais des milliers, paient discrètement pour une infrastructure de proxies résidentiels, même quand leurs schémas d’architecture publics n’en font pas mention.
Trois classes de charges de travail IA, trois configurations différentes
Le schéma de récupération se ressemble en surface, mais les exigences en matière de proxies divergent fortement selon la classe de charge de travail.
Chat ancré sur la recherche. Un utilisateur pose une question, le modèle lance des requêtes vers la recherche web, récupère les 3 à 10 premiers résultats en parallèle, et les résume. La rotation par requête sur un grand pool résidentiel est la bonne primitive : une IP fraîche par récupération, pas de session nécessaire, diversité géographique et de FAI maximale. La charge est en rafales et imprévisible. Les plans facturés à la bande passante conviennent car la bande passante totale évolue avec le volume de questions.
Agents de comparaison d’achats. Un agent aide un utilisateur à comparer les prix entre différents vendeurs. Chaque visite chez un vendeur peut nécessiter plusieurs pages : résultats de recherche, fiche produit, avis, parfois une simulation de passage en caisse. Les sessions persistantes sont la bonne primitive : une IP résidentielle par session vendeur pendant environ 5 minutes, afin que le site du vendeur voie un acheteur cohérent et non des milliers de scrapers. La précision géographique est importante car les prix des vendeurs varient selon la ville. La latence est importante car l’utilisateur attend.
Pipelines de données en continu. Un système de surveillance récupère des prix, des actualités, des dépôts réglementaires, des mentions sur les réseaux sociaux toutes les N minutes. Volume élevé, prévisible, majoritairement parallèle. Rotation par requête, grands pools de sid par job lorsque des sessions cohérentes par site sont nécessaires, budgétisation agressive de la bande passante. La charge la plus proche du scraping traditionnel ; la plus mature sur la pile de proxies.
Si votre système d’IA effectue de la récupération et que vous ne réfléchissez pas consciemment à laquelle de ces configurations vous opérez, la configuration par défaut est probablement inadaptée pour au moins l’une d’entre elles.
Ce que cela donne en code
Un wrapper minimal de récupération ancrée autour d’un proxy résidentiel ressemble à ceci :
import os, requestsfrom urllib.parse import urlparse
SHIFTER_USER = os.environ["SHIFTER_USER"]SHIFTER_PASS = os.environ["SHIFTER_PASS"]
def grounded_fetch(url, country="us", session_id=None, timeout=20): """Fetch a URL through a residential IP. Returns response.text or raises.""" auth_user = f"customer-{SHIFTER_USER}-country-{country}" if session_id: auth_user += f"-sid-{session_id}" proxy = f"http://{auth_user}:{SHIFTER_PASS}@p.shifter.io:443" resp = requests.get( url, proxies={"http": proxy, "https": proxy}, timeout=timeout, headers={"User-Agent": "Mozilla/5.0 (Macintosh) AppleWebKit/537.36"}, ) resp.raise_for_status() return resp.text
# Use case 1: search-grounded chat, fresh IP per fetchfor url in search_results: html = grounded_fetch(url, country="us") # ... parse and feed to LLM
# Use case 2: comparative shopping, sticky IP per vendorfor vendor_url in vendors: domain = urlparse(vendor_url).netloc session = f"agent-{user_id}-{domain}" html = grounded_fetch(vendor_url, country="us", session_id=session) # ... navigate within session
# Use case 3: continuous pipeline, per-request rotation, country fan-outfor country in ["us", "uk", "de", "jp"]: for url in monitoring_urls: html = grounded_fetch(url, country=country) # ... feed to indexerLes trois schémas ne diffèrent que d’un paramètre. Le système d’ancrage n’a pas besoin de connaître les mécanismes des proxies ; il appelle simplement grounded_fetch avec la bonne sémantique de persistance de session pour sa classe de charge de travail.
Points de vigilance
Si vous construisez un ancrage IA sur un réseau de proxies résidentiels, trois modes d’échec sont responsables de la majorité des incidents en production :
Dégradation silencieuse du contenu. Le site cible retourne un 200 avec une page allégée. Votre pipeline ne génère pas d’erreur, il alimente simplement le modèle avec des données inutilisables. Atténuation : validez la structure de la réponse avant de la transmettre au LLM. Si la page est 80 % plus courte que la page médiane de ce domaine, traitez-la comme un échec partiel et réessayez avec une IP différente.
Dérive géographique. Une requête avec country=us est routée via une IP résidentielle américaine, mais la géolocalisation du site cible a placé cette IP spécifique au Canada. La page est revenue en CAD avec un inventaire canadien. Atténuation : utilisez le ciblage au niveau de la ville lorsque la géographie est importante, et vérifiez que la réponse correspond à la locale demandée avant de la consommer.
Expiration de session en cours de flux. Un flux d’agent multi-étapes démarre sur l’IP résidentielle A, le TTL de session expire, la requête suivante arrive sur l’IP résidentielle B, le site cible le remarque et lance un défi de ré-authentification. Atténuation : prolongez le TTL de session pour couvrir le flux le plus long attendu, ou détectez les défis de ré-authentification et effectuez une rotation consciente.
Le point essentiel
Les systèmes d’IA sont désormais l’une des plus grandes catégories de clients pour l’infrastructure de proxies résidentiels. La raison n’est pas que l’IA est particulière, c’est que l’IA multiplie le coût d’une mauvaise récupération. Un prix incorrect dans la réponse d’un chatbot, c’est une mauvaise réponse. Un million de prix incorrects dans un million de réponses de chatbot, c’est un problème de confiance client.
La couche d’infrastructure existait déjà. Elle a été construite pour le scraping, la vérification publicitaire, l’intelligence tarifaire. L’ancrage IA est la classe de charge de travail la plus récente et la plus importante qui s’y appuie, mais les exigences sont les mêmes que celles de toute équipe data sérieuse depuis une décennie. De vraies IP résidentielles, une vraie distribution géographique, un vrai contrôle de session, un coût prévisible.
Si votre système d’IA est ancré sur le web en direct, ce que vous achetez réellement en souscrivant à un plan de proxies résidentiels, c’est la garantie élémentaire que la page que le site cible montre à votre système est la page qu’il montrerait à un vrai utilisateur. C’est le fondement. Tout ce qui se trouve au-dessus, embeddings, récupération, prompting, fine-tuning, ne fonctionne que si le fondement fonctionne.