O site nunca vê o seu notebook
Ele vê o IP de saída. Troque a saída e a página muda — preços, SERP, localizador de lojas, paywall, tudo.
Todo aparelho na internet tem um endereço. Busca, lojas, anúncios e sites de notícia usam esse endereço para decidir o que você vê — moeda, idioma, posições, até se a página carrega. Um agente de IA num datacenter tem um endereço: o desse datacenter. Sem uma saída localizada, todo fetch parece ter saído do mesmo prédio.
Você pede um país ou uma cidade. O IP Router escolhe uma saída lá, manda a requisição por esse IP e devolve a página. O mesmo cérebro para um agente JSON e um navegador de verdade.
Ele vê o IP de saída. Troque a saída e a página muda — preços, SERP, localizador de lojas, paywall, tudo.
cc-JP põe você num IP do Japão. lang-ja diz ao site que você lê japonês. Em geral você quer os dois.
Login, carrinho e cookies morrem se o IP mudar no meio do fluxo. Um sessid fixa você numa saída até expirar.
Agentes fazem POST de JSON em /api/v1/fetch. Navegadores e curl falam CONNECT em :7777. Os dois chamam selectRoute.
Escolha a porta que combina com o jeito que o seu cliente fala. O direcionamento é o mesmo nos dois casos.
Use quando o seu cliente envia JSON: uma ferramenta de LLM, um script, um nó do n8n, o playground.
POST /api/v1/fetch com uma chave Bearer. Coloque país, cidade, idioma e sessão no corpo. A resposta inclui a página, o geo da saída e route.reason, para você ver por que aquele salto foi escolhido.
Ela busca uma URL e devolve o corpo. Não clica, não preenche formulário e não guarda os cookies de um navegador de verdade. Para um checkout num navegador de verdade, use o gateway.
Use quando o cliente já fala proxy HTTP: curl -x, Playwright, Chrome, um scraper que espera CONNECT.
Aponte o proxy para host:7777. O username é iprouter-{keyId}-cc-GB-city-london-sessid-job1. A senha é a chave de API. Os mesmos tokens de direcionamento do corpo do fetch, só que no username.
O CONNECT não reescreve cabeçalhos HTTPS. Se você precisa de Accept-Language num site TLS, o navegador (ou a Fetch API) tem que enviar. lang- no username é uma dica para o roteamento e para HTTP, não uma injeção mágica em HTTPS.
| Se você é | Use |
|---|---|
| Agente JSON / ferramenta de LLM | Fetch API |
| Playground / testar uma URL | Fetch API |
| curl, Playwright, um navegador de verdade | Gateway :7777 |
| Entrar e depois varrer a mesma sessão | Qualquer porta, mais um sessid |
Uma saída é o ponto em que a requisição sai para a internet, do ponto de vista do site. Você precisa de pelo menos uma que não seja “esta máquina” antes de as páginas com geo mudarem.
Já vem com o nó. As requisições dão certo na hora, então o playground funciona. route.reason vai dizer “direct” ou “direct fallback (no geo node)”. O site ainda vê o IP do seu host.
Console → Pool de proxies. Cada nó tem um país, uma cidade opcional e um type. Peça Londres; um nó de pool em Londres vence. Peça GB sem cidade; qualquer nó GB vence.
Você adiciona um gateway. O IP Router injeta o direcionamento no username (-cc-DE-city-berlin-sessid-s1). Use quando você compra banda de um fornecedor em vez de listar cada IP.
Monte celulares Android em rack, marque o site com um país e uma cidade, e defina quantas conexões estão no ar. Os agentes saem por essa última milha. Cobrado por conexão ao mês. Um teste de 14 dias cobre o primeiro celular.
Quando você nomeia um país, o roteador tenta nesta ordem: city pool match → country pool match → backconnect geo injection → direct fallback. Nenhum proxy ativo é um 422, não uma falha silenciosa.
Faça isso uma vez para o resto do guia não ficar abstrato. Cinco minutos. Você ainda não precisa de uma saída paga.
Página → Abrir o console. Localmente não há cadastro. Você cai na Visão geral.
O playground já vem preenchido com o echo local. Escolha um país (US serve). Deixe a sessão como agent-demo. Envie. Você sempre recebe um 200 do echo — isso prova a porta, não o geo.
ok deve ser true. route.reason diz qual saída foi escolhida. geo.exit é o IP que o mundo de fora veria — vazio, ou a sua máquina, no direct.
Adicione um nó de pool ou de backconnect em Pool de proxies, ou um IP farm numa cidade que importe para você. Envie de novo. reason não deve mais dizer “direct fallback”.
Chaves de API para a Fetch API. Endpoints monta o username do gateway. Agentes tem o schema da ferramenta de LLM. O mesmo direcionamento, três interfaces.
Os mesmos controles de sempre: país, cidade, idioma, sticky, type. O trabalho só muda quais você gira e por qual porta você entra. Escolha uma linha.
O Google (o Bing e o Maps) não mostra uma internet só. Mostra a internet de onde você está. Posições, pack local, anúncios, até a grafia que acharam que você quis dizer — tudo isso depende do IP de saída e do cabeçalho de idioma. Se o seu agente busca a partir de um datacenter nos EUA, você está julgando uma página de resultados dos EUA, mesmo quando a pergunta é “como isso aparece em Manchester”.
Você recebe a SERP do país do host. Uma consulta de Londres a partir de uma VM da Virgínia continua uma página da Virgínia, com uma consulta no formato de Londres.
cc-GB + city-london + lang-en_GB. O salto sai por uma saída do Reino Unido, o Accept-Language é inglês britânico, e a página é a que um visitante de Londres veria.
Qualquer porta. Fetch quando o agente envia JSON; gateway quando o cliente fala 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 é um acerto de geo, geo.exit não é o seu host, e o pack local cita estabelecimentos de Londres — não os que ficam ao lado do seu servidor.
Um IP japonês com Accept-Language em inglês muitas vezes ainda serve inglês. Defina lang (ou language no corpo do fetch) além de cc.
Se a string da sessão muda, você é uma pessoa nova. Os logins caem. Reutilize o mesmo sessid no trabalho inteiro.
Um 200 do echo nesta máquina não prova o geo. Leia route.reason. Se disser direct fallback, o site ainda viu o seu host.
Algumas origens fazem fingerprint do ASN. Se a página for um muro de captcha ou uma tela em branco de “datacenter detectado”, defina type-residential ou use um IP farm.
O gateway não consegue injetar Accept-Language num túnel HTTPS CONNECT. Envie o cabeçalho pelo cliente, ou use a Fetch API.
Se todo nó estiver desligado, você recebe 422 “No enabled proxies in the pool.” Ative o nó direct ou adicione um que esteja ligado.