Strona nigdy nie widzi Twojego laptopa
Widzi wyjściowe IP. Zmień wyjście, zmieni się strona — ceny, SERP, lokalizator sklepów, paywall, wszystko.
Każde urządzenie w internecie ma adres. Wyszukiwarka, sklepy, reklamy i serwisy używają tego adresu, żeby zdecydować, co widzisz — walutę, język, pozycje, a nawet czy strona w ogóle się załaduje. Agent AI w datacenter ma jeden adres: to datacenter. Bez zlokalizowanego wyjścia każde pobranie wygląda, jakby wyszło z jednego budynku.
Prosisz o kraj albo miasto. IP Router wybiera tam wyjście, wysyła żądanie przez to IP i oddaje stronę. Ten sam mózg dla agenta JSON i prawdziwej przeglądarki.
Widzi wyjściowe IP. Zmień wyjście, zmieni się strona — ceny, SERP, lokalizator sklepów, paywall, wszystko.
cc-JP stawia Cię na japońskim IP. lang-ja mówi stronie, że czytasz po japońsku. Zwykle chcesz obu.
Logowania, koszyki i ciasteczka giną, jeśli IP zmieni się w trakcie. sessid przypina Cię do jednego wyjścia, aż wygaśnie.
Agenci wysyłają POST JSON na /api/v1/fetch. Przeglądarki i curl mówią CONNECT na :7777. Oba wołają selectRoute.
Wybierz drzwi zgodne z tym, jak mówi Twój klient. Targetowanie i tak jest to samo.
Użyj tego, gdy klient wysyła JSON: narzędzie LLM, skrypt, węzeł n8n, piaskownica.
POST /api/v1/fetch z kluczem Bearer. Kraj, miasto, język i sesję włóż w treść. Odpowiedź ma stronę, geo wyjścia i route.reason, więc widać, czemu wybrano ten skok.
Pobiera URL i zwraca treść. Nie klika, nie wypełnia formularzy i nie trzyma ciasteczek prawdziwej przeglądarki. Do kasy w prawdziwej przeglądarce użyj bramki.
Użyj tego, gdy klient już mówi proxy HTTP: curl -x, Playwright, Chrome, zbieracz stron, który oczekuje CONNECT.
Skieruj proxy na host:7777. Nazwa użytkownika to iprouter-{keyId}-cc-GB-city-london-sessid-job1. Hasłem jest klucz API. Te same tokeny targetowania co w treści fetch, tylko w nazwie użytkownika.
CONNECT nie przepisuje nagłówków HTTPS. Jeśli na stronie TLS potrzebujesz Accept-Language, musi je wysłać przeglądarka (albo Fetch API). lang- w nazwie użytkownika to podpowiedź dla routingu i dla HTTP, nie magiczne wstrzyknięcie HTTPS.
| Jeśli jesteś | Użyj |
|---|---|
| Agent JSON / narzędzie LLM | Fetch API |
| Piaskownica / wypróbuj URL | Fetch API |
| curl, Playwright, prawdziwa przeglądarka | Bramka :7777 |
| Logowanie, potem zbieranie stron w tej samej sesji | Dowolne drzwi, plus sessid |
Wyjście to miejsce, z którego żądanie wychodzi w świat — tak to widzi strona. Zanim strony geo zaczną się zmieniać, potrzebujesz przynajmniej jednego, które nie jest „tą maszyną”.
Jest w zestawie z węzłem. Żądania od razu się udają, więc piaskownica działa. route.reason powie „direct” albo „direct fallback (no geo node)”. Strona i tak widzi IP Twojego hosta.
Konsola → Pula proxy. Każdy węzeł ma kraj, opcjonalne miasto i typ. Prosisz o Londyn — wygrywa londyński węzeł puli. Prosisz o GB bez miasta — wygrywa dowolny węzeł GB.
Dodajesz jedną bramkę. IP Router wstrzykuje targetowanie do nazwy użytkownika (-cc-DE-city-berlin-sessid-s1). Użyj tego, gdy kupujesz transfer u dostawcy, zamiast wypisywać każde IP.
Stawiasz telefony Android na stelażu, oznaczasz lokalizację krajem i miastem i ustawiasz, ile połączeń jest na żywo. Agenci wychodzą tą ostatnią milą. Rozliczenie za połączenie na miesiąc. 14-dniowa próba obejmuje pierwszy telefon.
Gdy podajesz kraj, router próbuje w tej kolejności: city pool match → country pool match → backconnect geo injection → direct fallback. Brak jakichkolwiek włączonych proxy to 422, nie ciche chybienie.
Zrób to raz, żeby reszta przewodnika nie była abstrakcją. Pięć minut. Płatnego wyjścia jeszcze nie potrzebujesz.
Strona główna → Otwórz konsolę. Lokalnie nie ma rejestracji. Lądujesz na Przeglądzie.
Piaskownica jest wstępnie wypełniona lokalnym echem. Wybierz kraj (US wystarczy). Zostaw sesję jako agent-demo. Wyślij. Echo zawsze zwraca 200 — to dowód drzwi, nie geo.
ok powinno być true. route.reason mówi, które wyjście wybrano. geo.exit to IP, które zobaczyłby świat — puste albo Twoja maszyna przy direct.
Dodaj węzeł puli albo backconnect w Puli proxy albo IP farm w mieście, na którym Ci zależy. Wyślij jeszcze raz. reason nie powinno już mówić „direct fallback”.
Klucze API są do Fetch API. Endpointy budują nazwę użytkownika bramki. Agenci mają schemat narzędzia LLM. To samo targetowanie, trzy skórki.
Te same pokrętła za każdym razem: kraj, miasto, język, sesja stała, typ. Zadanie zmienia tylko to, które przekręcasz i przez które drzwi wchodzisz. Wybierz wiersz.
Google (i Bing, i mapy) nie pokazują jednego internetu. Pokazują internet z miejsca, w którym stoisz. Pozycje, pakiet lokalny, reklamy, nawet pisownia, którą uznają za Twoją — wszystko zależy od wyjściowego IP i nagłówka języka. Jeśli agent pobiera z datacenter w USA, oceniasz amerykańską stronę wyników, nawet gdy pytanie brzmi „jak to wygląda w Manchesterze”.
Dostajesz SERP kraju hosta. Zapytanie o Londyn z VM w Wirginii to nadal strona z Wirginii, tylko z londyńskim ciągiem zapytania.
cc-GB + city-london + lang-en_GB. Skok wychodzi brytyjskim wyjściem, Accept-Language to brytyjski angielski, a strona jest taka, jaką dostałby gość z Londynu.
Dowolne drzwi. Fetch API, gdy agent wysyła JSON; bramka, gdy klient mówi 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 to trafienie geo, geo.exit nie jest Twoim hostem, a pakiet lokalny pokazuje firmy z Londynu — nie te obok Twojego serwera.
Japońskie IP z angielskim Accept-Language często i tak serwuje angielski. Ustaw lang (albo language w treści fetch) razem z cc.
Gdy ciąg sesji się zmienia, jesteś nową osobą. Logowania giną. Używaj tego samego sessid przez całe zadanie.
200 z echa na tej maszynie nie dowodzi geo. Czytaj route.reason. Jeśli mówi direct fallback, strona i tak widziała Twój host.
Niektóre źródła odciskają ASN. Jeśli strona to ściana captcha albo pusta karta „wykryto datacenter”, ustaw type-residential albo użyj IP farm.
Bramka nie wstrzyknie Accept-Language w tunel HTTPS CONNECT. Wyślij nagłówek z klienta albo użyj Fetch API.
Gdy każdy węzeł jest wyłączony, dostajesz 422 „No enabled proxies in the pool.” Włącz węzeł direct albo dodaj włączony.