Usar unha IP de proxy en Python Requests
Define rutas proxy explícitas por petición en Requests, escolle o esquema correcto do punto de conexión e xestiona tempos de espera e fallos de túnel HTTPS.
Cando Requests estea dispoñible no proxecto, pasa un mapa de proxys á chamada:
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)
Substitúe o punto de bucle local polo teu proxy activo ou por un candidato da lista de proxys HTTP que probarás con esta petición. As claves describen os esquemas de destino: http para URL HTTP e https para URL HTTPS. Os valores describen o punto de escoita do proxy. Poden ser puntos distintos se a rede require rutas separadas.
Un valor proxy http:// baixo a clave https é intencionado. Requests pide un túnel CONNECT ao punto de escoita HTTP e despois establece TLS co destino a través del, segundo a política de destinos e portos do proxy. Cambiar o valor a https:// pide TLS co propio proxy; pode fallar se o punto de escoita espera HTTP sen cifrar.
Que significan os dous valores de tempo de espera
timeout=(5, 15) fixa tempos de espera de conexión e lectura. Non impón un prazo total de quince segundos. Os datos que chegan periodicamente, varios enderezos e os intentos de conexión poden alongar o tempo transcorrido. Requests non fornece un tempo de espera xeral se omites o axuste. Escolle límites axeitados á resposta e engade un prazo na aplicación se o traballo require un orzamento total estrito.
Xestiona o fallo na etapa onde se produce
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 rexeitado pode provocar ProxyError antes de existir resposta do destino. A rama HTTPError segue unha resposta recibida con estado de erro; Timeout significa que venceu un límite configurado. Examina localmente as cadeas de excepcións da conexión e retira puntos con credenciais e URL privados antes de compartilas.
Mantén activa a verificación de certificados. Se a rede autorizada usa unha CA privada ou unha interceptación xestionada, fornece o material de confianza previsto en vez de desactivar a verificación.
As entradas explícitas por petición controlan as rutas fornecidas aquí, pero os esquemas omitidos aínda poden verse afectados pola detección de proxys do contorno. Ao mover a chamada a unha Session reutilizable, decide como deben interactuar as variables de contorno, os valores por defecto de Session e as substitucións por petición; reutilización de conexión e política de encamiñamento son eleccións separadas.