De website ziet je laptop nooit
Die ziet de exit-IP. Andere exit, andere pagina — prijzen, SERP, winkelzoeker, betaalmuur, alles.
Elk apparaat op internet heeft een adres. Zoekmachines, winkels, advertenties en nieuwssites gebruiken dat adres om te bepalen wat je ziet — valuta, taal, ranglijsten, zelfs of de pagina überhaupt laadt. Een AI-agent in een datacenter heeft één adres: dat datacenter. Zonder gelokaliseerde exit lijkt elke fetch uit één gebouw te komen.
Je noemt een land of een stad. IP Router kiest daar een exit, stuurt het verzoek via die IP naar buiten en geeft de pagina terug. Dezelfde kern voor een JSON-agent en een echte browser.
Die ziet de exit-IP. Andere exit, andere pagina — prijzen, SERP, winkelzoeker, betaalmuur, alles.
cc-JP zet je op een Japanse IP. lang-ja vertelt de site dat je Japans leest. Meestal wil je allebei.
Logins, winkelwagens en cookies gaan verloren als de IP halverwege wisselt. Een sessid zet je vast op één exit tot hij verloopt.
Agents POSTen JSON naar /api/v1/fetch. Browsers en curl spreken CONNECT op :7777. Allebei roepen selectRoute aan.
Kies de deur die past bij hoe je client praat. De targeting is in beide gevallen hetzelfde.
Gebruik dit als je client JSON post: een LLM-tool, een script, een n8n-node, de playground.
POST /api/v1/fetch met een Bearer-sleutel. Zet country, city, language en session in de body. Het antwoord bevat de pagina, de exit-geo en route.reason, zodat je ziet waarom die hop is gekozen.
Het haalt een URL op en geeft de body terug. Het klikt niet, vult geen formulieren in en bewaart geen echte cookie jar van de browser. Voor een checkout in een echte browser gebruik je de gateway.
Gebruik dit als de client al HTTP-proxy spreekt: curl -x, Playwright, Chrome, een scraper die CONNECT verwacht.
Richt de proxy op host:7777. De username is iprouter-{keyId}-cc-GB-city-london-sessid-job1. Het wachtwoord is de API-sleutel. Dezelfde targetingtokens als in de fetch-body, alleen in de username.
CONNECT kan HTTPS-headers niet herschrijven. Heb je Accept-Language nodig op een TLS-site, dan moet de browser (of de Fetch API) die sturen. lang- in de username is een hint voor de routing en voor HTTP, geen magische HTTPS-injectie.
| Als je | Gebruik |
|---|---|
| JSON-agent / LLM-tool | Fetch API |
| Playground / een URL proberen | Fetch API |
| curl, Playwright, een echte browser | Gateway :7777 |
| Inloggen en daarna dezelfde sessie crawlen | Beide deuren, plus een sessid |
Een exit is waar het verzoek het internet verlaat, voor zover de website dat ziet. Je hebt minstens één exit nodig die niet “deze machine” is, voordat geo-pagina's veranderen.
Wordt meegeleverd met de node. Verzoeken slagen meteen, zodat de playground werkt. route.reason zegt “direct” of “direct fallback (no geo node)”. De website ziet nog steeds de IP van je host.
Console → Proxypool. Elke node heeft een land, een optionele stad en een type. Vraag je Londen, dan wint een poolnode in Londen. Vraag je GB zonder stad, dan wint elke GB-node.
Je voegt één gateway toe. IP Router injecteert de targeting in de username (-cc-DE-city-berlin-sessid-s1). Gebruik dit als je bandbreedte bij een provider koopt in plaats van elke IP apart te zetten.
Zet Android-telefoons in een rack, tag de site met een land en een stad, en stel in hoeveel verbindingen live zijn. Agents gaan via die laatste mijl naar buiten. Gefactureerd per verbinding per maand. Een proef van 14 dagen dekt de eerste telefoon.
Noem je een land, dan probeert de router in deze volgorde: city pool match → country pool match → backconnect geo injection → direct fallback. Helemaal geen ingeschakelde proxies is een 422, geen stille misser.
Doe dit één keer, zodat de rest van de gids niet abstract is. Vijf minuten. Je hebt nog geen betaalde exit nodig.
Landing → Console openen. Lokaal is er geen aanmelding. Je komt op Overzicht.
De playground is voorgevuld met de lokale echo. Kies een land (US is prima). Laat de sessie op agent-demo staan. Verstuur. Je krijgt altijd een 200 van echo — dit bewijst de deur, niet de geo.
ok hoort true te zijn. route.reason zegt welke exit is gekozen. geo.exit is de IP die de buitenwereld zou zien — leeg, of je machine bij direct.
Voeg een pool- of backconnect-node toe onder Proxypool, of een IP farm in een stad die je belangrijk vindt. Verstuur opnieuw. reason hoort niet meer “direct fallback” te zeggen.
API-sleutels voor de Fetch API. Eindpunten bouwt de gateway-username. Onder Agents staat het schema van de LLM-tool. Dezelfde targeting, drie vormen.
Elke keer dezelfde knoppen: land, stad, taal, sticky, type. De klus verandert alleen aan welke je draait en door welke deur je loopt. Kies een rij.
Google (en Bing, en Maps) tonen niet één internet. Ze tonen het internet vanaf de plek waar je staat. Ranglijsten, de local pack, advertenties, zelfs welke spelling ze denken dat je bedoelde — dat hangt allemaal af van de exit-IP en de taalheader. Als je agent fetcht vanuit een Amerikaans datacenter, beoordeel je een Amerikaanse resultatenpagina, ook als de vraag is “hoe ziet dit eruit in Manchester.”
Je krijgt de SERP van het land van de host. Een zoekopdracht voor Londen vanaf een VM in Virginia is nog steeds een Virginia-pagina met een querystring die op Londen lijkt.
cc-GB + city-london + lang-en_GB. De hop gaat via een Britse exit naar buiten, Accept-Language is Brits Engels, en de pagina is degene die een bezoeker in Londen zou krijgen.
Beide deuren. Fetch als de agent JSON post; de gateway als de client CONNECT spreekt.
{
"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 is een geo-hit, geo.exit is niet je host, en de local pack noemt bedrijven in Londen — niet die naast je server.
Een Japanse IP met een Engelse Accept-Language serveert vaak nog steeds Engels. Zet ook lang (of language in de fetch-body), naast cc.
Verandert de sessiestring, dan ben je een nieuw persoon. Logins vallen weg. Hergebruik dezelfde sessid voor de hele klus.
Een 200 van echo op deze machine is geen bewijs van geo. Lees route.reason. Staat daar direct fallback, dan zag de website nog steeds je host.
Sommige origins herkennen de ASN. Is de pagina een captcha-muur of een lege pagina met “datacenter detected”, zet dan type-residential of gebruik een IP farm.
De gateway kan Accept-Language niet in een HTTPS CONNECT-tunnel injecteren. Stuur de header vanaf de client, of gebruik de Fetch API.
Staat elke node uit, dan krijg je 422 “No enabled proxies in the pool.” Zet de direct-node aan, of voeg er een toe die aan staat.