curl로 실패한 proxy CONNECT 응답 본문 검사하기
올바르게 구성한 진단용 CONNECT를 HTTP 프록시에 직접 보내고 HTTP 실패 헤더와 본문을 따로 저장합니다.
CONNECT를 거부하는 프록시는 자체 정책이나 이후 연결 실패를 설명하는 HTTP 오류 문서를 반환할 수 있습니다. 일반 HTTP 프록시에 대한 승인된 진단에서는 curl이 해당 요청을 직접 보내고 응답을 저장할 수 있습니다:
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/
마지막 URL은 프록시 리스너를 가리킵니다. 허용된 공용 프록시 비교를 위해 HTTP 프록시 목록이 해당 리스너 URL의 후보를 제공합니다. --request는 메서드 토큰을, --request-target은 CONNECT 권한을 제공합니다. 둘을 분리하면 CONNECT service.example:443 HTTP/1.1이 생성됩니다.
비어 있는 proxy 옵션은 curl이 이 진단을 다른 상속된 프록시를 통해 보내지 않도록 합니다. 이 명령은 HTTP 오류 문서를 보존할 수 있도록 의도적으로 --fail을 생략합니다.
인증하지 않은 시도는 조사 중인 실패에 도달하기 전에 407에서 멈출 수 있습니다. 인증된 요청을 재현할 때는 프록시가 의도한 인증 방식을 사용하세요.
이것은 실패 응답을 검사하기 위한 것입니다. 프록시가 2xx를 반환하면 연결은 일반 HTTP 본문 전송이 아니라 터널이 됩니다. 이 사용자 지정 메서드 진단은 대상의 TLS 교환을 시작하지 않으며 수락된 열린 터널에서 시간 제한에 도달할 수 있습니다.
실제 HTTPS 가져오기에는 일반 --proxy 요청 흐름을 사용하세요. 진단 상태와 본문은 해당 프록시 및 대상과 함께 보관하세요.