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 zupełnie jak działająca opcja.
Port proxy FourA odpowiada na to błędem 400 z listą wszystkich rozpoznawanych kluczy. To drobny szczegół produktu, który opuścił fazę beta 15 września: proxy URL w naszych węzłach wyjściowych dla każdego klienta obsługującego proxy (przeglądarki, narzędzia do pobierania, Twojego obecnego scrapera), bez konieczności pisania wywołań API. Tworzysz użytkownika proxy w Dashboardzie, wklejasz ciąg znaków, a tunele i ruch wliczają się do Twojego planu dokładnie tak samo, jak żądania API.
Oto pełna gramatyka oraz powody wprowadzenia każdej z 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 użytkownicy proxy, celowo oddzieleni od Twojego klucza API: uzgadnianie połączenia proxy jest przesyłane otwartym tekstem, a użytkownik proxy może otrzymać nowe hasło bez modyfikowania integracji API.
Wszystko po danych uwierzytelniających stanowi listę 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
Węzły Shared to własne punkty wyjściowe FourA: domyślne i wliczone w Twój plan. Węzły Premium to adresy domowe, pobierane z limitu ruchu premium w Twoim planie oraz z dokupionych pakietów. W sieci shared parametr -fallback-premium pozwala przenieść połączenie na węzeł premium, gdy węzeł shared nie może go obsłużyć. Funkcja jest domyślnie wyłączona i działa tylko wtedy, gdy masz dostępny limit premium. Włączenie jej domyślnie oznaczałoby decydowanie za Ciebie o zużyciu tego limitu.
Parametr kraju można powtarzać, więc -country-de-country-fr oznacza zakres obejmujący dwa kraje. Region, miasto, sieć wg numeru AS, urządzenie (windows, android, ios, mac) oraz lifetime (od 3 do 1440 minut) są dostępne wyłącznie w opcji premium. Wskazanie miasta w sieci shared zwraca błąd 400 zamiast próby dopasowania na zasadzie best effort. Sieć shared wybiera się wyłącznie na poziomie kraju, ponieważ filtr miasta, którego w większości przypadków nie da się zrealizować, jest gorszy niż brak filtra.
Parametr -session-<name> (od 1 do 32 liter, cyfr lub podkreśleń) włącza sesje sticky: każde połączenie o tej samej nazwie korzysta z tego samego adresu. W sieci shared adres jest utrzymywany w 10-minutowym oknie przesuwnym, więc działa tak długo, jak długo go używasz. W sieci premium adres jest utrzymywany przez czas lifetime ustawiony przez Ciebie lub domyślny dla danej sieci. Pominięcie sesji sprawia, że każde połączenie wychodzi z nowego adresu.
Dostępne są także zapisane wartości domyślne. Targetowanie zapisane dla użytkownika proxy w Dashboardzie ma zastosowanie do każdego nawiązanego przez niego połączenia, dzięki czemu ciąg połączenia 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 obsługujące nagłówki w żądaniu CONNECT (np. curl z opcją --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ść tych zmian sprawia, że nie musisz już zadawać pewnych pytań.
Dlaczego żądanie zostało odrzucone? Każde odrzucenie po zweryfikowaniu danych logowania zawiera nagłówek X-Foura-Error z jednolinijkowym powodem. Błąd 400 wskazuje opcję oraz akceptowane przez nią wartości. Błąd 429 informuje, który limit Twojego planu został osiągnięty: liczba jednocześnie otwartych tuneli, liczba otwarć tuneli na minutę lub standardowy transfer w okresie rozliczeniowym.
Do kogo należy limit? Do konta. Tunele i ich otwarcia są zliczane dla całego konta, a nie dla pojedynczego użytkownika proxy, więc dodatkowe dane logowania nie dają nowego limitu. Bajty wliczają się do transferu w Twoim planie, a bajty premium do limitu premium w ramach tej puli, nigdy ponad nią. W planie rozliczanym w modelu kredytowym port ma własne gigabajty w pakiecie, które doładowuje się na stronie Billing. Gdy żaden tunel nie zostanie otwarty, nic nie jest naliczane.
Kto jest właścicielem danych uwierzytelniających? Może nim być teraz organizacja, więc firmowy downloader nie przestanie działać w dniu odejścia jednego pracownika. Członkowie mogą z nich korzystać i odczytywać hasło; administratorzy i właściciele mogą je rotować, wyłączać lub zmieniać ich targetowanie; jedynie właściciel może przenieść je na zewnątrz.
Co to dało? Przełącz widok Product w zakładkach Overview, Metrics lub Activity na Proxy: zobaczysz tunele w tych samych klasach wyników co Twoje requesty API, liczbę aktualnie otwartych połączeń, czas konfiguracji i ruch, w podziale na użytkownika proxy, cel, kraj wyjściowy lub IP klienta. Sesja, która ma już przypisany adres, zazwyczaj łączy się w czasie znacznie poniżej sekundy.
Port działa jednak jak zwykły potok i na tym polega kompromis. Twój klient komunikuje się ze stroną przez tunel, więc profile przeglądarek, Twoje reguły validate oraz obsługa stron interaktywnych nie znajdują się na tej ścieżce. Liczone są także bajty: strona z błędem odmowy przesłana przez otwarty tunel to bajty jak każde inne, podczas gdy w API request zakończony niepowodzeniem nie jest rozliczany. Przesyłaj bajty przez port, a trudniejsze strony wymagające obejścia zabezpieczeń kieruj do API.
Dla zaawansowanych użytkowników
Gdy limit pakietu premium zostanie wyczerpany, trzy ścieżki do tej sieci celowo zwracają trzy różne odpowiedzi. Połączenie, które jawnie wskazuje -network-premium, zostaje odrzucone z kodem 403 z jasnym komunikatem, ponieważ klient obsłużony po cichu z innego miejsca ponawiałby zapytania, a potem szukał na fakturze pozycji premium, która się nie pojawi. Ścieżka fallback po prostu nie jest uruchamiana, a domyślne ustawienie premium zapisane na użytkowniku proxy przełącza się na sieć współdzieloną, dzięki czemu tunel nadal się otwiera. W żadnym z tych przypadków nie podjęto decyzji o dodatkowych kosztach dla tego połączenia.
Trzy kombinacje są odrzucane całkowicie zamiast częściowej realizacji: precyzyjne targetowanie w sieci współdzielonej, -fallback-premium razem z -network-premium oraz precyzyjne targetowanie przy aktywnym fallbacku. Port obsługuje wyłącznie CONNECT, więc klient, który przesyła zwykły request http:// zamiast go tunelować, otrzymuje kod 405 (curl tuneluje go za pomocą --proxytunnel). Z kolei przeglądarka sterowana przez port powinna zawsze mieć zdefiniowaną nazwę sesji, ponieważ jedno załadowanie strony otwiera dziesiątki połączeń.
Kilka procesów worker, każdy na osobnym adresie? Przypisz każdemu osobną nazwę 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, w formacie URL lub host:port:user:pass dla menedżerów proxy. Masz problem z odrzuceniem połączenia? Dodaj -sv do wywołania curl i przekaż potokiem do 2>&1 | grep -i x-foura-error. Każda opcja została opisana w proxy port reference, a konfiguracja po stronie panelu w 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: wybierasz sieć i kraj, przełączasz suwak, a pasek stanu pokazuje adres widoczny dla stron. To wersja beta, niedostępna w Chrome Web Store, instalowana z poziomu Tools w Dashboardzie w trybie deweloperskim. W dalszej perspektywie na publicznej mapie drogowej znajduje się rozliczanie na poziomie organizacji. Ma to znaczenie, ponieważ proxy user organizacji obciąża dziś konto jej bieżącego właściciela.
URL proxy to najstarszy istniejący kontrakt integracyjny, obsługiwany domyślnie przez niemal każde narzędzie. Najważniejszy do dopracowania nigdy nie był sam tunel. Chodzi o to, co może oznaczać ciąg znaków przed nim i co się stanie, gdy popełnisz w nim błąd.