Charles Proxy入门

我从事iOS开发(专业)已有6年以上。 我为他人编写的每个iOS应用程序中都有一个常量。 它们都与Web服务进行通信以从iOS应用程序/客户端读取和写入数据。 甚至我个人的个人项目应用程序也从设备上完全隔离的状态转变为与Web服务的通信。

如果您在与Web服务进行通信的任何类型的移动客户端上工作,则应学习如何使用Charles Proxy。 我使用此工具已有多年,发现它绝对不可或缺。

这篇文章将为在一个简单的iOS项目中使用Charles提供入门。 我写了一个非常简单的项目,将从Unsplash加载“策展的图像”。 您可以从GitHub获取源代码。

这篇文章中的所有设置都是针对iOS模拟器的。 但是,设置Charles与其他设备(tvOS或真实的iOS / tvOS设备)对话非常容易。 我已经编写了单独的指南来设置Apple TV设备的Charles Proxy,您可以在这里找到它:在Apple TV(tvOS)上设置Charles Proxy。

请注意:我在此处概述说明的方法并不是唯一的处理方法。 随意自行探索应用程序。

另外请注意:我已收录了简短的YouTube视频,其中显示了以下说明的步骤。 一些说明可能会很复杂,YouTube视频应该会有所帮助。

Charles代理详细信息

在开始之前,这里是有关Charles Proxy的一些详细信息。 直接从开发者的网站上:

Charles是HTTP代理/ HTTP监视器/反向代理,使开发人员可以查看其计算机与Internet之间的所有HTTP和SSL / HTTPS通信。 这包括请求,响应和HTTP标头(其中包含cookie和缓存信息)。

网站:http://www.charlesproxy.com

费用:50美元

免费试用? 是的,持续30天

Charles Proxy概述

Charles Proxy是一个HTTP代理/监视应用程序。 它允许您监视来自各种来源的Web流量,包括macOS / iOS / tvOS设备和iOS / tvOS模拟器。 这意味着您不必编写这样的临时代码:

print("JSON Response: \(JSON)")

要么

NSLog(@"JSON Response: %@", JSON)

相反,您将能够设置设备/模拟器以使用Charles Proxy并查看入站/出站HTTP(S)流量,而无需进行任何代码更改。

设置查尔斯

多年来,配置Charles来监视iOS模拟器流量的步骤变得非常容易。 请按照以下步骤开始:

  1. 启动Charles Proxy
  2. 确保已至少运行一次目标iOS模拟器。
  3. 退出iOS模拟器
  4. 打开Charles并导航至帮助-> SSL代理->在iOS模拟器中安装Charles Root证书

为了弄清混乱,您需要为域启用SSL代理。 请按照以下步骤为Unsplash API域启用SSL代理:

  1. 打开Charles并导航到Proxy-> SSL Proxying Settings
  2. 单击SSL代理选项卡。
  3. 确保启用了启用SSL代理
  4. 单击底部的添加按钮。
  5. 主机字段中输入api.unsplash.com ,然后单击确定。

如果您想知道如何为其他设备安装SSL证书,则Charles网站上有有关如何执行此操作的说明。

您可以按原样使用Charles,也可以自定义内容。 我不喜欢记录所有网络流量,因此我限制了Charles代表我记录的内容。 为此,请按照下列步骤操作:

  1. 打开Charles并导航到Proxy-> Recording Settings
  2. 单击包括选项选项卡。
  3. 单击底部的添加按钮。
  4. http://api.unsplash.com/*粘贴到“ 主机”字段中,然后按键盘上的Tab键。 所有字段都将在此处填充。
  5. 单击确定。

如果查看响应概述,您会注意到Charles包含了有关响应的注释:

Mapped from remote URL: https://api.unsplash.com/photos/curated/?…

此说明很重要,这样您就可以知道消息的内容。 在下一节中的调试中也有帮助。

改写流量

映射流量可能是一个非常强大的工具。 但是查尔斯可以做的更多。 您还可以重写来自API的响应。 你为什么想做这个? 我可以想到两个非常具体的示例:

首先,当您想在每个调用中返回已知响应时,此功能很有用。 这对于使用空结果集进行测试或使用时髦响应进行测试可能很有用。 无论哪种方式,您都可以随时重写响应,以使其完全包含您要查找的数据。

其次,您可以处理在错误处理方面做得不好的API。 我使用了一些API,这些API会针对错误返回200 OK响应,但包含会包含错误消息的JSON或XML。 我知道,我们都会犯错。 像http://httpstat.us这样的服务无法处理此问题。 重写流量将使您能够处理所需的任何情况。

改写

我在GitHub存储库的Charles Rules文件夹中包含了一些重写规则示例。 您可以使用以下步骤导入它们。

  1. 打开Charles并导航到工具->重写…
  2. 单击启用重写复选框以启用它。
  3. 单击底部的导入按钮。
  4. 导航到Charles Rules / 422RewriteError.xml文件,然后单击“打开”。

创建这些重写规则时,在使用响应之前确保响应是有效的XML或JSON是很有价值的。 在Charles重写模式视图中编辑部分响应可能很痛苦。 通常, 粘贴JSON 之前 ,我将先验证JSON是否有效。 过去,我花了很多时间尝试调试规则,只是发现响应JSON无效。

结论

我希望这篇入门入门对于将Charles Proxy作为开发工具入门很有用。 Charles Proxy还有许多我还没有涉及的功能。

作为客户开发人员,Charles Proxy对我而言非常宝贵。 本文涉及的功能太多。 实际上,我仍在发现新功能,希望将来使用。

随着我不断成长和学习更多,如果有足够的兴趣,我可能会在后续文章中介绍新主题。

最初于 2017 年3月17日 发布在 ryan.grier.co