Najważniejsze zmiany
Wiele stron udostępnia stronę główną każdemu, a blokuje wszystko jedno kliknięcie dalej. Auto wchodzi teraz głównymi drzwiami: pobiera sesję wydawaną przez stronę wejściową, a następnie prosi o docelową stronę, przekazując tę sesję. Większość cięższej pracy wykonał w tym tygodniu Browser. Rozwiązuje weryfikację checkbox, gdy kilka requestów trafia na tę samą stronę jednocześnie, a gdy strona pozostaje zamknięta, raportuje to, co zarejestrował, zamiast zwracać jedno ogólne słowo.
Co nowego
Auto otwiera strony ukryte za sesją
Oferta na eBay odrzuca bezpośredni request na każdej dostępnej trasie. Ten sam URL otwiera się, gdy request zawiera zestaw cookies, który strona wejściowa eBay przekazuje każdemu odwiedzającemu. Bez logowania, bez pożyczonych kont, dokładnie tak, jak przy ręcznym otwarciu karty.
Auto robi to teraz automatycznie. Gdy węzeł wyjściowy łączy się z serwerem źródłowym, ale nadal otrzymuje odmowę dostępu do podstrony, Auto pobiera stronę główną przez ten sam węzeł, zachowuje zwrócone cookies i ponawia request. Odpowiedź informuje o tym procesie: zwycięski poziom ma oznaczenie warmup.
Najciekawszy jest jednak koszt. Taka sesja jest przenośna, więc zestaw cookies nie jest przypisany wyłącznie do węzła, który go uzyskał. Kolejne odczyty są odtwarzane przez /api/proxy i trafiają do /api/single za 2 kredyty. To ten sam łańcuch eskalacji i ponownego odtwarzania, o którym pisaliśmy w kontekście autoryzacji Cloudflare, gdzie cookies sesyjne danego serwisu zastępują cf_clearance.
Wprowadzono celowe ograniczenia: dwie próby na request, na różnych węzłach wyjściowych, tylko po wcześniejszym niepowodzeniu dla docelowego URL i tylko wtedy, gdy węzeł wyjściowy w ogóle dotarł do serwera źródłowego. Dzięki temu strona, która po prostu nas blokuje, generuje jednorazowo dwa dodatkowe podzapytania, a nie nieskończoną pętlę. Więcej o tym, jak system dobiera kolejne kroki, znajdziesz w artykule o Auto.
Browser rozwiązuje wyzwania checkbox przy nakładających się requestach
Browser radzi sobie teraz z weryfikacją checkbox przy równoległych requestach do tej samej strony. Trzy jednoczesne wywołania na serwisie informacyjnym za Turnstile: 5.2s, 5.8s, 9.1s.
Wdrożono też dwie mniejsze poprawki. Kliknięcie jest zaliczane dopiero wtedy, gdy widget rzeczywiście zniknie, ponieważ Cloudflare generuje wyzwanie ponownie częściej, niż można by przypuszczać (pierwsze kliknięcie regularnie nie kończy procesu). Ponadto strona, która przejdzie weryfikację, zwraca defenseSolved: true w wywołaniu, które ją odblokowało, czyli w tym samym, za które naliczono opłatę za rozwiązanie.
Zablokowana strona informuje, co zarejestrował moduł rozwiązujący
Komunikat "Timeout" sugeruje problem z opóźnieniem sieci. W większości przypadków opóźnienie nie jest przyczyną, a rozwiązaniem jest zmiana węzła wyjściowego.
Gdy usługa weryfikująca odrzuca próbę, ponawia test i umieszcza w cookies własny znacznik ponowienia. Browser odczytuje ten znacznik. Zamiast czekać na wyczerpanie limitu czasu, zwraca odpowiedź po około 17 sekundach, podając nazwę dostawcy zabezpieczeń, wykonane kliknięcia oraz informację, czy uzyskano dostęp:
Timeout after 12s: the cloudflare challenge did not complete from this exit
(2 checkbox presses, clearance granted, challenge re-issued by the site)
Jedna z tych linii mówi, aby wysłać request w inny sposób. Druga nie mówi nic.
Błędy z warstwy API są teraz bardziej czytelne. Request przekraczający czas oczekiwania zwraca timeout, usługa, do której nie możemy dotrzeć, zwraca status unavailable i żaden z nich nie jest opisywany jako problem z proxy, gdy request w ogóle nie korzystał z proxy. timeout_ms przy wywołaniu Browser jest respektowany do pełnych 120 sekund akceptowanych przez API, więc wolny cel otrzymuje ustawiony przez Ciebie limit czasu i otrzymujesz werdykt samego silnika, a nie bramy. Parametry są wymienione w API reference.
Dane rozliczeniowe i korygowanie faktury w miesiącu jej wystawienia
Bułgarskie faktury wymagają wskazania reprezentanta firmy (MOL) w polu odbiorcy. System wcześniej tego nie zbierał, więc ta linia zawsze pozostawała pusta. Dane rozliczeniowe zawierają już to pole.
Tabela Invoices oferuje także opcję Update details dla faktury, która nadal mieści się w miesiącu wystawienia i której zamrożone dane różnią się od Twojego obecnego profilu rozliczeniowego. Okno dialogowe wymienia każde zmieniane pole oraz jego nową wartość, jasno informuje, że numer, daty i kwoty pozostają bez zmian, a potwierdzenie stanowi Twoją zgodę zarejestrowaną po naszej stronie. Faktura w tym oknie czasowym, która nie wymaga zmian, wyświetla komunikat "Editable until" wraz z datą, dzięki czemu termin jest widoczny od razu, a nie po fakcie.
Pod maską
Każdy skrypt uruchamiany przez Dashboard jest serwowany z naszego własnego origin, a logowanie przekierowuje wyłącznie do ścieżki w obrębie tej witryny.
Wdrożenia usługi renderowania odbywają się serwer po serwerze, a każdy serwer musi obsłużyć rzeczywistą stronę, zanim rozpocznie się aktualizacja kolejnego.
Na portalu statusu endpoint issues udostępnia otwarte i rozwiązane zgłoszenia przez publiczne API, zgodnie z listą na stronie.
Odmowa, która jasno wskazuje przyczynę, wymaga jednego wywołania. Oczekiwanie zakończone statusem "Timeout" to zgadywanie, co zrobić dalej, opłacone tą samą ceną. Błędy są częścią produktu i w tym tygodniu zaczęliśmy traktować je w ten sposób.