Pasa unha correspondencia baleira a ProxyHandler cando un só opener de urllib deba conectarse directamente:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

with direct.open("https://example.com/", timeout=10) as response:
    print(response.status)

O dicionario baleiro non fornece rutas de proxy. Se omites a correspondencia, o xestor descobre os proxies a partir do contorno e dos axustes da plataforma. Estas dúas construcións expresan políticas diferentes.

O exemplo usa a biblioteca estándar de Python e mantén a verificación HTTPS normal. O bloque with pecha a resposta, mesmo cando unha excepción provoca a saída do bloque.

Peticións directas e mediante proxy na mesma aplicación

Dous openers poden representar as dúas políticas sen cambiar variables de contorno entre chamadas:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}))

with proxied.open("https://example.com/", timeout=10) as response:
    print(response.status)

Substitúe o enderezo de bucle local polo teu proxy HTTP ou escolle un candidato da lista de proxys HTTP para a comparación mediante proxy. Pode transportar a conexión ao destino HTTPS mediante CONNECT cando o servizo o permita. O protocolo e a autenticación admitidos polo punto de escoita deben ser compatibles co xestor.

Non cambies o opener predeterminado

Chama a direct.open ou proxied.open mediante o obxecto responsable da ruta. install_opener cambia o valor predeterminado de todo o proceso que usan as funcións de conveniencia de urllib; unha biblioteca que o use pode afectar código alleo. Non é necesario para o opener illado anterior.

O argumento timeout é un axuste de operación, non un límite de tempo real para a totalidade de cada transferencia. Le só os datos necesarios e usa un prazo de nivel superior se a tarefa ten un orzamento total estrito.

Estes obxectos opener non modifican o cliente doutra biblioteca, un proceso existente nin a configuración de proxy dun navegador.

Artigos relacionados