IP Router
So funktioniert’s · für Einsteiger

Websites beurteilen dich nach der IP. Das ist die Schalttafel, die wählt, welche IP dein Agent trägt.

Jedes Gerät im Internet hat eine Adresse. Suche, Shops, Ads und Nachrichten nutzen sie, um zu entscheiden, was du siehst — Währung, Sprache, Rankings, manchmal ob die Seite überhaupt lädt. Ein KI-Agent im Rechenzentrum hat eine Adresse: dieses Rechenzentrum. Ohne lokalen Exit sieht jeder Fetch aus demselben Gebäude aus.

Du nennst ein Land oder eine Stadt. IP Router wählt dort einen Exit, schickt die Anfrage über diese IP und gibt die Seite zurück. Dasselbe Gehirn für einen JSON-Agenten und einen echten Browser.

Die Idee

Vier Fakten, dann kannst du den Rest nutzen.

Die Website sieht dein Laptop nicht

Sie sieht die Exit-IP. Wechsel den Exit, wechselt die Seite — Preise, SERP, Store-Locator, Paywall.

Land ist nicht Sprache

cc-JP setzt dich auf eine japanische IP. lang-ja sagt der Site, dass du Japanisch liest. Meist willst du beides.

Sticky heißt „dieselbe Person“

Logins, Warenkörbe und Cookies sterben, wenn die IP mittendrin wechselt. Ein sessid pinnt dich an einen Exit bis zum Ablauf.

Zwei Türen, ein Kernel

Agenten POSTen JSON an /api/v1/fetch. Browser und curl sprechen CONNECT auf :7777. Beide rufen selectRoute.

Wörter

Die zwölf Begriffe der Konsole.

IP / Exit
Die Adresse, die die Website sieht. Nicht dein Laptop, nicht der Agent-Host — der letzte Hop, der IP Router verlassen hat.
cc (Land)
ISO-Ländercode. GB ist das Vereinigte Königreich, DE ist Deutschland, JP ist Japan. Damit wählst du den Markt.
Stadt
Feiner als das Land. London gegen Manchester, New York gegen Austin. Leerzeichen werden in Usernames zu Unterstrichen: city-new_york.
Sprache
Accept-Language-Header. Die Frage der Site: „Welche Sprache liest du?“. Unabhängig von der IP.
sessid (Sticky)
Ein Name, den du wiederverwendest, damit jeder Hop eines Jobs denselben Exit nutzt. Die Standard-TTL ist 10 Minuten; sesstime überschreibt sie.
Typ
Welche Art Netz der Exit ist: Residential, Datacenter, Mobile oder ISP. Sites behandeln die unterschiedlich.
Pool
Eine Liste von Knoten, die du hinzugefügt hast, jeder mit Land und vielleicht einer Stadt markiert. Der Router matcht das Targeting auf einen Knoten.
Backconnect
Ein Vendor-Gateway. IP Router hängt -cc-US-city-austin-sessid-job1 an den Username dieses Vendors.
Direct
Dieser Rechner. Gut zum Lernen. Die Website sieht weiter deine Host-IP, also ändern sich Geo-Seiten nicht.
IP farm
Android-Telefone, die du in einer Stadt ins Rack stellst. Agenten gehen über diese Last Mile raus, abgerechnet pro Live-Verbindung — nicht pro GB.
Fetch API
POST /api/v1/fetch mit JSON. Für Agenten und LLMs, die kein HTTP CONNECT sprechen.
Gateway :7777
Ein HTTP-Proxy. curl -x, Playwright, Browser. Das Targeting steckt im Username, im Oxylabs-Stil.
Zwei Türen

Dasselbe Targeting. Andere Clients.

Wähl die Tür, die dazu passt, wie dein Client spricht. Das Targeting ist in beiden Fällen dasselbe.

Fetch API — die Agenten-Tür

Nimm das, wenn dein Client JSON postet: ein LLM-Tool, ein Skript, ein n8n-Knoten, der Playground.

POST /api/v1/fetch mit einem Bearer-Schlüssel. Setz Land, Stadt, Sprache und Session in den Body. Die Antwort enthält die Seite, das Exit-Geo und route.reason, damit du siehst, warum dieser Hop gewählt wurde.

Sie holt eine URL und gibt den Body zurück. Sie klickt nicht, füllt keine Formulare aus und hält kein echtes Browser-Cookie-Jar. Für einen Checkout im echten Browser nimm das Gateway.

HTTP-Gateway — die Browser-Tür

Nimm das, wenn der Client schon HTTP-Proxy spricht: curl -x, Playwright, Chrome, ein Scraper, der CONNECT erwartet.

Stell den Proxy auf host:7777. Der Username ist iprouter-{keyId}-cc-GB-city-london-sessid-job1. Das Passwort ist der API-Schlüssel. Dieselben Targeting-Tokens wie im Fetch-Body, nur im Username.

CONNECT kann HTTPS-Header nicht umschreiben. Brauchst du Accept-Language auf einer TLS-Site, muss der Browser (oder die Fetch API) ihn schicken. lang- im Username ist ein Hinweis fürs Routing und für HTTP, keine magische HTTPS-Injektion.

Wenn duNutze
JSON-Agent / LLM-ToolFetch API
Playground / eine URL testenFetch API
curl, Playwright, ein echter BrowserGateway :7777
Einloggen, dann dieselbe Session crawlenJede Tür, plus ein sessid
Exits

Wo die Anfrage wirklich rausgeht.

Ein Exit ist der Punkt, an dem die Anfrage das Internet verlässt — aus Sicht der Website. Du brauchst mindestens einen, der nicht „dieser Rechner“ ist, bevor sich Geo-Seiten ändern.

Direct — dieser Rechner

Kommt mit dem Knoten. Anfragen klappen sofort, damit der Playground läuft. route.reason sagt „direct“ oder „direct fallback (no geo node)“. Die Website sieht weiter deine Host-IP.

Pool — IPs, die du hinzugefügt hast

Konsole → Proxy-Pool. Jeder Knoten hat ein Land, optional eine Stadt und einen Typ. Frag London an, ein Londoner Pool-Knoten gewinnt. Frag GB ohne Stadt an, jeder GB-Knoten gewinnt.

Backconnect — ein Vendor-Gateway

Du fügst ein Gateway hinzu. IP Router injiziert das Targeting in den Username (-cc-DE-city-berlin-sessid-s1). Nimm das, wenn du Bandbreite bei einem Anbieter kaufst, statt jede IP einzeln aufzulisten.

IP farm — Telefone in einer Stadt

Stell Android-Telefone ins Rack, tagge den Standort mit Land und Stadt und setz, wie viele Verbindungen live sind. Agenten gehen über diese Last Mile raus. Abgerechnet pro Verbindung im Monat. Ein 14-Tage-Test deckt das erste Telefon.

Nennst du ein Land, probiert der Router es in dieser Reihenfolge: city pool match → country pool match → backconnect geo injection → direct fallback. Gar keine aktiven Proxies, das ist ein 422, kein stiller Fehlschlag.

Erster Versuch

Fünf Minuten. Du brauchst noch keinen bezahlten Exit.

Mach das einmal, damit der Rest der Anleitung nicht abstrakt bleibt. Fünf Minuten. Du brauchst noch keinen bezahlten Exit.

  1. 01

    Landing → Konsole öffnen. Lokal gibt es keine Registrierung. Du landest auf der Übersicht.

  2. 02

    Der Playground ist mit dem lokalen Echo vorausgefüllt. Wähl ein Land (US passt). Lass die Session auf agent-demo. Senden. Vom Echo kommt immer eine 200 — das beweist die Tür, nicht das Geo.

  3. 03
    Drei Felder lesen

    ok soll true sein. route.reason sagt dir, welcher Exit gewählt wurde. geo.exit ist die IP, die die Außenwelt sehen würde — leer oder dein Rechner bei Direct.

  4. 04

    Füg einen Pool- oder Backconnect-Knoten unter Proxy-Pool hinzu, oder eine IP farm in einer Stadt, die dich interessiert. Nochmal senden. reason soll nicht mehr „direct fallback“ sagen.

  5. 05

    API-Schlüssel für die Fetch API. Endpoints baut den Gateway-Username. Unter Agenten liegt das LLM-Tool-Schema. Dasselbe Targeting, drei Oberflächen.

Anwendungsfälle

So läuft jeder Job.

Dieselben Regler jedes Mal: Land, Stadt, Sprache, Sticky, Typ. Der Job ändert nur, welche du drehst und durch welche Tür du gehst. Wähl eine Zeile.

Stadt / Land

Suche sehen wie jemand in dieser Stadt

Google (und Bing, und Maps) zeigen nicht ein Internet. Sie zeigen das Internet von dort, wo du stehst. Rankings, Local Pack, Ads, sogar die Schreibweise — alles hängt an Exit-IP und Sprach-Header. Fetcht dein Agent aus einem US-Rechenzentrum, bewertest du eine US-Ergebnisseite, auch wenn die Frage lautet „wie sieht das in Manchester aus“.

Ohne IP Router

Du bekommst die SERP des Host-Landes. Eine London-Suche von einer Virginia-VM ist weiter eine Virginia-Seite mit einem Query-String, der nach London aussieht.

Mit

cc-GB + city-london + lang-en_GB. Der Hop geht über einen UK-Exit raus, Accept-Language ist britisches Englisch, und die Seite ist die, die ein Besucher in London bekommt.

So funktioniert’s

  1. 01Markt benennen: Land GB, Stadt London, Sprache en-GB. Die Stadt zählt — Manchester und London haben verschiedene Local Packs.
  2. 02Fetch API, wenn HTML/JSON für den Agenten zurück soll. Gateway, wenn ein Headless-Browser die SERP fährt.
  3. 03Stabiles sessid, wenn du paginierst oder durchklickst. Eine neue Session mittendrin sieht aus wie ein neuer Besucher.
  4. 04route.reason lesen. Du willst city pool match (oder backconnect geo injection). Direct fallback heißt: du bist noch auf dem Host.
  5. 05Vergleich zwei Runs: dieselbe Suche, US gegen GB. Local Pack und Ads sollten sich verschieben. Tun sie das nicht, bist du noch nicht auf einem Geo-Exit.
Tür

Jede Tür. Fetch, wenn der Agent JSON postet; Gateway, wenn der Client CONNECT spricht.

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
Du weißt, es hat geklappt, wenn

route.reason ist ein Geo-Treffer, geo.exit ist nicht dein Host, und das Local Pack nennt Londoner Geschäfte — nicht die neben deinem Server.

Häufige Fehler

  • Nur das Land. GB ohne Stadt landet oft auf einer nationalen Seite, der das Local Pack fehlt, das dich interessiert hat.
  • Kein lang. Eine UK-IP mit en-US tendiert weiter zu amerikanischer Schreibweise und US-Treffern in der Mischung.
route.reason

Der Satz, der dir sagt, ob Geo wirklich passiert ist.

city pool match
Du hast eine Stadt angefragt und ein Pool-Knoten in dieser Stadt war aktiv. Bester Geo-Treffer.
country pool match
Kein Stadt-Knoten (oder du hast keine Stadt angefragt), aber ein Pool-Knoten in diesem Land war aktiv.
backconnect geo injection
Kein Pool-Knoten in diesem Land. Ein Backconnect-Gateway ist an, also wurde das Targeting in seinen Username geschrieben.
direct fallback (no geo node)
Nichts in diesem Land. Die Anfrage ist trotzdem raus — über diesen Rechner. Geo-Seiten ändern sich nicht. Füg einen Knoten oder eine Farm hinzu.
sticky session
Du hast ein sessid wiederverwendet und der alte Exit ist noch aktiv. Dieselbe IP wie beim letzten Mal. TTL erneuert.
backconnect rotate / pool rotate / direct
Du hast kein Land genannt. Der Router hat irgendeinen passenden Exit gewählt und, falls du eine Session geschickt hast, die Wahl gehasht, damit sie fest bleibt.
Fehler

Die, die wie Produktfehler aussehen.

Land ohne Sprache

Eine japanische IP mit englischem Accept-Language liefert oft trotzdem Englisch. Setz lang (oder language im Fetch-Body) genauso wie cc.

Neues sessid pro Anfrage

Ändert sich der Session-String, bist du eine neue Person. Logins fallen weg. Nutz dasselbe sessid für den ganzen Job.

Direct fallback vertrauen

Eine 200 vom Echo auf diesem Rechner beweist kein Geo. Lies route.reason. Steht dort direct fallback, hat die Website weiter deinen Host gesehen.

Datacenter gegen Residential

Manche Origins fingerprinten die ASN. Ist die Seite eine Captcha-Wand oder eine leere „datacenter detected“, setz type-residential oder nutz eine IP farm.

HTTPS + Gateway + lang

Das Gateway kann Accept-Language nicht in einen HTTPS-CONNECT-Tunnel injizieren. Schick den Header vom Client, oder nutz die Fetch API.

Leerer Pool

Ist jeder Knoten aus, bekommst du 422 „No enabled proxies in the pool.“ Aktivier den Direct-Knoten oder füg einen hinzu, der an ist.