Escolher um proxy do Requests para um único site
Atribua a um nome de host de destino um proxy diferente no Requests e entenda os limites de correspondência e a ordem de fallback.
Um site precisa de um proxy diferente do resto das suas requisições HTTPS. O Requests pode expressar essa escolha no próprio dicionário de proxies:
routes = {
"https://reports.example": "http://reports-proxy.example:8080",
"https": "http://default-proxy.example:8080",
}
response = requests.get(
"https://reports.example/monthly",
proxies=routes,
timeout=(5, 20),
)
response.raise_for_status()
Para esse destino, vence a chave específica do nome de host. Outro nome de host HTTPS usa a entrada válida para todo o esquema. Os valores descrevem a conexão do proxy, então um destino HTTPS pode ser mapeado corretamente para um URL de proxy HTTP. Quando essas são rotas permitidas de sites públicos sem contas de proxy, a lista de proxies HTTP pode fornecer candidatos para esses valores; mantenha cada regra de destino explícita.
Combine um nome de host, não um URL de recurso
No Requests 2.32.5, a chave específica é montada a partir do esquema do destino e do nome de host analisado. Ela não contém o caminho, a consulta nem a porta.
Adicionar /monthly à chave do dicionário não restringirá a regra a esse caminho. Da mesma forma, https://reports.example:8443 não é uma chave específica de porta que este seletor reconheça. A regra do nome de host também se aplica quando o URL de destino usa outra porta.
Não há expansão de curingas nesta busca. Uma regra para reports.example não cobre automaticamente um subdomínio. Use uma decisão de roteamento explícita fora deste dicionário simples quando a política exigir correspondência de caminho, porta ou sufixo.
Saiba qual fallback vem depois
A implementação verifica as chaves nesta ordem: scheme://hostname, scheme, all://hostname e depois all. Portanto, uma entrada HTTPS válida para todo o esquema tem precedência sobre uma entrada de nome de host para todos os esquemas. Coloque uma regra de nome de host específica do esquema primeiro no seu projeto quando essa for a exceção desejada.
Considere também como a sua Session mescla padrões e configurações derivadas do ambiente. Passar essas duas entradas explícitas com a requisição deixa suas rotas pretendidas claras, mas não define uma política para qualquer outro esquema de destino.
Um redirecionamento pode introduzir outro nome de host, e a escolha do proxy também é relevante para esse novo destino. Leia a regra como uma decisão sobre cada URL solicitado, não como uma rota permanente ligada à primeira página.