När Requests finns tillgängligt i projektet skickar du en proxymappning till anropet:

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)

Ersätt loopback-ändpunkten med din aktiva proxy eller en kandidat från listan med HTTP-proxyer som du tänker testa med begäran. Nycklarna beskriver destinationens scheman: http för HTTP-URL:er och https för HTTPS-URL:er. Värdena beskriver proxyns lyssnare. Det kan vara olika ändpunkter om nätverket kräver separata rutter.

Ett proxyvärde med http:// under nyckeln https är avsiktligt. Requests begär en CONNECT-tunnel från HTTP-lyssnaren och upprättar sedan TLS till destinationen genom den, med hänsyn till proxyns policy för destinationer och portar. Att ändra värdet till https:// begär TLS till själva proxyn; det kan misslyckas om lyssnaren förväntar sig okrypterad HTTP.

Vad de två timeoutvärdena betyder

timeout=(5, 15) anger tidsgränser för anslutning och läsning. Det inför ingen total tidsgräns på femton sekunder. Data som kommer regelbundet, flera adresser och anslutningsförsök kan förlänga den förflutna tiden. Requests anger ingen allmän timeout om inställningen utelämnas. Välj därför gränser som passar svaret och lägg till en tidsfrist på applikationsnivå om arbetet kräver en strikt total tidsbudget.

Hantera felet i den fas där det uppstå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 avvisad CONNECT kan ge ProxyError innan något destinationssvar finns. Grenen HTTPError följer ett mottaget svar med felstatus; Timeout betyder att en inställd gräns har löpt ut. Undersök undantagskedjor för anslutningsetablering lokalt och ta bort ändpunkter med inloggningsuppgifter och privata URL:er innan du delar dem.

Låt certifikatverifiering vara aktiverad. Om det godkända nätverket använder en privat CA eller hanterad avlyssning ska du ge det förväntade tillitsmaterialet i stället för att stänga av verifieringen.

Uttryckliga poster per begäran styr de angivna rutterna, men utelämnade scheman kan fortfarande påverkas av proxydetektering från miljön. När anropet flyttas till en återanvändbar Session, bestäm hur miljövariabler, Session-standarder och åsidosättanden per begäran ska samverka; återanvändning av anslutningar och routingpolicy är separata val.

Relaterade artiklar