Ak je Requests v projekte dostupné, odovzdajte volaniu mapovanie proxy:

import requests

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

response = requests.get(
    "https://example.com/",
    proxies=proxies,
    timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)

Nahraďte koncový bod spätnej slučky svojou bežiacou proxy alebo kandidátom zo zoznamu HTTP proxy, ktorého otestujete touto požiadavkou. Kľúče opisujú schémy cieľa: http pre HTTP URL a https pre HTTPS URL. Hodnoty opisujú počúvajúce rozhranie proxy. Ak sieť vyžaduje oddelené trasy, môžu to byť rôzne koncové body.

Hodnota proxy http:// pod kľúčom https je zámerná. Requests požiada HTTP rozhranie o tunel CONNECT a potom cez neho vytvorí TLS s cieľom, podľa pravidiel proxy pre ciele a porty. Zmena na https:// žiada TLS k samotnej proxy; ak rozhranie očakáva nešifrované HTTP, môže zlyhať.

Čo znamenajú dve hodnoty timeoutu

timeout=(5, 15) nastavuje timeout spojenia a čítania. Neurčuje celkovú pätnásťsekundovú lehotu. Pravidelne prichádzajúce dáta, viaceré adresy a pokusy o spojenie môžu celkový čas predĺžiť. Pri vynechaní nastavenia Requests neposkytuje všeobecný timeout; zvoľte preto limity vhodné pre odpoveď a pridajte lehotu na úrovni aplikácie, ak úloha potrebuje prísny celkový časový rozpočet.

Ošetrite zlyhanie vo fáze, kde nastane

try:
    response = requests.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()
except requests.exceptions.ProxyError as error:
    print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
    print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
    print("HTTP status:", error.response.status_code)

Odmietnutý CONNECT môže vyvolať ProxyError ešte pred vznikom odpovede cieľa. Vetva HTTPError nasleduje po prijatej odpovedi s chybovým stavom; Timeout znamená vypršanie nastaveného limitu. Reťazce výnimiek nadväzovania spojenia skúmajte miestne a pred zdieľaním odstráňte koncové body s prihlasovacími údajmi a súkromné URL.

Overovanie certifikátov nechajte zapnuté. Ak autorizovaná sieť používa súkromnú CA alebo spravované zachytávanie prevádzky, dodajte očakávaný materiál dôvery namiesto vypnutia overovania.

Explicitné položky požiadavky riadia tu poskytnuté trasy, ale vynechané schémy môže stále ovplyvniť zisťovanie proxy z prostredia. Pri prenose volania do opakovane použiteľnej Session určte, ako majú spolupracovať premenné prostredia, predvolené hodnoty Session a prepisy pre požiadavku; opätovné použitie spojenia a pravidlá smerovania sú oddelené voľby.

Súvisiace články