Tuża IP ta’ proxy f’Python Requests
Issettja rotot proxy espliċiti għal kull talba f’Requests, agħżel l-iskema t-tajba tal-punt tat-tmiem u mmaniġġja timeouts u fallimenti tat-tunnell HTTPS.
Meta Requests ikun disponibbli fil-proġett, għaddi mappa tal-proxies lis-sejħa:
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)
Ibdel il-punt tat-tmiem loopback bil-proxy tiegħek li qed jaħdem jew kandidat mil-lista ta’ proxies HTTP li se tittestja b’din it-talba. Iċ-ċwievet jiddeskrivu l-iskemi tad-destinazzjoni: http għal URLs HTTP u https għal URLs HTTPS. Il-valuri jiddeskrivu l-listener tal-proxy. Jistgħu jkunu punti differenti jekk in-network jeħtieġ rotot separati.
Valur proxy http:// taħt iċ-ċavetta https huwa intenzjonat. Requests jitlob tunnell CONNECT mingħand il-listener HTTP u mbagħad jistabbilixxi TLS mad-destinazzjoni minnu, skont il-politika tal-proxy għad-destinazzjonijiet u l-portijiet. Tibdil għal https:// jitlob TLS mal-proxy nnifsu; jista’ jfalli jekk il-listener jistenna HTTP mhux ikkriptat.
Xi jfissru ż-żewġ numri tat-timeout
timeout=(5, 15) jistabbilixxi timeouts tal-konnessjoni u tal-qari. Ma jimponix limitu totali ta’ ħmistax-il sekonda. Data li tasal perjodikament, indirizzi multipli u tentattivi ta’ konnessjoni jistgħu jtawlu l-ħin. Requests ma jipprovdix timeout ġenerali meta tħalli barra s-setting. Agħżel limiti xierqa għar-risposta u żid skadenza fil-livell tal-applikazzjoni jekk ix-xogħol jeħtieġ baġit totali strett.
Immaniġġja l-falliment fl-istadju fejn iseħħ
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)
CONNECT miċħud jista’ jqajjem ProxyError qabel ma teżisti risposta tad-destinazzjoni. Il-fergħa HTTPError tiġi wara risposta riċevuta bi status ta’ żball; Timeout ifisser li skada limitu kkonfigurat. Spezzjona l-ktajjen tal-eċċezzjonijiet tal-konnessjoni lokalment u neħħi punti li fihom kredenzjali u URLs privati qabel taqsamhom.
Ħalli l-verifika taċ-ċertifikati attiva. Jekk in-network awtorizzat juża CA privata jew interċettazzjoni ġestita, ipprovdi l-materjal ta’ fiduċja mistenni minflok tiddiżattiva l-verifika.
Entrati espliċiti għal kull talba jikkontrollaw ir-rotot mogħtija hawn, iżda skemi mħollija barra xorta jistgħu jiġu affettwati mis-sejba ta’ proxies mill-ambjent. Meta tmexxi s-sejħa għal Session li tista’ terġa’ tintuża, iddeċiedi kif jinteraġixxu l-varjabbli tal-ambjent, id-defaults ta’ Session u s-sostituzzjonijiet għal kull talba; l-użu mill-ġdid tal-konnessjoni u l-politika tar-routing huma għażliet separati.