使您的发展更好。 使用代理。

在本文中,我想描述如何使用Charles桌面应用程序设置代理。 我相信你们中的许多人都使用API​​或使用一些REST服务。 如果您还没有听说过代理,我相信这篇文章中的知识将对您的未来发展有用。 以下示例涉及iOS环境以及在macOS系统上进行配置。

什么是代理?

为了告诉您什么是代理服务器,我使用在Charles文档中找到的定义

HTTP代理是一种服务器,它从您的Web浏览器接收请求,然后代表您向Internet发送请求。 然后将结果返回到您的浏览器。

因此,Charles应用程序是一种监视器,用于检查您的网络流量,代表您执行所有请求并将响应返回给您。

我真的需要吗?

是! 当您创建使用某些API的应用程序时,它可能会对您有所帮助。 您将可以查看服务器的请求和响应。 此外,Charles应用程序允许您为端点设置断点,并允许您编辑请求或响应正文,因此您可以为应用程序测试各种方案。 同样,您可以看到您的应用程序确实有多少请求。

如何配置Charles?

首先,转到Charles网站并下载安装文件。 安装过程完成后,您将看到应用程序的主屏幕。 开始时,我建议选择顶部的“ Sequence选项卡。

一段时间后,您应该会在Mac上看到所有您执行的请求。 现在,我们有两种方法来配置Charles。 第一种方法是为iOS Simulator配置它。 第二个选项是为iOS设备配置Charles。

iOS Simluator配置

单击帮助-> SSL代理->在iOS Simualator中安装Charles Root证书。

您将看到提示:

然后单击确定,并确保您应该重新启动模拟器。 完成上述步骤后,Charles便已配置好并可以与您的模拟器一起使用。

iOS设备配置

在设备的Wi-Fi连接设置中,选择与Mac使用的连接,然后点击。 然后向下滑动,然后选择“代理设置为手动”。

在IP字段中,请输入您Mac Wi-Fi使用的相同IP地址。 在port字段中,输入8888

要在Mac上查看Wi-Fi的IP地址,请执行以下操作:

在Mac上的wifi图标上用选项按钮右键单击

然后在您的iOS设备上访问http://www.charlesproxy.com/getssl/并安装证书。 我建议通过Safari进行操作,因为它会将您从URL重定向到iOS设备上的“证书设置”。 然后只需安装证书。

安装过程完成后,您将能够在Mac上的Charles应用程序中查看来自iOS设备的所有请求。

好的,所有配置都可以,但是如何使用呢?

配置流程完成后,您将看到Charles主窗口以及您的网络数据。 出于这篇文章的目的,我编写了一个简单的应用程序,该应用程序使用了免费的rest API https://www.freegeoip.net/ 。 该API为我们提供了有关任何域的一些地理信息。 例如:
https://www.freegeoip.net/json/github.com返回有关github.com网站的地理信息。

现在,让我们从iOS Simulator / iPhone调用https://www.freegeoip.net/json/twitter.com 。 在Charles主窗口中,我们也可以看到已发出请求,并收到了回复。 没有有关请求参数,响应代码等的信息。

让我们来看看。

概述标签

在“ Overview选项卡中,我们可以看到有关用于此调用的协议SSL的信息,您也可以看到请求时间以及请求和响应的大小。

好吧,让我们看一下请求和响应

不幸的是,对于查尔斯来说,两者都不可读。 这是因为请求是安全的,并且使用https 。 因此,我们需要通知Charles该域正在使用SSL来查看请求的详细信息。

添加代理SSL

有两种方法可以做到这一点。

首先,您可以单击Proxy settings ,然后单击将附加主机Add到列表中。 在Host字段中,输入服务器的主机地址。 在我的示例中,将是www.freegeoip.net

在端口字段中输入443 。 为什么是443 ? 因为443是HTTPS连接使用的默认端口。

确保已选中“ Enable Proxy SSL复选框。 添加主机后,它应如下所示:

第二种方法要简单得多,只需右键单击请求并选择Enable SSL Proxying

使用SSL代理请求

在为我们的主机服务器添加SSL代理后,再次执行请求。

如您现在所见,我们可以看到请求的RC (响应代码)。 这是200(确定)。 我们也知道我们的请求是GET类型。 让我们看一下请求和响应主体。

在请求正文中,我们具有有关请求类型,语言和编码的一些信息。 另外,您可以在此处找到有关Cookies的一些信息。

查尔斯可以读取响应正文。 选择JSON text标签后,我们可以看到格式化的JSON字符串。 有关响应的所有信息都存储在RAW选项卡中。 您可以在此处找到有关响应代码,内容类型,服务器,编码等的信息。

现在最重要的是-响应主体:

调试

Charles的妙处在于,该应用程序允许您以与XCode和其他许多IDE断点相同的方式调试请求/响应。 但是在这里,您将断点放在请求上,而不是在代码行上。

要设置断点,只需右键单击要调试的请求的行,然后选择“ Breakpoints选项。

现在,再次发出请求,您将看到Breakpoint-Window。

使用OverviewEdit Request选项卡。 在这里,您可以编辑请求正文,查询字符串参数,请求方法,cookie,标头,甚至可以选择HTTP版本。 编辑请求后,只需单击底部的Execute

当Charles收到响应后执行后,我们应该再次看到Breakpoint-Window,现在我们可以编辑响应了!

通过编辑响应,我的意思是您可以编辑响应标题和响应正文。 您还可以检查请求的正文和概述。 编辑响应后,只需单击执行按钮。 完成该步骤后,编辑后的响应将发送到我们的设备/模拟器。

注意:请记住,在不再需要断点时将其关闭,因为如果不这样做,则断点将在每次触发请求时运行。

结论

Charles应用程序是一个很棒的工具,具有许多功能。 在我的文章中,我重点介绍了iOS环境,但您也可以为Android Emulator或Android设备配置代理。 我描述了我使用Charles应用程序时最常用的用法。 综上所述,如果您使用某些Web服务器,则该应用程序应该放在开发工具目录中。

这篇文章与我的个人 博客 交叉发布了