为什么我的调试代理会报告带有垃圾内容的 Google 响应

Ala*_*orm 2 google-chrome http http2 charles-proxy

我正在使用Charles来调试通过网络上的移动设备发出的 HTTP 响应(即 iPhone 中没有查看源代码)。我注意到,当我向 google.com 发出请求时,Charles 会报告一堆看似垃圾的内容作为响应内容。

在此输入图像描述

我不是在请求 charler 支持(或者,不是在这里请求 - 我已经向代理作者发送了支持票)。我想知道谷歌到底在做什么。我不认为这是 gzip 编码(至少标头没有表明它是),但我不知道这是否是 Google 所做的某种特殊的非标准优化,或者它是否是 HTTP 的一部分/2 我不熟悉。

那么,作为一名在 90 年代末学习 HTTP 的程序员,谷歌现在到底通过网络发送什么和/或理解现代 HTTP/2 的第一步是什么?

Joe*_*ant 5

这是因为请求是通过 SSL 发出的。您正在看到加密的流量。您需要告诉 CharlesProxy 代理 Google 的请求,方法是转到“代理”->“SSL 代理设置”并将主机名添加到“SSL 代理”选项卡下的位置列表中。这将允许 Charles 在将流量转发给 Google 之前对您进行中间人攻击并解密流量。

至少在 MacOS 上,您可能还需要信任 Charles 根证书。请参阅https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/