IP Router
Come funziona · per principianti

I siti ti giudicano dall'IP. Questo è il centralino che sceglie quale IP indossa il tuo agente.

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.

L'idea

Quattro fatti, poi puoi usare il resto.

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.

Il paese non è la lingua

cc-JP ti mette su un IP giapponese. lang-ja dice al sito che leggi il giapponese. Di solito li vuoi entrambi.

Sticky vuol dire «la stessa persona»

Login, carrelli e cookie muoiono se l'IP cambia a metà flusso. Un sessid ti fissa a un'uscita finché non scade.

Due porte, un kernel

Gli agenti inviano JSON in POST a /api/v1/fetch. Browser e curl parlano CONNECT su :7777. Entrambi chiamano selectRoute.

Parole

La dozzina di termini che usa la console.

IP / uscita
L'indirizzo che vede il sito. Non il tuo laptop, non l'host dell'agente — l'ultimo hop uscito da IP Router.
cc (paese)
Codice paese ISO. GB è il Regno Unito, DE è la Germania, JP è il Giappone. Questo sceglie il mercato.
città
Più fine del paese. Londra rispetto a Manchester, New York rispetto ad Austin. Gli spazi diventano underscore negli username: city-new_york.
lingua
Header Accept-Language. La domanda del sito «che lingua leggi?». Indipendente dall'IP.
sessid (sticky)
Un nome che riusi così ogni hop di un lavoro usa la stessa uscita. Il TTL di default è 10 minuti; sesstime lo sovrascrive.
tipo
Che tipo di rete è l'uscita: residential, datacenter, mobile o ISP. I siti le trattano in modo diverso.
pool
Un elenco di nodi che hai aggiunto, ciascuno con un paese e magari una città. Il router abbina il targeting a un nodo.
backconnect
Un solo gateway del vendor. IP Router aggiunge -cc-US-city-austin-sessid-job1 allo username di quel vendor.
direct
Questa macchina. Va bene per imparare. Il sito vede comunque l'IP del tuo host, quindi le pagine geo non cambiano.
IP farm
Telefoni Android che metti in rack in una città. Gli agenti escono da quell'ultimo miglio, fatturati per connessione attiva — non per GB.
Fetch API
POST /api/v1/fetch con JSON. Per agenti e LLM che non parlano HTTP CONNECT.
Gateway :7777
Un proxy HTTP. curl -x, Playwright, browser. Il targeting sta nello username, in stile Oxylabs.
Due porte

Stesso targeting. Client diversi.

Scegli la porta adatta a come parla il tuo client. Il targeting è lo stesso in entrambi i casi.

Fetch API — la porta degli agenti

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.

Gateway HTTP — la porta del browser

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 seiUsa
Agente JSON / tool LLMFetch API
Playground / prova un URLFetch API
curl, Playwright, un browser veroGateway :7777
Login e poi crawl della stessa sessioneEntrambe le porte, più un sessid
Uscite

Da dove esce davvero la richiesta.

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.

Direct — questa macchina

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.

Pool — gli IP che hai aggiunto

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.

Backconnect — un gateway del vendor

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.

IP farm — telefoni in una città

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.

Primo tentativo

Cinque minuti. Non ti serve ancora un'uscita a pagamento.

Fallo una volta, così il resto della guida non resta astratto. Cinque minuti. Non ti serve ancora un'uscita a pagamento.

  1. 01

    Landing → Apri la console. In locale non c'è iscrizione. Arrivi su Panoramica.

  2. 02

    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.

  3. 03
    Leggi tre campi

    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.

  4. 04

    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».

  5. 05

    Chiavi API per Fetch API. Endpoint costruisce lo username del gateway. Agenti ha lo schema del tool LLM. Stesso targeting, tre interfacce.

Casi d'uso

Come funziona per ogni lavoro.

Le stesse manopole ogni volta: paese, città, lingua, sticky, type. Cambia solo quali giri e da quale porta entri. Scegli una riga.

città / paese

Vedi la ricerca come la vede qualcuno in quella città

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».

Senza IP Router

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.

Con esso

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.

Come funziona

  1. 01Dai un nome al mercato: paese GB, città London, lingua en-GB. La città conta — Manchester e London hanno local pack diversi.
  2. 02Usa Fetch API se vuoi HTML/JSON da far leggere all'agente. Usa il gateway se un browser headless guida la SERP.
  3. 03Manda un sessid stabile se pagini o clicchi avanti. Una sessione nuova a metà scroll sembra un nuovo visitatore.
  4. 04Leggi route.reason. Vuoi city pool match (o backconnect geo injection). direct fallback vuol dire che sei ancora sull'host.
  5. 05Confronta due esecuzioni: stessa query, US contro GB. Local pack e annunci devono spostarsi. Se non si spostano, non sei ancora su un'uscita geo.
Porta

Entrambe le porte. Fetch quando l'agente invia JSON; gateway quando il client parla CONNECT.

cc-GBcity-londonlang-en_GB
Fetch API
{
  "url": "https://www.google.com/search?q=best+coffee+near+me",
  "geo": { "country": "GB", "city": "London", "language": "en-GB" },
  "session": "serp-london"
}
Gateway :7777
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
Capisci che ha funzionato quando

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.

Errori comuni

  • Solo il paese. GB senza città spesso ti porta su una pagina nazionale, senza il local pack che ti interessava.
  • Niente lang. Un IP britannico con en-US tende ancora all'ortografia americana e a risultati US nel mix.
route.reason

La frase che ti dice se il geo è davvero successo.

city pool match
Hai chiesto una città e un nodo del pool in quella città era abilitato. La corrispondenza geo migliore.
country pool match
Nessun nodo città (o non hai chiesto una città), ma un nodo del pool in quel paese era abilitato.
backconnect geo injection
Nessun nodo del pool in quel paese. Un gateway backconnect è attivo, quindi il targeting è stato scritto nel suo username.
direct fallback (no geo node)
Niente in quel paese. La richiesta è uscita lo stesso — da questa macchina. Le pagine geo non cambiano. Aggiungi un nodo o una farm.
sticky session
Hai riusato un sessid e la vecchia uscita è ancora abilitata. Lo stesso IP dell'ultima volta. TTL aggiornato.
backconnect rotate / pool rotate / direct
Non hai indicato un paese. Il router ha scelto un'uscita tra quelle disponibili e, se hai mandato una sessione, ha fatto l'hash della scelta così resta ferma.
Errori

Quelli che sembrano bug del prodotto.

Paese senza lingua

Un IP giapponese con un Accept-Language inglese spesso serve ancora l'inglese. Imposta lang (o language nel body di fetch) oltre a cc.

Un sessid nuovo a ogni richiesta

Se la stringa di sessione cambia, sei una persona nuova. I login cadono. Riusa lo stesso sessid per tutto il lavoro.

Fidarsi del direct fallback

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.

Datacenter contro residential

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.

HTTPS + gateway + lang

Il gateway non può iniettare Accept-Language in un tunnel HTTPS CONNECT. Manda l'header dal client, oppure usa Fetch API.

Pool vuoto

Se ogni nodo è disabilitato, ricevi 422 «No enabled proxies in the pool.» Abilita il nodo direct oppure aggiungine uno acceso.