Folosirea unui IP de proxy în Python Requests
Stabilește rute proxy explicite pentru fiecare cerere în Requests, alege schema corectă a punctului de conectare și tratează expirările și erorile tunelului HTTPS.
Când Requests este disponibil în proiect, transmite apelului o mapare de proxy-uri:
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)
Înlocuiește punctul de loopback cu proxy-ul tău activ sau cu un candidat din lista de proxy-uri HTTP pe care îl vei testa cu această cerere. Cheile descriu schemele destinației: http pentru URL-uri HTTP și https pentru URL-uri HTTPS. Valorile descriu interfața de ascultare a proxy-ului. Pot fi puncte diferite dacă rețeaua necesită rute separate.
O valoare de proxy http:// sub cheia https este intenționată. Requests cere un tunel CONNECT interfeței HTTP și apoi stabilește TLS cu destinația prin el, în limitele politicii proxy-ului pentru destinații și porturi. Schimbarea valorii în https:// cere TLS cu proxy-ul însuși; poate eșua dacă interfața așteaptă HTTP necriptat.
Ce înseamnă cele două numere de timeout
timeout=(5, 15) setează timpii de așteptare pentru conexiune și citire. Nu impune un termen total de cincisprezece secunde. Datele sosite periodic, mai multe adrese și încercările de conectare pot prelungi durata. Requests nu oferă un timeout general dacă omiți setarea; alege limite potrivite răspunsului și adaugă un termen la nivel de aplicație dacă operația necesită un buget total strict.
Tratează eșecul în etapa în care apare
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)
Un CONNECT respins poate produce ProxyError înainte să existe un răspuns al destinației. Ramura HTTPError urmează unui răspuns primit cu stare de eroare; Timeout înseamnă că o limită configurată a expirat. Examinează local lanțurile de excepții ale conexiunii și elimină punctele cu credențiale și URL-urile private înainte de a le distribui.
Lasă verificarea certificatelor activată. Dacă rețeaua autorizată folosește o CA privată sau interceptare gestionată, furnizează materialul de încredere așteptat în loc să dezactivezi verificarea.
Intrările explicite pentru fiecare cerere controlează rutele oferite aici, dar schemele omise pot fi încă influențate de descoperirea proxy-urilor din mediu. Când muți apelul într-o Session reutilizabilă, decide cum interacționează variabilele de mediu, valorile implicite Session și suprascrierile per cerere; reutilizarea conexiunii și politica de rutare sunt alegeri separate.