Përdorimi i një IP-je proxy në Python Requests
Vendosni rrugë proxy të qarta për çdo kërkesë në Requests, zgjidhni skemën e duhur të pikës fundore dhe trajtoni afatet dhe gabimet e tunelit HTTPS.
Kur Requests është në dispozicion në projekt, kalojini thirrjes një hartëzim proxy-sh:
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)
Zëvendësoni pikën loopback me proxy-n tuaj që punon ose një kandidat nga lista e proxy-ve HTTP që do ta provoni me këtë kërkesë. Çelësat përshkruajnë skemat e destinacionit: http për URL HTTP dhe https për URL HTTPS. Vlerat përshkruajnë dëgjuesin e proxy-t. Mund të jenë pika të ndryshme nëse rrjeti kërkon rrugë të ndara.
Vlera proxy http:// nën çelësin https është e qëllimshme. Requests i kërkon dëgjuesit HTTP një tunel CONNECT dhe pastaj krijon TLS me destinacionin përmes tij, sipas politikës së proxy-t për destinacionet dhe portat. Ndryshimi në https:// kërkon TLS me vetë proxy-n; mund të dështojë nëse dëgjuesi pret HTTP të paenkriptuar.
Çfarë nënkuptojnë dy numrat e afatit
timeout=(5, 15) vendos afatet e lidhjes dhe leximit. Nuk imponon një afat të përgjithshëm prej pesëmbëdhjetë sekondash. Të dhënat që mbërrijnë periodikisht, disa adresa dhe përpjekjet për lidhje mund ta zgjasin kohën. Requests nuk ofron afat të përgjithshëm kur e hiqni këtë cilësim. Zgjidhni kufij sipas përgjigjes dhe shtoni një afat në nivel aplikacioni nëse puna kërkon buxhet total të rreptë.
Trajtojeni dështimin në fazën ku ndodh
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)
Një CONNECT i refuzuar mund të ngrejë ProxyError përpara se të ekzistojë përgjigjja e destinacionit. Dega HTTPError vjen pas një përgjigjeje të marrë me status gabimi; Timeout do të thotë se skadoi një kufi i konfiguruar. Shqyrtoni lokalisht zinxhirët e përjashtimeve të lidhjes dhe hiqni pikat me kredenciale e URL-të private para se t’i ndani.
Lëreni verifikimin e certifikatave aktiv. Nëse rrjeti i autorizuar përdor CA private ose përgjim të menaxhuar, jepni materialin e pritshëm të besimit në vend të çaktivizimit të verifikimit.
Hyrjet e qarta për çdo kërkesë kontrollojnë rrugët e dhëna këtu, por skemat e lëna jashtë mund të ndikohen ende nga zbulimi i proxy-ve në mjedis. Duke e kaluar thirrjen në një Session të ripërdorshëm, përcaktoni si bashkëveprojnë variablat e mjedisit, parazgjedhjet e Session dhe mbivendosjet e kërkesës; ripërdorimi i lidhjeve dhe politika e rrugëzimit janë zgjedhje të veçanta.