Fer servir una IP de proxy a Python Requests
Defineix rutes de proxy explícites per petició a Requests, tria l’esquema correcte del punt de connexió i gestiona els temps d’espera i els errors del túnel HTTPS.
Quan Requests estigui disponible al projecte, passa un diccionari de proxys a la crida:
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)
Substitueix el punt de bucle local pel teu proxy en funcionament o per un candidat de la llista de proxys HTTP que provaràs amb aquesta petició. Les claus descriuen els esquemes de destinació: http per als URL HTTP i https per als URL HTTPS. Els valors descriuen el punt d’escolta del proxy. Poden ser punts diferents si la xarxa necessita rutes separades.
Un valor de proxy http:// sota la clau https és intencionat. Requests demana un túnel CONNECT al punt d’escolta HTTP i després hi estableix TLS amb la destinació, segons la política de destinacions i ports del proxy. Canviar el valor a https:// demana TLS amb el mateix proxy; pot fallar si el punt d’escolta espera HTTP sense xifrar.
Què signifiquen els dos valors de temps d’espera
timeout=(5, 15) fixa els temps d’espera de connexió i lectura. No imposa un termini total de quinze segons. Les dades que arriben periòdicament, diverses adreces i els intents de connexió poden allargar el temps transcorregut. Requests no proporciona un temps d’espera general si omets aquest ajust. Tria límits adequats a la resposta i afegeix un termini a l’aplicació si la feina necessita un pressupost total estricte.
Gestiona l’error a l’etapa on es produeix
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 rebutjat pot provocar ProxyError abans que hi hagi resposta de la destinació. La branca HTTPError segueix una resposta rebuda amb estat d’error; Timeout vol dir que ha vençut un límit configurat. Examina localment les cadenes d’excepcions de connexió i elimina punts amb credencials i URL privats abans de compartir-les.
Mantén activada la verificació de certificats. Si la xarxa autoritzada usa una CA privada o una intercepció gestionada, proporciona el material de confiança previst en lloc de desactivar-la.
Les entrades explícites per petició controlen les rutes indicades aquí, però els esquemes omesos encara poden estar afectats per la detecció de proxys de l’entorn. En traslladar la crida a una Session reutilitzable, decideix com han d’interactuar les variables d’entorn, els valors per defecte de Session i les substitucions per petició; reutilització de connexions i política d’encaminament són decisions separades.