Linux에서 HTTP 본문을 즉시 디코딩합니까?

Linux에서 HTTP 본문을 즉시 디코딩합니까?

내 소망은 내 서버와 브라우저 간의 HTTP 교환을 모니터링하는 것입니다. 현재 앱을 개발 중이기 때문에 localhost를 사용하고 있습니다. 설치해서 사용했어요TCP흐름매우 유용하다는 것을 알았지만 응답 본문은 암호화되어 있습니다(https가 아닙니다. 헤더를 참조하면 gzip으로 압축되어 있다고 믿습니다). 다음은 교환 내용입니다 tcpflow -i lo -c -e.

127.000.000.001.59549-127.000.000.001.00080: GET /dom/test.html HTTP/1.1
Host: localhost
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36
Referer: http://localhost/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4


127.000.000.001.00080-127.000.000.001.59549: HTTP/1.1 200 OK
Date: Mon, 05 Oct 2015 03:44:53 GMT
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Mon, 05 Oct 2015 03:06:42 GMT
ETag: "36031e-8e-52152cd86200d"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 118
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html

...........Qt.w....qU.(......Q..)v\

6..%.
...E..%.J.%i..J.`.....T;....|......E.}....>D.MR~J%Xq.!.J..P.D....
.r..0....

그리고 여기에는HTML암호:

<!DOCSTYLE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Hello World!</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

내가 보고 싶은 것응답오히려 :

...
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 118
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html

<!DOCSTYLE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>Hello World!</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

나는 헤더 항목을 추측 Vary: Accept-Encoding하고 Content-Encoding: gzip이것이 내 문제의 원인이라고 생각합니다. 이런 혼란을 없애고 다음을 볼 수 있는 방법이 없을까요?HTML코드가 명확합니까? 내 말은, 좀 쉬운 방법을 말하는 거지? 실제로 나는 Accept-Encoding: gzip,deflate,sdch.그러나 디버그 목적으로 브라우저에서 인코딩/압축을 요청하지 않도록 설정하는 것이 유일한 방법이라면 그대로 사용할 수 있습니다.

당신의 도움을 주셔서 감사합니다!

답변1

로 인코딩된 콘텐츠는 를 Content-Encoding: gzip통해 콘텐츠를 파이핑하여 쉽게 압축을 풀 수 있습니다 gzip -d. 수축의 경우 유틸리티는 모르지만 일부 zlib 프로그래밍으로 수행할 수 있습니다. SDCH는 압축을 풀려면 압축에 사용되는 사전에 액세스해야 하기 때문에 그다지 쉽지 않습니다. 사전은 패킷 캡처의 다른 곳에 있거나 어디에도 없을 수 있습니다.

Gzip과 deflate 역시 Wireshark에 의해 투명하게 처리되어야 하므로 그곳에서 디코딩된 헤더를 볼 수 있습니다. 함께 제공되는 httpflow 도구넷::검사Perl 패키지는 또한 gzip을 디코딩하고 페이로드를 축소할 수 있으며 pcap 파일에서 HTTP 요청/응답 쌍을 추출하고 이러한 각 쌍을 이미 디코딩된 페이로드가 있는 단일 pcap 파일로 저장하는 데에도 사용할 수 있습니다.

관련 정보