Użyj proxy=, gdy jeden punkt końcowy ma obsługiwać żądania klienta. Użyj mounts=, gdy schematy celów wymagają różnych tras. Przykłady korzystają z tych interfejsów HTTPX; projekt ze starszym API proxies= potrzebuje konfiguracji zgodnej z wersją.

Jeden punkt końcowy

import httpx

timeout = httpx.Timeout(15.0, connect=5.0)

with httpx.Client(
    proxy="http://127.0.0.1:8080",
    trust_env=False,
    timeout=timeout,
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Zastąp lokalny punkt nasłuchu działającym proxy HTTP. Kandydata z listy proxy HTTP nadal trzeba sprawdzić z własnym celem. Cel HTTPS może użyć tego punktu http:// przez CONNECT. Zmiana schematu na https:// żąda TLS do samego proxy, co muszą obsługiwać klient i punkt nasłuchu.

Osobne trasy według schematu celu

import httpx

mounts = {
    "http://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8080",
        trust_env=False,
    ),
    "https://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8081",
        trust_env=False,
    ),
}

with httpx.Client(
    mounts=mounts,
    trust_env=False,
    timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Klucze montowań pasują do docelowych URL-i. Cele HTTP wybierają tu port 8080, a HTTPS port 8081. Wartość proxy opisuje własny protokół punktu nasłuchu, więc montowanie HTTPS może poprawnie zawierać proxy http://. Wstaw własne punkty końcowe i sprawdź oba schematy celów.

Obie receptury ustawiają trust_env=False na kliencie i, jeśli podano, na transportach. W przeciwnym razie HTTPX domyślnie czyta zmienne środowiska proxy i certyfikatów. Jeśli wdrożenie ich potrzebuje, pozostaw wykrywanie włączone lub jawnie ustaw wymagane trasy i zaufanie. Dla prywatnego zaufania użyj kontekstu TLS i konfiguracji CA obsługiwanych przez swoją wersję HTTPX; nie wyłączaj weryfikacji celu. Zaufanie do proxy HTTPS może być odrębne od zaufania do celu.

httpx.Timeout(15.0, connect=5.0) zastępuje limit połączenia i dostarcza pozostałym skonfigurowanym składnikom wartość domyślną. Odczyt, zapis i oczekiwanie na pulę mają osobne limity; piętnaście sekund nie jest całkowitym terminem czasu rzeczywistego. Timeout puli może oznaczać, że inne zadanie zajmuje dostępne połączenia. Prawidłowo zamykaj klientów i odpowiedzi strumieniowe, zanim uznasz to za dowód niedostępności proxy.

Powiązane artykuły