Inspecter le corps d'une réponse CONNECT proxy en échec avec curl
Envoyez un CONNECT de diagnostic correctement formé directement à un proxy HTTP et enregistrez séparément les en-têtes et le corps de l'échec HTTP.
Un proxy qui refuse CONNECT peut renvoyer un document d'erreur HTTP expliquant sa politique ou l'échec de la connexion suivante. Pour un diagnostic autorisé contre un proxy HTTP ordinaire, curl peut envoyer cette requête directement et enregistrer la réponse :
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/
L'URL finale adresse l'écouteur du proxy. Pour une comparaison autorisée de proxys publics, la liste de proxies HTTP fournit des candidats pour cette URL d'écouteur. --request fournit le jeton de méthode ; --request-target fournit l'autorité CONNECT. Les garder séparés produit CONNECT service.example:443 HTTP/1.1.
L'option de proxy vide empêche curl d'acheminer ce diagnostic par un autre proxy hérité. La commande omet délibérément --fail afin qu'un document d'erreur HTTP puisse être conservé.
Une tentative non authentifiée peut s'arrêter à 407 avant d'atteindre l'échec étudié. Utilisez la disposition d'authentification prévue par le proxy lorsque vous reproduisez une requête authentifiée.
Ceci sert à inspecter les réponses d'échec. Si le proxy renvoie 2xx, la connexion devient un tunnel plutôt qu'un transfert de corps HTTP ordinaire. Ce diagnostic à méthode personnalisée ne lance pas l'échange TLS de la destination et peut atteindre sa limite de temps sur un tunnel ouvert accepté.
Utilisez le flux de requête --proxy normal pour une récupération HTTPS réelle. Conservez le statut et le corps du diagnostic avec leur proxy et leur cible spécifiques.