Når Requests er tilgængelig i projektet, kan du sende en proxytilknytning med i kaldet:

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)

Erstat loopback-endepunktet med din kørende proxy eller en kandidat fra listen over HTTP-proxyer, som du vil teste med denne anmodning. Nøglerne beskriver destinationens skemaer: http for HTTP-URL’er og https for HTTPS-URL’er. Værdierne beskriver proxyens lyttepunkt. Det kan være forskellige endepunkter, hvis netværket kræver adskilte ruter.

En proxyværdi med http:// under nøglen https er bevidst valgt. Requests beder HTTP-lyttepunktet om en CONNECT-tunnel og etablerer derefter TLS til destinationen gennem den, underlagt proxyens politik for destinationer og porte. At ændre værdien til https:// beder om TLS til selve proxyen; det kan fejle, hvis lyttepunktet forventer ukrypteret HTTP.

Hvad de to timeouttal betyder

timeout=(5, 15) angiver tidsgrænser for forbindelse og læsning. Det fastsætter ikke en samlet frist på femten sekunder. Regelmæssigt indgående data, flere adresser og forbindelsesforsøg kan forlænge den forløbne tid. Requests angiver ingen generel timeout, hvis du udelader indstillingen. Vælg derfor passende grænser til svaret, og tilføj en frist på applikationsniveau, hvis opgaven kræver et stramt samlet tidsbudget.

Håndter fejlen på det trin, hvor den opstår

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)

En afvist CONNECT kan udløse ProxyError, før der findes et svar fra destinationen. Grenen HTTPError følger et modtaget svar med fejlstatus; Timeout betyder, at en konfigureret grænse er udløbet. Undersøg lokalt kæder af undtagelser fra forbindelsesoprettelsen, og fjern endepunkter med legitimationsoplysninger og private URL’er, før du deler dem.

Lad certifikatkontrollen være aktiveret. Hvis det autoriserede netværk bruger en privat CA eller administreret opsnapning, skal du levere det forventede tillidsmateriale frem for at slå kontrollen fra.

Udtrykkelige poster pr. anmodning styrer de angivne ruter, men udeladte skemaer kan stadig påvirkes af proxyregistrering fra miljøet. Når kaldet flyttes til en genanvendelig Session, skal du afgøre hvordan miljøvariabler, Session-standarder og tilsidesættelser pr. anmodning skal spille sammen; genbrug af forbindelser og routingpolitik er separate valg.

Relaterede artikler