Le site ne voit pas votre laptop
Il voit l’IP de sortie. Changez la sortie, la page change — prix, SERP, locator, paywall.
Chaque appareil sur internet a une adresse. Recherche, boutiques, pubs et médias s’en servent pour décider ce que vous voyez — devise, langue, classements, parfois si la page charge. Un agent IA dans un datacenter n’a qu’une adresse : ce datacenter. Sans sortie localisée, chaque fetch semble sortir du même immeuble.
Vous demandez un pays ou une ville. IP Router choisit une sortie là-bas, envoie la requête par cette IP et rend la page. Le même cerveau pour un agent JSON et un vrai navigateur.
Il voit l’IP de sortie. Changez la sortie, la page change — prix, SERP, locator, paywall.
cc-JP vous met sur une IP japonaise. lang-ja dit au site que vous lisez le japonais. En général, les deux.
Logins, paniers et cookies meurent si l’IP change en cours de route. Un sessid vous cloue à une sortie jusqu’à expiration.
Les agents POST JSON vers /api/v1/fetch. Navigateurs et curl parlent CONNECT sur :7777. Les deux appellent selectRoute.
Choisissez la porte qui correspond à la façon dont parle votre client. Le ciblage est le même des deux côtés.
Utilisez-la quand votre client envoie du JSON : un outil LLM, un script, un nœud n8n, le playground.
POST /api/v1/fetch avec une clé Bearer. Mettez le pays, la ville, la langue et la session dans le corps. La réponse inclut la page, le geo de sortie et route.reason, pour voir pourquoi ce saut a été choisi.
Elle récupère une URL et renvoie le corps. Elle ne clique pas, ne remplit pas les formulaires et ne garde pas les cookies d’un vrai navigateur. Pour un checkout dans un vrai navigateur, utilisez la passerelle.
Utilisez-la quand le client parle déjà proxy HTTP : curl -x, Playwright, Chrome, un scraper qui attend CONNECT.
Pointez le proxy sur host:7777. Le nom d’utilisateur est iprouter-{keyId}-cc-GB-city-london-sessid-job1. Le mot de passe est la clé API. Les mêmes jetons de ciblage que dans le corps du fetch, simplement dans le nom d’utilisateur.
CONNECT ne peut pas réécrire les en-têtes HTTPS. S’il vous faut Accept-Language sur un site TLS, le navigateur (ou la Fetch API) doit l’envoyer. lang- dans le nom d’utilisateur est un indice pour le routage et pour HTTP, pas une injection HTTPS magique.
| Si vous êtes | Utilisez |
|---|---|
| Agent JSON / outil LLM | Fetch API |
| Playground / essayer une URL | Fetch API |
| curl, Playwright, un vrai navigateur | Passerelle :7777 |
| Connexion, puis crawl de la même session | L’une ou l’autre porte, plus un sessid |
Une sortie, c’est l’endroit d’où la requête quitte internet, du point de vue du site. Il vous en faut au moins une qui ne soit pas « cette machine » avant que les pages geo changent.
Livré avec le nœud. Les requêtes réussissent tout de suite, pour que le playground fonctionne. route.reason dira « direct » ou « direct fallback (no geo node) ». Le site voit encore l’IP de votre hôte.
Console → Proxy pool. Chaque nœud a un pays, une ville facultative et un type. Demandez Londres : un nœud de pool à Londres l’emporte. Demandez GB sans ville : n’importe quel nœud GB l’emporte.
Vous ajoutez une passerelle. IP Router injecte le ciblage dans le nom d’utilisateur (-cc-DE-city-berlin-sessid-s1). À utiliser quand vous achetez de la bande passante chez un fournisseur au lieu de lister chaque IP.
Mettez des téléphones Android en rack, marquez le site d’un pays et d’une ville, fixez combien de connexions sont actives. Les agents sortent par ce dernier kilomètre. Facturé par connexion et par mois. Un essai de 14 jours couvre le premier téléphone.
Quand vous nommez un pays, le routeur essaie dans cet ordre : city pool match → country pool match → backconnect geo injection → direct fallback. Aucun proxy activé du tout, c’est un 422, pas un échec silencieux.
Faites ceci une fois, pour que le reste du guide ne reste pas abstrait. Cinq minutes. Vous n’avez pas encore besoin d’une sortie payante.
Landing → Ouvrir la console. En local, il n’y a pas d’inscription. Vous arrivez sur Overview.
Le playground est prérempli avec l’echo local. Choisissez un pays (US convient). Laissez la session à agent-demo. Envoyez. Vous obtenez toujours un 200 de l’echo — cela prouve la porte, pas le geo.
ok doit valoir true. route.reason vous dit quelle sortie a été choisie. geo.exit est l’IP que l’extérieur verrait — vide, ou votre machine en direct.
Ajoutez un nœud de pool ou backconnect sous Proxy pool, ou un IP farm dans une ville qui compte pour vous. Renvoyez. reason ne doit plus dire « direct fallback ».
API keys pour la Fetch API. Endpoints construit le nom d’utilisateur de la passerelle. Agents contient le schéma d’outil LLM. Même ciblage, trois présentations.
Les mêmes réglages à chaque fois : pays, ville, langue, sticky, type. Seuls changent ceux que vous tournez et la porte que vous empruntez. Choisissez une ligne.
Google (et Bing, et maps) ne montrent pas un seul internet. Ils montrent l’internet d’où vous êtes. Classements, local pack, pubs, même l’orthographe — tout dépend de l’IP de sortie et de l’en-tête de langue. Si votre agent fetch depuis un datacenter US, vous notez une page US, même si la question est « à quoi ça ressemble à Manchester ».
Vous obtenez le SERP du pays de l’hôte. Une requête Londres depuis une VM de Virginie reste une page Virginie, avec une requête qui a la forme de Londres.
cc-GB + city-london + lang-en_GB. Le saut sort par une sortie britannique, Accept-Language est l’anglais britannique, et la page est celle qu’un visiteur londonien obtiendrait.
N’importe quelle porte. Fetch si l’agent poste du JSON ; gateway si le client parle CONNECT.
{
"url": "https://www.google.com/search?q=best+coffee+near+me",
"geo": { "country": "GB", "city": "London", "language": "en-GB" },
"session": "serp-london"
}curl -x http://iprouter-key_dev-cc-GB-city-london-lang-en_GB-sessid-serp-london:ipr_live_dev_key@127.0.0.1:7777 https://www.google.com/search?q=best+coffee+near+me
route.reason est une correspondance geo, geo.exit n’est pas votre hôte, et le local pack cite des commerces de Londres — pas ceux d’à côté de votre serveur.
Une IP japonaise avec un Accept-Language anglais sert encore souvent l’anglais. Réglez lang (ou language dans le corps du fetch) en plus de cc.
Si la chaîne de session change, vous êtes une nouvelle personne. Les connexions tombent. Réutilisez le même sessid pour toute la tâche.
Un 200 de l’echo sur cette machine ne prouve pas le geo. Lisez route.reason. S’il dit direct fallback, le site a encore vu votre hôte.
Certaines origines relèvent l’empreinte de l’ASN. Si la page est un mur captcha ou un blanc « datacenter detected », réglez type-residential ou utilisez un IP farm.
La passerelle ne peut pas injecter Accept-Language dans un tunnel HTTPS CONNECT. Envoyez l’en-tête depuis le client, ou utilisez la Fetch API.
Si tous les nœuds sont désactivés, vous obtenez 422 « No enabled proxies in the pool. » Activez le nœud direct ou ajoutez-en un qui est allumé.