Jak skonfigurować proxy w httpx

Proxy w httpx dla Pythona: parametr proxy w Client i AsyncClient, login i hasło w adresie URL, SOCKS5 przez httpx[socks] i wybór portu.

Zaktualizowano · Redakcja Prokso

Dane do połączenia
Host
gw.prokso.com
Port
823 HTTP · 824 SOCKS5 — nowy IP przy każdym żądaniu · 10000–20000 stały IP na całą sesję, HTTP(S) i SOCKS5
Login i hasło
w panelu klienta, na stronie planu

Gotowe wiersze w potrzebnym formacie wygenerujesz w panelu klienta: wybierz kraj, typ IP i protokół.

W skrócie
  • Host gw.prokso.com, porty 823 (HTTP), 824 (SOCKS5), 10000–20000 (stały IP, HTTP lub SOCKS5)
  • Login i hasło znajdziesz w panelu klienta na stronie planu
  • Sprawdzaj IP w odpowiedzi samego żądania wysłanego przez proxy: strona Mój IP w przeglądarce nie testuje Twojego skryptu

Instrukcja krok po kroku, jak podłączyć proxy Prokso w httpx. Zajmie to kilka minut.

Krok 1. Pobierz dane proxy z panelu klienta

Otwórz swój plan i skopiuj host gw.prokso.com, port, login i hasło. Port 823 to HTTP, a 824 to SOCKS5 (oba dają nowy IP przy każdym żądaniu); porty 10000–20000 utrzymują jeden IP przez całą sesję – do 120 minut i działają zarówno jako HTTP, jak i SOCKS5 (każdy port to osobny adres). Kraj ustawiasz w loginie: username__cr.ua.

Krok 2. Zainstaluj bibliotekę

pip install httpx. Dla SOCKS5: pip install "httpx[socks]". Poniższe przykłady dotyczą httpx 0.28, w którym proxy przekazuje się parametrem proxy; dawny parametr proxies został usunięty.

import httpx

PROXY = "http://USERNAME:PASSWORD@gw.prokso.com:823"

with httpx.Client(proxy=PROXY, timeout=30) as client:
    r = client.get("https://api.ipify.org?format=json")
    print(r.json())

Krok 3. Przekaż proxy do klienta

Utwórz httpx.Client z parametrem proxy i wpisz login i hasło bezpośrednio w adres URL. Wszystkie żądania z tego klienta idą przez proxy i ponownie wykorzystują połączenia z nim – to szybsze niż osobne httpx.get dla każdego żądania.

import asyncio
import httpx


async def main():
    async with httpx.AsyncClient(proxy="socks5://USERNAME:PASSWORD@gw.prokso.com:824", timeout=30) as client:
        urls = ["https://api.ipify.org?format=json"] * 3
        for r in await asyncio.gather(*(client.get(u) for u in urls)):
            print(r.json())


asyncio.run(main())

Krok 4. Żądania asynchroniczne i SOCKS5

httpx.AsyncClient przyjmuje ten sam parametr. Dla SOCKS5 zmień schemat na socks5://, a port na 824: httpx przekazuje nazwę strony do proxy, więc zapytania DNS go nie omijają.

Krok 5. Dobierz port do zadania

Do równoległego zbierania danych zostaw 823 lub 824 – każde żądanie dostanie nowy adres. Aby wysłać serię żądań z jednego IP, użyj portu ze stałym IP z zakresu 10000-20000: działa zarówno z http://, jak i z socks5://.

Krok 6. Jeśli połączenie się nie udaje

Sprawdź host gw.prokso.com, port i schemat: HTTP na 823, SOCKS5 na 824, dowolny z nich na portach 10000-20000. Błąd 407 oznacza zły login lub hasło albo koniec transferu w planie: sprawdź saldo na stronie planu w panelu klienta. Przekroczenie limitu czasu najczęściej oznacza literówkę w porcie albo klienta, który oczekuje innego protokołu. Jeśli korzystasz z listy dozwolonych IP, upewnij się, że jest na niej zewnętrzny adres właśnie tej maszyny, na której działa kod.

Krok 7. Sprawdź wynik

Uruchom przykład: skrypt wywołuje https://api.ipify.org i wypisuje IP, który widzi strona. Powinien to być adres proxy, a nie Twój. Błąd 407 oznacza zły login lub hasło albo koniec transferu w planie. Strona „Mój IP” w przeglądarce tu nie pomoże: przeglądarka łączy się bezpośrednio.

Jeśli proxy nie działa

Pytania i odpowiedzi (FAQ)

Czy httpx odczytuje proxy ze zmiennych środowiskowych?

Tak, domyślnie httpx odczytuje HTTP_PROXY i HTTPS_PROXY. Jeśli przekażesz parametr proxy, pierwszeństwo ma on. Aby zmienne nie wpływały na skrypt, utwórz klienta z trust_env=False.

Co oznacza ProxyError: 407?

Proxy nie zaakceptowało loginu lub hasła. Skopiuj linię z generatora w panelu klienta jeszcze raz i sprawdź, czy w planie został transfer.

Którego portu użyć?

Port 823 (HTTP) lub 824 (SOCKS5) daje nowy IP przy każdym żądaniu – to dobre rozwiązanie do zbierania danych. Port z zakresu 10000-20000 utrzymuje jeden IP do 120 minut – do sesji, w których logujesz się na konto. Plan pozwala na maksymalnie 1000 jednoczesnych połączeń.

Jak wybrać kraj?

Kraj jest częścią loginu proxy. Wygeneruj w panelu klienta linię dla potrzebnego kraju i użyj jej loginu w kodzie; reszta adresu pozostaje bez zmian.

Co zrobić, jeśli część żądań kończy się błędem?

Przy zbieraniu danych niektóre adresy mogą być wolne lub niedostępne. Dodaj w kodzie kilka ponowień z przerwą: na porcie 823 lub 824 każde ponowienie wychodzi z nowego adresu.