Proxy IP bat erabiltzea Python Requests-en
Ezarri eskaera bakoitzeko proxy-bide esplizituak Requests-en, aukeratu amaierako puntuaren eskema egokia eta kudeatu denbora-mugak eta HTTPS tunelaren hutsegiteak.
Requests proiektuan erabilgarri dagoenean, pasa proxyen mapaketa deiari:
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)
Ordeztu loopback amaierako puntua zure proxy aktiboarekin edo eskaera honekin probatuko duzun HTTP proxyen zerrendako hautagai batekin. Gakoek helmugaren eskemak deskribatzen dituzte: http HTTP URLetarako eta https HTTPS URLetarako. Balioek proxyaren entzulea deskribatzen dute. Amaierako puntu desberdinak izan daitezke sareak bide bereiziak behar baditu.
http:// proxy-balioa https gakoaren azpian egotea nahita egina da. Requests-ek HTTP entzuleari CONNECT tunela eskatzen dio eta ondoren haren bidez helmugarekiko TLS ezartzen du, proxyaren helmuga- eta ataka-politikaren barruan. Balioa https:// bihurtzeak proxyarekin berarekin TLS eskatzen du; huts egin dezake entzuleak zifratu gabeko HTTP espero badu.
Zer esan nahi dute denbora-mugako bi zenbakiek?
timeout=(5, 15) ezarpenak konexioaren eta irakurketaren denbora-mugak ezartzen ditu. Ez du guztira hamabost segundoko epemugarik ezartzen. Aldizka jasotako datuek, hainbat helbidek eta konexio-saioek igarotako denbora luzatu dezakete. Ezarpena kentzean Requests-ek ez du denbora-muga orokorrik ematen. Aukeratu erantzunerako muga egokiak eta gehitu aplikazio-mailako epemuga lana denbora-aurrekontu oso zorrotz bati lotuta badago.
Kudeatu hutsegitea gertatzen den fasean
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)
Baztertutako CONNECT batek ProxyError eragin dezake helmugaren erantzunik egon aurretik. HTTPError adarra errore-egoerako erantzuna jaso ondoren dator; Timeout ezarritako muga iraungi dela adierazten du. Aztertu konexio-ezarpeneko salbuespen-kateak lokalki eta kendu kredentzialak dituzten amaierako puntuak eta URL pribatuak partekatu aurretik.
Utzi ziurtagiri-egiaztapena gaituta. Sare baimenduak CA pribatu bat edo kudeatutako atzematea erabiltzen badu, eman espero den konfiantza-materiala egiaztapena desgaitu beharrean.
Eskaera bakoitzeko sarrera esplizituek hemen emandako bideak kontrolatzen dituzte, baina zehaztu gabeko eskemetan inguruneko proxy-aurkikuntzak eragin dezake oraindik. Deia Session berrerabilgarri batera eramatean, erabaki ingurune-aldagaiek, Session-en lehenespenek eta eskaerako gainidazketek nola elkar eragingo duten; konexioaren berrerabilera eta bideratze-politika aukera bereiziak dira.