使用 Charles 调试 HTTP 调用

Posted

技术标签:

【中文标题】使用 Charles 调试 HTTP 调用【英文标题】:Debugging HTTP calls with Charles 【发布时间】:2015-05-21 16:45:01 【问题描述】:

我有一个在 Mac OS X 上运行的 ASP.NET 应用程序。这个应用程序有一个 Web 服务。我调用 Web 服务,然后它调用第三方 Web 服务。我可以在 Charles 中成功地看到我的 Web 服务正在被调用。但是,我看不到对第三方 Web 服务的调用。为什么会发生这种情况?查尔斯会忽略这样的嵌套调用吗?我真的需要调试服务调用。但是,我看不到发送到 Charles 服务的请求。

如何查看 Charles 中调用第三方服务的详细信息?

【问题讨论】:

当然,Charles 可以可视化单独的请求。对于网络嗅探器,这种“嵌套”调用根本没有连接,它们是单独的请求。但是,您必须确保两个请求的流量实际上都是通过 Charles 运行的,否则它肯定无法可视化这两个请求。这通常意味着嗅探器必须观察运行 Web 服务的服务器上的网络,并且必须观察用于这两个请求的所有网络接口。如果有疑问,请改用wireshark 【参考方案1】:

您需要配置您的 ASP.NET 应用程序以使用 Charles 作为其代理。

当您调用 Web 服务时,您的客户端(浏览器?)使用 Charles 作为其代理,因此您会看到请求。然后,您的 ASP.NET 应用程序发出一个新的网络请求,但没有使用 Charles 作为其代理,因此您看不到它。

在 Mac OS X 上,通常所有应用程序都使用系统代理设置,在系统偏好设置 > 网络中设置。如果在 Charles 的 Proxy 菜单中勾选 Mac OS X Proxy,Charles 会自动将它们设置为使用 Charles。鉴于您的客户使用了 Charles,我想这对您来说是正确的。

所以也许 ASP.NET 应用程序不使用系统代理设置。在这种情况下,您需要检查如何在 ASP.NET 应用程序中设置代理。抱歉,我不知道该怎么做!

【讨论】:

以上是关于使用 Charles 调试 HTTP 调用的主要内容,如果未能解决你的问题,请参考以下文章

APP端调试抓包工具Charles和HTTP Catcher的使用

http调试工具Charles Proxy用法详解

使用 Charles 调试对具有异常端口号的端点的 HTTP 请求,该端点需要代理才能访问

使用 Charles Proxy Socks 功能调试 iPhone 流量?

Charles使用总结

charles抓包如何修改请求头