← Wszystkie wpisy

Przedstawiamy Auto: jeden endpoint dla każdego celu

Endpoint Auto dobiera tryb Single, Proxy Finder lub Browser dla każdego requestu, obsługuje strony weryfikujące tożsamość klienta i zwraca sesję do ponownego użycia w kolejnym wywołaniu.

Co nowego

Endpoint /api/auto to teraz najkrótsza droga do działającej odpowiedzi dla dowolnego URL. Wskaż cel. Auto sam wybiera, czy wykonać request przez Single, Proxy Finder, czy Browser, rozwiązuje weryfikacje strony po jej napotkaniu i zwraca sesję, którą Twoje kolejne wywołanie może wykorzystać ponownie.

Jeden endpoint. Dowolny cel. Zero przełączania trybów po Twojej stronie.

O to w tym chodzi. W dalszej części wpisu opisujemy, jak to działa, ile kosztuje i na co warto uważać.

Jak to działa

Pod maską Auto kryje się drabina poziomów (najpierw najtańsze, na końcu najdroższe). Przy każdym żądaniu Auto wchodzi po kolejnych szczeblach, aż któryś zwróci odpowiedź akceptowaną przez Twoje reguły validate.

Kolejne szczeble:

  1. Zapisana sesja w cache. Jeśli Auto ma już aktywną sesję dla danego hosta z poprzedniego wywołania, najpierw próbuje jej użyć. To najtańsza ścieżka.
  2. Proxy Finder. Request przez rotowane proxy. Sprawdza się w przypadku stron chronionych głównie reputacją IP.
  3. Browser. Pełne renderowanie, które wykonuje JavaScript, przechodzi weryfikacje wymagane przez stronę i zbiera wystawione pliki cookie.

Gdy dany poziom zadziała, Auto zapisuje znalezioną sesję: identyfikator proxy, pliki cookie oraz User-Agent. Przy kolejnym wywołaniu tego samego hosta Auto najpierw testuje tę sesję. Jeśli nadal działa, płacisz za tani szczebel, a nie za drogi.

Minimalne wywołanie:

curl -X POST "https://api.foura.ai/api/auto" \
  -H "X-API-Key: pk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/data",
    "validate": { "status": { "accept": [200] } }
  }'

Przycięta response:

{
  "status": 200,
  "data": "...",
  "headers": [...],
  "meta": {
    "rung": "cache",
    "solved": false,
    "attempts": 1,
    "credits": 2
  },
  "session": {
    "proxy": "CLN1B8",
    "cookies": [{ "name": "cf_clearance", "value": "..." }],
    "userAgent": "..."
  }
}

Dwa pola maja znaczenie dla dalszych prac. meta.rung wskazuje, ktora sciezka wygrala. session to trojka, ktora mozesz przekazac do wywolania /api/single, aby samodzielnie powtorzyc ten sam wezel wyjsciowy. Pole proxy to nieprzezroczysty identyfikator base36 (bez surowych adresow IP), bezpieczny do logowania i przesylania miedzy systemami.

Wplyw

Licza sie tutaj dwie liczby.

Pierwsze wywolanie chronionej witryny uruchamia szczebel Browser: renderowanie, rozwiazanie zabezpieczen, zebranie plikow cookie i zwrocenie strony. To koszt okolo 10 kredytow. Gdy Auto zapisze dzialajaca sesje dla danego hosta w pamieci podrecznej, kolejne wywolania ja odtwarzaja: przez Single za 2 kredyty lub przez Proxy Finder za 4, gdy pliki cookie sesji dzialaja z dowolnego adresu. Drugie wywolanie jest wiec do 5 razy tansze niz pierwsze, a kazde nastepne zachowuje niska stawke, dopoki sesja pozostaje aktywna. Zmierzylismy to na srodowisku produkcyjnym podczas wdrazania: wezly wyjsciowe bez wymogu cookies (po znalezieniu) sa odtwarzane za dokladnie 2 kredyty na wywolanie, w porownaniu do 10 kredytow, ktore kosztowaly wczesniej, gdy kazde zadanie przechodzilo przez Proxy Finder.

Druga liczba: nieudane szczeble nie sa rozliczane. Jesli Auto przetestuje trzy proxy i kazde zwroci 403, zanim czwarte dostarczy dane, naliczane sa wylacznie kredyty za czwarte. Placisz za dostarczona zawartosc, a nie za proces wyszukiwania.

Na tym polega glowna wartosc. Kosztowny szczebel uruchamia sie raz, tani szczebel dziala juz caly czas, a Ty nie musisz pisac wlasnej logiki buforowania.

Warto zwrocic uwage na dwa inne zachowania, poniewaz rozwiazuja one realne problemy produkcyjne:

Cele z blokada geograficzna przestaja marnowac wezly wyjsciowe. Gdy witryna zwraca 451 (lub strone posrednia z blokada prawna) dla wiekszosci wezlow wyjsciowych, Auto uczy sie, ktore kraje faktycznie dostarczyly zawartosc. Przy nastepnym wywolaniu pobiera najpierw swieze wezly wyjsciowe z tych krajow i rozklada miedzy nimi obciazenie rownolegle. Dzieki temu pojedynczy skuteczny wezel wyjsciowy nie zostaje przeciazony ani ograniczony przez rate limit.

Walidacja dziala na kazdym szczeblu. Strona z nieprawidlowa zawartoscia (ograniczenie regionalne zwracajace status 200 z informacja prawna w tresci) nigdy nie jest uznawana za sukces. Jesli Twoja reguly validate.data.fail wskazuja na "legal reasons", Auto probuje dalej, az ktorys szczebel przejdzie weryfikacje. Nie szczebel z pamieci podrecznej. Zaden niespelniajacy kryteriow. Jesli zaden nie zaliczy testu, otrzymujesz jednoznaczny blad z prawdziwym powodem.

Dla zaawansowanych

Kilka opcji konfiguracyjnych istotnych przy duzym wolumenie zadan przez Auto.

timeout_ms to budzet na cala operacje, a nie na pojedynczy szczebel. Domyslna wartosc to 120 sekund. Auto dzieli ten czas: kazde podwywolanie otrzymuje min(wlasny naturalny timeout, pozostaly budzet), a sekwencja szczebli przestaje uruchamiac nowe proby, gdy zostanie zbyt malo czasu. Ustaw 20 000 dla zadan interaktywnych wymagajacych niskich opoznien. Pozostaw wartosc domyslna dla masowego pobierania danych, ktore toleruje dluzszy czas odpowiedzi.

forceProxy jest domyslnie wlaczone. Auto nigdy nie laczy sie z celem bezposrednio z adresu IP FourA, chyba ze ustawisz forceProxy: false. Jeden wyjatek: niektore witryny (interaktywny Cloudflare z weryfikacja reputacji IP) dzialaja lepiej z czystego adresu IP centrum danych niz z rezydencyjnego wezla wyjsciowego o niskiej reputacji. Z tego wzgledu forceProxy: false moze ulatwic, a nie utrudnic dostep do niektorych celow. Jesli obserwujesz powtarzajace sie wyzwania zabezpieczen na okreslonym hoscie, warto rozwazyc wylaczenie tej opcji.

ignoreProxies to lista wykluczeń po stronie klienta. Przekaż identyfikatory proxy, o których wiesz, że są spalone (z wcześniejszego session.proxy, które dostało rate limit po Twojej stronie), a Auto pominie je wszędzie: przy ponownym użyciu aktywnych sesji, wyszukiwaniu węzłów wyjściowych oraz podwywołaniu do Proxy Finder. Dzięki temu Auto nie wybierze ponownie węzła wyjściowego, który właśnie nakazano mu omijać.

meta pozwala również budować własne dashboardy: które hosty trafiły dziś na poziom przeglądarki, średnią liczbę prób na dostarczenie, stosunek pobrań z rozwiązanym challenge do tych czystych. Jeśli dany host nagle wzrośnie z 2 kredytów do 10, jest to sygnał degradacji sesji, na który możesz zareagować, zanim rachunek wzrośnie.

Przykład łączący wszystkie cztery elementy:

import requests

r = requests.post(
    "https://api.foura.ai/api/auto",
    headers={"X-API-Key": "pk_live_..."},
    json={
        "url": "https://example.com/product/9876",
        "timeout_ms": 30000,
        "forceProxy": True,
        "ignoreProxies": ["CLN1B8", "K7X9AB"],
        "validate": {
            "status": {"accept": [200]},
            "data":   {"accept": ['"price":'], "fail": ["captcha", "legal reasons"]}
        }
    }
).json()

# If Auto delivered, keep the session for the next call to this host
if r.get("status") == 200 and "session" in r:
    session = r["session"]                              # {proxy, cookies, userAgent}
    print(r["meta"]["rung"], r["meta"]["credits"], r["meta"]["attempts"])

Szczegóły samego schematu validate znajdziesz we wcześniejszym omówieniu w Validate Rules Now Decide What Counts as Success.

Co dalej

Na mapie drogowej Auto znajdują się obecnie dwie rzeczy.

W następnej kolejności do Dashboardu trafi inspekcja sesji. Obecnie sesje utrzymywane przez Auto dla poszczególnych hostów znajdują się wewnątrz usługi i brakuje wglądu podczas debugowania problemów po Twojej stronie. Przygotowujemy widok sesji per-host, który pozwoli zobaczyć zapisane sesje, ich wiek, czas wygaśnięcia oraz historię szczebli (rungs) dla każdej z nich. Dojdzie też przycisk do ręcznego usuwania sesji, gdy cel się zmieni i wiesz, że cache jest nieaktualny.

Następnie wprowadzimy ściślejszą kontrolę kosztów. Sztywny limit kredytów na request (nigdy nie wydawaj więcej niż X na to wywołanie, zwróć błąd, jeśli limit zostałby przekroczony) oraz tryb "single-only" dla zespołów, których cele nigdy nie wymagają szczebla przeglądarkowego. Obie funkcje są obecnie dostępne za flagami.

Sens Auto polega na tym, że nie musisz zastanawiać się, którego produktu użyć. Nie oznacza to jednak braku wglądu w przebieg operacji. Każdy response zwraca użyty szczebel oraz utworzoną sesję. Wystarczy sprawdzić te dwa pola, aby dokładnie wiedzieć, skąd wynika koszt wywołań.