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.

Artigos relacionados