Um proxy que rejeita CONNECT pode retornar um documento de erro HTTP explicando sua política ou a falha da conexão seguinte. Para um diagnóstico autorizado contra um proxy HTTP comum, o curl pode enviar essa solicitação diretamente e salvar a resposta:

curl --proxy '' --http1.1 --max-time 10 \
  --request CONNECT \
  --request-target service.example:443 \
  --header 'Host: service.example:443' \
  --dump-header tunnel.headers \
  --output tunnel.body \
  http://proxy.example:8080/

A URL final endereça o ouvinte do proxy. Para uma comparação permitida de proxies públicos, a lista de proxies HTTP oferece candidatos para essa URL de ouvinte. --request fornece o token do método; --request-target fornece a autoridade CONNECT. Mantê-los separados produz CONNECT service.example:443 HTTP/1.1.

A opção de proxy vazia impede que o curl encaminhe este diagnóstico por outro proxy herdado. O comando omite deliberadamente --fail para que um documento de erro HTTP possa ser preservado.

Uma tentativa sem autenticação pode parar em 407 antes de chegar à falha investigada. Use a disposição de autenticação prevista pelo proxy ao reproduzir uma solicitação autenticada.

Isto serve para inspecionar respostas de falha. Se o proxy retornar 2xx, a conexão torna-se um túnel em vez de uma transferência comum de corpo HTTP. Este diagnóstico de método personalizado não inicia a troca TLS do destino e pode atingir seu limite de tempo em um túnel aberto aceito.

Use o fluxo normal de solicitações --proxy para uma obtenção HTTPS real. Guarde o status e o corpo do diagnóstico junto com seu proxy e alvo específicos.

Artigos relacionados