Teste um proxy HTTP com curl
Use um teste do curl com limites de tempo para verificar conexão ao proxy, túnel HTTPS, status de resposta e regras de exceção sem alterar o proxy global do dispositivo.
Substitua 127.0.0.1:8080 por um endpoint do seu serviço ou da lista de proxies HTTP e execute o comando contra um destino HTTPS inofensivo:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/O endereço de loopback indica um listener na sua própria máquina. O comando o seleciona explicitamente, limpa a lista de exceções do curl para essa chamada e permite cinco segundos para estabelecer a conexão e quinze segundos no total. Ele não altera as configurações de proxy do navegador nem do sistema.
Use o executável real do curl se o seu shell definir curl como alias de outro programa; curl --version identifica a compilação. Se o próprio listener exigir TLS, use o esquema de URL de proxy informado na documentação dele.
Leia quatro resultados, não apenas um sinal de sucesso
- Conectado ao proxy escolhido: o endereço e a porta estão acessíveis.
- CONNECT aceito: o proxy abriu um túnel para o destino HTTPS.
- Certificado do destino verificado: o TLS foi concluído com as verificações de confiança esperadas.
- Resposta do destino recebida: confira o status e o conteúdo para saber se o resultado atende ao que a aplicação precisa.
Um túnel funcionando pode ser seguido por um 403 ou 429 do destino. O curl também pode encerrar com sucesso depois de receber uma resposta de erro HTTP; por isso, registre tanto o status da resposta quanto o resultado de erro do curl. Uma conexão TCP ou um CONNECT bem-sucedido, isoladamente, não basta.
Um resultado compacto para comparar testes repetidos
Em um shell de sistemas do tipo Unix, descarte o corpo e imprima o status do túnel, o status do destino, a outra ponta da conexão e o tempo decorrido:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect descreve a resposta do túnel; http_code descreve a resposta HTTP final. remote_ip é a outra ponta da conexão do curl, não uma medição independente do endereço de saída do proxy. Em outros sistemas, substitua /dev/null ou mantenha o corpo da resposta.
Se o teste falhar, localize a etapa de conexão ou transferência que falhou e compare o mesmo destino por acesso direto, onde essa rota for permitida:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' ignora os proxies. Falhas de verificação de certificado nas duas rotas apontam para um problema de confiança em comum; um acesso direto bem-sucedido com CONNECT rejeitado aponta para autenticação ou política do proxy. Revise a saída detalhada antes de compartilhá-la, pois ela pode conter informações de identificação.
Salve o endpoint, o destino e o horário junto com o resultado. Isso registra o que funcionou naquela requisição; disponibilidade futura, privacidade e desempenho sob carga exigem evidências próprias.