← Wszystkie wpisy

Port proxy: Targetowanie i sesje w nazwie użytkownika

Port proxy FourA odczytuje sieć, kraj i sesje sticky z nazwy użytkownika, a literówka zwraca błąd 400 z listą poprawnych kluczy. Oto pełna gramatyka.

Co nowego

Wystarczy jedna brakująca litera. Wpisz -contry-de w nazwie użytkownika proxy, a literówka pozostaje widoczna na pierwszy rzut oka, wyglądając dokładnie jak poprawna opcja.

Port proxy FourA odpowiada na to błędem 400, który wymienia wszystkie rozpoznawane klucze. To drobny detal produktu, który opuścił fazę beta 15 września: proxy URL w naszych węzłach wyjściowych dla dowolnego klienta, który go obsługuje (przeglądarki, narzędzia do pobierania, scrapera, którego już używasz), bez konieczności pisania wywołań API. Tworzysz użytkownika proxy w Dashboardzie, wklejasz ciąg znaków, a tunele i transfer wliczają się do Twojego planu dokładnie tak samo, jak zapytania API.

Oto pełna gramatyka oraz powody stojące za każdą z jej reguł.

Jak to działa

Port działa pod adresem proxy.foura.ai:34004 i obsługuje HTTP CONNECT z uwierzytelnianiem Basic dla celów na portach 443 i 80. Dane uwierzytelniające to dedykowani użytkownicy proxy, celowo oddzieleni od Twojego klucza API: uzgadnianie połączenia proxy jest przesyłane jawnym tekstem, a użytkownik proxy może otrzymać nowe hasło bez konieczności modyfikowania integracji API.

Wszystko po danych uwierzytelniających to lista par -key-value, w dowolnej kolejności:

# Shared network, a German address, one sticky session for this job
curl -x "http://USERNAME-country-de-session-job42:PASSWORD@proxy.foura.ai:34004" \
  https://example.com

# Premium network, an Android address in Germany, held 30 minutes
curl -x "http://USERNAME-network-premium-country-de-os-android-session-s1-lifetime-30:PASSWORD@proxy.foura.ai:34004" \
  https://example.com

Współdzielona (Shared) to własne węzły wyjściowe FourA: domyślne i zawarte w Twoim planie. Premium to adresy domowe, pobierane z limitu ruchu premium Twojego planu oraz wszelkich dokupionych pakietów. W sieci współdzielonej -fallback-premium pozwala przenieść połączenie do wyjścia premium, gdy węzeł współdzielony nie może go obsłużyć. Opcja jest wyłączona, dopóki jej nie zażądasz, i działa tylko wtedy, gdy masz dostępny limit premium. Włączenie jej domyślnie oznaczałoby decydowanie za Ciebie o zużywaniu tego limitu.

Parametr Country można powtarzać, więc -country-de-country-fr to zakres obejmujący dwa kraje. Region, miasto, sieć wg numeru AS, typ urządzenia (windows, android, ios, mac) oraz lifetime (od 3 do 1440 minut) są dostępne wyłącznie w premium. Jeśli zażądasz miasta w sieci współdzielonej, otrzymasz kod 400 zamiast próby dopasowania best effort. Ruch współdzielony dobiera się według kraju i niczego bardziej szczegółowego, ponieważ filtr miasta, którego w większości przypadków nie da się zrealizować, jest gorszy niż brak filtra.

-session-<name> (od 1 do 32 liter, cyfr lub podkreśleń) zapewnia sesyjność połączeń: każde połączenie o tej samej nazwie współdzieli ten sam adres. W sieci współdzielonej adres jest utrzymywany w przesuwnym 10-minutowym oknie, więc trwa tak długo, jak długo z niego korzystasz. W premium trwa przez ustawiony lifetime lub domyślny czas sieci. Pomiń sesję, a każde połączenie wyjdzie z nowego adresu.

Dostępne są też zapisane ustawienia domyślne. Targetowanie zapisane dla użytkownika proxy w Dashboardzie ma zastosowanie do każdego nawiązywanego przez niego połączenia, dzięki czemu ciąg znaków można skrócić do samych danych uwierzytelniających. Nazwa użytkownika nadal ma pierwszeństwo dla swojego połączenia, a any przywraca zapisaną wartość: -city-any odpytuje klucz pamiętający Monachium o całe Niemcy. Klienty potrafiące dodawać nagłówki do CONNECT (curl to potrafi dzięki --proxy-header) mogą przesyłać te same opcje jako X-Foura-Country, X-Foura-Session i pozostałe, a nagłówek ma pierwszeństwo przed nazwą użytkownika.

Wpływ

Większość z tego przekłada się na pytania, których nie musisz już zadawać.

Dlaczego odmówiono mi dostępu? Każde odrzucenie po weryfikacji danych uwierzytelniających zawiera nagłówek X-Foura-Error z jednolinijkowym powodem. Kod 400 wskazuje opcję i akceptowane przez nią wartości. Kod 429 informuje, który limit Twojego planu został osiągnięty: jednocześnie otwarte tunele, otwarcia tuneli na minutę lub standardowy transfer w okresie rozliczeniowym.

Do kogo należy limit? Do konta. Tunele i ich otwarcia są zliczane dla konta, a nie dla pojedynczego użytkownika proxy, więc drugie dane uwierzytelniające nie dają drugiego limitu. Bajty wliczają się do ogólnego transferu planu, a bajty premium do limitu premium w ramach tej sumy, nigdy ponad nią. W planie rozliczanym na kredyty port ma własne dołączone gigabajty, które doładowuje się na stronie Billing. Gdy żaden tunel się nie otwiera, nic nie jest naliczane.

Kto jest właścicielem danych uwierzytelniających? Może to być teraz organizacja, dzięki czemu downloader w firmie nie przestanie działać w dniu odejścia pracownika. Członkowie mogą go używać i odczytywać jego hasło; administratorzy i właściciele mogą go rotować, wyłączać lub zmieniać jego targetowanie; tylko właściciel może go przenieść na zewnątrz.

Co to dalo? Przelacz przelacznik Product na Overview, Metrics lub Activity na Proxy: tunele w tych samych klasach wynikow co Twoje API requests, informacja ile jest aktualnie otwartych, czas konfiguracji i ruch, w podziale na uzytkownika proxy, cel, kraj wyjsciowy lub IP klienta. Sesja, ktora ma juz swoj adres, laczy sie zazwyczaj w czasie znacznie ponizej sekundy.

Ale ten port to zwykly tunel, co wiaze sie z kompromisem. Twoj klient komunikuje sie z witryna bezposrednio przez tunel, wiec unblocker, Twoje validate rules oraz rozwiazywanie wyzwan w przegladarce nie znajduja sie na tej sciezce. Ruch jest rowniez rozliczany w bajtach: strona z odmowa przeslana przez otwarty tunel to bajty jak kazde inne, podczas gdy w API nieudany request nie jest rozliczany. Przesylaj bajty przez port; strony stawiajace opor kieruj do API.

Dla zaawansowanych uzytkownikow

Po wyczerpaniu limitu premium, trzy sciezki prowadzace do tej sieci otrzymuja celowo trzy rozne odpowiedzi. Polaczenie wskazujace -network-premium jest odrzucane z kodem 403 z jasna informacja, poniewaz wywolujacy obslugiwany po cichu z innego zrodla ponawialby zapytania, a nastepnie szukal na fakturze pozycji premium, ktora sie nie pojawi. Fallback po prostu nie jest uruchamiany, a domyslne ustawienie premium zapisane na uzytkowniku proxy przechodzi na siec wspoldzielona, dzieki czemu tunel nadal sie otwiera. Zadne z nich nie zdecydowalo sie na wydatek na to polaczenie.

Trzy kombinacje sa calkowicie odrzucane, zamiast byc czesciowo realizowane: bardziej precyzyjne targetowanie w sieci wspoldzielonej, -fallback-premium razem z -network-premium oraz precyzyjne targetowanie z uzbrojonym fallbackiem. Port obsluguje wylacznie CONNECT, wiec klient przesylajacy zwykly http:// request zamiast go tunelowac, otrzymuje 405 (curl tuneluje go za pomoca --proxytunnel). Z kolei przegladarka prowadzona przez port powinna zawsze posiadac nazwe sesji, poniewaz jedno ladowanie strony otwiera dziesiatki polaczen.

Kilka workerow, kazdy na wlasnym adresie? Przypisz kazdemu z nich wlasna nazwe sesji:

import requests

TEMPLATE = "http://USERNAME-country-de-session-{name}:PASSWORD@proxy.foura.ai:34004"

def worker_session(name):
    proxy = TEMPLATE.format(name=name)
    s = requests.Session()
    s.proxies = {"http": proxy, "https": proxy}
    return s

workers = [worker_session(f"w{i}") for i in range(4)]
print(workers[0].get("https://example.com").status_code)

Dashboard robi to samo na większą skalę: ustaw Sticky, wybierz liczbę, a zakładka Connection string wyświetli po jednej linii na adres, jako URL lub jako host:port:user:pass dla menedżerów proxy. Odmowa połączenia? Dodaj -sv do wywołania curl i przekaż potokiem 2>&1 | grep -i x-foura-error. Każda opcja jest opisana w dokumentacji portów proxy, a konfiguracja po stronie panelu w sekcji Proxy Users.

Co dalej

Pierwszym klientem, którego zbudowaliśmy w oparciu o proxy users, jest nasz własny. Rozszerzenie FourA do Chrome kieruje ruch przeglądarki przez jednego z nich: wybierz sieć i kraj, włącz przełącznik, a linia statusu pokaże adres widziany przez witryny. To wersja beta, niedostępna w Chrome Web Store, instalowana z poziomu zakładki Tools w Dashboardzie w trybie deweloperskim. W dalszej perspektywie na publicznej mapie drogowej znajduje się rozliczanie na poziomie organizacji, co ma tutaj kluczowe znaczenie, ponieważ proxy user organizacji obciąża konto jej obecnego właściciela.

Proxy URL to najstarszy istniejący kontrakt integracyjny, obsługiwany przez każde Twoje narzędzie. Trudnością nigdy nie było samo zestawienie tunelu. Chodzi o to, co może oznaczać ciąg znaków przed nim i co się stanie, gdy popełnisz w nim błąd.