Il sito non vede mai il tuo laptop
Vede l'IP di uscita. Cambia l'uscita, cambia la pagina — prezzi, SERP, store locator, paywall, tutto.
Ogni dispositivo su internet ha un indirizzo. Ricerca, negozi, annunci e siti di notizie usano quell'indirizzo per decidere cosa vedi — valuta, lingua, classifiche, persino se la pagina si carica. Un agente IA in un datacenter ha un solo indirizzo: quel datacenter. Senza un'uscita localizzata, ogni fetch sembra arrivare dallo stesso edificio.
Chiedi un paese o una città. IP Router sceglie un'uscita lì, invia la richiesta attraverso quell'IP e restituisce la pagina. Lo stesso cervello per un agente JSON e un browser vero.
Vede l'IP di uscita. Cambia l'uscita, cambia la pagina — prezzi, SERP, store locator, paywall, tutto.
cc-JP ti mette su un IP giapponese. lang-ja dice al sito che leggi il giapponese. Di solito li vuoi entrambi.
Login, carrelli e cookie muoiono se l'IP cambia a metà flusso. Un sessid ti fissa a un'uscita finché non scade.
Gli agenti inviano JSON in POST a /api/v1/fetch. Browser e curl parlano CONNECT su :7777. Entrambi chiamano selectRoute.
Scegli la porta adatta a come parla il tuo client. Il targeting è lo stesso in entrambi i casi.
Usala quando il client invia JSON: un tool LLM, uno script, un nodo n8n, il playground.
POST /api/v1/fetch con una chiave Bearer. Metti paese, città, lingua e sessione nel body. La risposta include la pagina, il geo di uscita e route.reason, così vedi perché è stato scelto quell'hop.
Scarica un URL e restituisce il body. Non clicca, non compila moduli e non conserva i cookie di un browser vero. Per un checkout in un browser vero, usa il gateway.
Usala quando il client parla già il proxy HTTP: curl -x, Playwright, Chrome, uno scraper che si aspetta CONNECT.
Punta il proxy a host:7777. Lo username è iprouter-{keyId}-cc-GB-city-london-sessid-job1. La password è la chiave API. Gli stessi token di targeting del body di fetch, solo nello username.
CONNECT non può riscrivere gli header HTTPS. Se ti serve Accept-Language su un sito TLS, deve mandarlo il browser (o Fetch API). lang- nello username è un indizio per il routing e per HTTP, non un'iniezione magica su HTTPS.
| Se sei | Usa |
|---|---|
| Agente JSON / tool LLM | Fetch API |
| Playground / prova un URL | Fetch API |
| curl, Playwright, un browser vero | Gateway :7777 |
| Login e poi crawl della stessa sessione | Entrambe le porte, più un sessid |
Un'uscita è il punto da cui la richiesta esce su internet, per come la vede il sito. Ti serve almeno un'uscita che non sia «questa macchina» prima che le pagine geo cambino.
Incluso nel nodo. Le richieste riescono subito, così il playground funziona. route.reason dirà «direct» oppure «direct fallback (no geo node)». Il sito vede comunque l'IP del tuo host.
Console → Pool proxy. Ogni nodo ha un paese, una città facoltativa e un type. Chiedi Londra: vince un nodo del pool a Londra. Chiedi GB senza città: vince qualsiasi nodo GB.
Aggiungi un solo gateway. IP Router inietta il targeting nello username (-cc-DE-city-berlin-sessid-s1). Usalo quando compri banda da un provider invece di elencare ogni IP.
Metti in rack telefoni Android, assegna al sito un paese e una città, e imposta quante connessioni sono attive. Gli agenti escono da quell'ultimo miglio. Fatturato per connessione al mese. Una prova di 14 giorni copre il primo telefono.
Quando indichi un paese, il router prova in quest'ordine: city pool match → country pool match → backconnect geo injection → direct fallback. Nessun proxy abilitato è un 422, non un fallimento silenzioso.
Fallo una volta, così il resto della guida non resta astratto. Cinque minuti. Non ti serve ancora un'uscita a pagamento.
Landing → Apri la console. In locale non c'è iscrizione. Arrivi su Panoramica.
Il playground è precompilato con l'echo locale. Scegli un paese (US va bene). Lascia la sessione su agent-demo. Invia. Ricevi sempre un 200 dall'echo — questo dimostra la porta, non il geo.
ok deve essere true. route.reason ti dice quale uscita è stata scelta. geo.exit è l'IP che vedrebbe il mondo esterno — vuoto, oppure la tua macchina, su direct.
Aggiungi un nodo di pool o backconnect sotto Pool proxy, oppure un IP farm in una città che ti interessa. Invia di nuovo. reason non deve più dire «direct fallback».
Chiavi API per Fetch API. Endpoint costruisce lo username del gateway. Agenti ha lo schema del tool LLM. Stesso targeting, tre interfacce.
Le stesse manopole ogni volta: paese, città, lingua, sticky, type. Cambia solo quali giri e da quale porta entri. Scegli una riga.
Google (e Bing, e le mappe) non mostrano un solo internet. Mostrano l'internet dal punto in cui ti trovi. Classifiche, local pack, annunci, persino l'ortografia che pensano tu volessi — tutto dipende dall'IP di uscita e dall'header della lingua. Se il tuo agente fa fetch da un datacenter US, stai valutando una pagina di risultati US, anche quando la domanda è «come appare a Manchester».
Ottieni la SERP del paese dell'host. Una query su Londra da una VM in Virginia resta una pagina della Virginia con una query che sembra di Londra.
cc-GB + city-london + lang-en_GB. L'hop esce da un'uscita britannica, Accept-Language è inglese britannico e la pagina è quella che vedrebbe un visitatore a Londra.
Entrambe le porte. Fetch quando l'agente invia JSON; gateway quando il client parla 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 è una corrispondenza geo, geo.exit non è il tuo host e il local pack cita attività di Londra — non quelle accanto al tuo server.
Un IP giapponese con un Accept-Language inglese spesso serve ancora l'inglese. Imposta lang (o language nel body di fetch) oltre a cc.
Se la stringa di sessione cambia, sei una persona nuova. I login cadono. Riusa lo stesso sessid per tutto il lavoro.
Un 200 dall'echo su questa macchina non dimostra il geo. Leggi route.reason. Se dice direct fallback, il sito ha comunque visto il tuo host.
Alcune origini fanno il fingerprint dell'ASN. Se la pagina è un muro di captcha o una pagina vuota «datacenter rilevato», imposta type-residential oppure usa un IP farm.
Il gateway non può iniettare Accept-Language in un tunnel HTTPS CONNECT. Manda l'header dal client, oppure usa Fetch API.
Se ogni nodo è disabilitato, ricevi 422 «No enabled proxies in the pool.» Abilita il nodo direct oppure aggiungine uno acceso.