Transfer proxy kończy się szybciej, niż zakładano

Najczęściej gigabajty idą na to, czego nie widać w wyniku pracy: obrazy, czcionki, skrypty, ponowienia i żądania w tle. Poniżej – dokąd dokładnie i jak to zmierzyć.

Zaktualizowano · Redakcja Prokso

W skrócie
  • Transfer liczy się w obie strony, a dokładne geo podwójnie
  • Najwięcej zjadają obrazy, wideo, czcionki i skrypty oraz ponowienia żądań
  • Blokuj zbędne zasoby, ponownie używaj połączeń i proś o kompresję

Co oznacza błąd

W Prokso transfer liczy się w obie strony: to, co program wysyła, i to, co pobiera. Przy zwykłym scrapingu większość daje odpowiedź strony, ale przy wysyłaniu plików, formularzy czy dużych żądań do API ruch wychodzący też jest zauważalny.

Strona to nie tylko HTML. Przeglądarka lub przeglądarka antydetekcyjna pobiera wszystko, do czego strona się odwołuje: obrazy, wideo, czcionki, skrypty, reklamy i liczniki. Dlatego strona z niewielkim tekstem może ciągnąć wielokrotnie więcej danych niż sam tekst.

Kolejny mnożnik to dokładne geo. Region, miasto, ZIP lub operator (ASN) liczone są podwójnie: 1 GB takiego transferu zabiera z pakietu 2 GB. Kraj – bez dopłaty.

Przyczyny

  • Zasoby stron. Obrazy, wideo, czcionki i skrypty to najcięższa część typowej strony. Przeglądarki headless w Puppeteer, Playwright i Selenium pobierają je tak samo jak zwykła przeglądarka, nawet jeśli potrzebujesz tylko tekstu.
  • Ponowienia żądań. Każda próba, która zdążyła pobrać choć część strony, to też transfer. Pętla ponowień bez ograniczenia liczby prób po captchy lub błędzie 429 po cichu zjada pakiet.
  • Odpowiedzi bez kompresji. Jeśli program nie wysyła nagłówka Accept-Encoding, serwer zwraca tekst bez kompresji. Przeglądarki wysyłają go same, skrypty nie zawsze: curl prosi o kompresję tylko z opcją --compressed.
  • Nowe połączenie przy każdym żądaniu. Każde nowe połączenie HTTPS zaczyna się od uzgadniania TLS, a te dane też przechodzą przez proxy. Bez ponownego użycia połączeń dochodzą do każdego żądania.
  • Dokładne geo bez potrzeby. Miasto, region, ZIP czy operator podwajają zużycie. Jeśli zadaniu wystarcza kraj, lepiej wyłączyć dokładne geo.

Jak to naprawić

  1. Policz oczekiwany wolumen: średni rozmiar strony × liczba stron × zapas na ponowienia. Do szacunku służy kalkulator transferu.
  2. Zmierz prawdziwą stronę: w narzędziach deweloperskich przeglądarki na karcie Network na dole widać, ile danych przesłano. Dla pojedynczego żądania curl pokaże rozmiar treści odpowiedzi bez nagłówków przez -w "%{size_download}".
  3. Blokuj zbędne zasoby w przeglądarce headless: w Puppeteer – page.setRequestInterception(true) i request.abort() dla obrazów, czcionek i mediów, w Playwright – page.route() z route.abort(). Konfiguracja proxy – w instrukcjach Puppeteer i Playwright.
  4. Używaj jednego połączenia do serii żądań: w Pythonie requests.Session() ponownie wykorzystuje połączenia (zob. instrukcję Python requests). Ogranicz liczbę ponowień i dodaj między nimi przerwę.
  5. Proś o kompresję: nagłówek Accept-Encoding: gzip lub opcja --compressed w curl. Dokładne geo włączaj tylko tam, gdzie miasto lub operator naprawdę są potrzebne; parametry loginu – w opisie bramy.

Jak sprawdzić, czy działa

Po zmianach uruchom to samo zadanie na małej próbce i porównaj saldo planu przed i po w panelu klienta. Aby pakiet nie skończył się niespodziewanie, na stronie planu można ustawić limit transferu na godzinę, dobę lub tydzień – zatrzymujący pracę albo tylko ostrzegający – i włączyć powiadomienia e-mail lub w Telegramie, gdy transfer się kończy.

Diagnoza w 2 minuty

Najpierw wklej linię do sprawdzania proxy. Jeśli tam proxy działa, przyczyna leży w programie lub jego ustawieniach. Jeśli nie - sprawdź linię z terminala:

curl -v -x "http://LOGIN:HASŁO@gw.prokso.com:823" https://api.ipify.org
  • Wiersz < HTTP/1.1 407 zaraz po CONNECT oznacza, że odpowiada proxy. Nazwa po kodzie, na przykład NO_USER, wskazuje przyczynę.
  • Proxy odpowiedziało na CONNECT kodem 200, a potem przyszedł inny kod - proxy działa, tę odpowiedź dała strona.
  • Brak odpowiedzi, tylko przekroczony czas - połączenie nie dotarło do proxy: sprawdź host, port i sieć.

Instrukcje, w których pojawia się ten błąd

Przeczytaj też

Pytania i odpowiedzi (FAQ)

Czy transfer jest liczony, gdy strona zwróciła błąd?

Tak. Liczone jest wszystko, co przeszło przez proxy w obie strony, niezależnie od kodu odpowiedzi. Strona z captchą lub błędem 403 też zużywa transfer.

Dlaczego przeglądarka antydetekcyjna zużywa więcej niż skrypt?

Profil antydetekcyjny to pełna przeglądarka: pobiera wszystkie zasoby stron i wysyła własne żądania w tle. Skrypt bierze tylko to, o co poprosisz.

Czy niewykorzystany transfer przepada?

Nie. Kupiony transfer nie ma terminu ważności, więc resztę możesz wykorzystać później.

Rezydencjalne $1.59, mobilne $2.50, serwerowe $0.65 za 1 GB

Rejestracja w minutę, dostęp od razu po płatności.

Utwórz konto