维基百科告诉我们:
Charles是用Java编写的跨平台HTTP调试代理应用程序。它允许用户查看从本地计算机访问,通过本地计算机或通过本地计算机访问的HTTP,HTTPS和TCP端口激活的流量。这包括请求和响应,包括HTTP标头和元数据(例如cookie,缓存和编码信息),其功能旨在帮助开发人员和测试人员分析连接并交换消息。
少许解释
嗅探是使用嗅探工具(查尔斯代理)监视和拦截通过网络的所有数据包的过程。
第一步
1.安装和启动
首先,您需要下载并安装该应用程序。
如果您还没有购买许可证,则可以使用具有限制的30天试用版(功能没有被阻止,但是窗口将以5-10秒的超时显示,然后继续使用,并且该应用程序将在30分钟后终止)。
2.我们开始嗅探流量
启动Charles Proxy,转到菜单帮助→ SSL代理→安装Charles Root证书(请参阅1)→安装证书→导入证书。
现在您可以看到请求,但是请求已加密,除了象形文字之外,什么都看不到。要以正常形式查看请求/响应,您需要启用SSL代理并配置要拦截其数据包的域。我们希望收到所有站点的请求。为此,请转到代理→ SSL代理设置。
在打开的对话框中,勾选启用SSL代理的复选框,选择Enclude部分,然后点击添加。
接下来,在Host字段中填写*(如屏幕截图所示),然后单击OK。
在“ SSL代理设置”对话框中,单击“确定”。
现在,您可以查看发送到服务器的请求和服务器响应。
3.代理Web浏览器流量
重新启动Charles时,只需激活Windows代理(如果有Windows)或Mac代理。
4.在Android上配置代理
要显示Android应用程序请求,您必须具有清单中设置了权限的相应Android应用程序程序集。假设我们有一个这样的应用程序,我们想开始从中获取流量。
为此,我们找出PC的IP地址:在Charles Proxy中,转到帮助→本地IP地址。我们看到您的IP :
192.168.1.50
。
接下来,拿起电话,打开网络属性→WiFi网络名称→代理服务器→手册→主机名:*您的IP * /端口:* 8888 * →保存更改后的网络属性。
现在,您需要单击链接chls.pro/ssl或charlesproxy.com/getssl,然后将开始自动下载证书。打开它,为证书设置一个名称,现在您可以访问Android应用程序的流量了。
5.在iOS上配置代理
手持iPhone,打开“网络属性”→“ WiFi网络名称”→“代理服务器”→“手册”→“主机名”:*我们的IP * /端口:* 8888 * →保存更改后的网络属性。
现在,您需要点击链接chls.pro/ssl或charlesproxy.com/getssl,“允许”加载配置文件。接下来,转到设置→加载配置文件→安装。然后转到设置→常规→关于此设备→信任证书→查找已安装的证书并将其设置为“受信任”。
Charles Proxy功能
1.数据替代
假设我们需要在客户端上测试布局。您需要检查如何显示大量的用户奖金。许多人提供的选择之一:更改数据库中的奖金数量并检查客户端。是的,你会是对的!但是,服务器可能具有缓存,您需要等待一段时间才能更新赠金数量,或者仅连接到数据库本身并执行请求-这需要一定的时间。有一个更简单的选项:更改服务器的响应!Charles Proxy具有三种欺骗数据的方式:
1.1断点
断点是请求的一种断点。找到指定列表中的请求后,将打开一个单独的窗口,用于与请求参数的进一步手动交互。在其中,转到手动更改请求和响应。在测试API或不同的服务器响应时,使用此功能很方便。
我们有一个应用程序和一个用户个人资料,他们的帐户当前有0个奖励:
此数量的奖金出现在请求中:
https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8
要在请求上“挂起”断点,请转到“代理” →“断点设置”部分。接下来,选中Enable Breakpoints → Add复选框,然后在打开的“ Edit Breakpoint”对话框中,粘贴请求URL,如屏幕截图所示:
例如,选中“ Request”和“ Response”框。然后单击确定,并确定再次在断点设置窗口。现在再次运行该请求,即客户端将重新打开带有用户配置文件的屏幕。
在Charles Proxy中,我们可以看到请求已暂停:
您可以在此处更改查询参数。但是现在您不需要这样做,请单击“执行”。接下来,我们暂停服务器已经收到的响应。这是我们需要编辑“响应”的地方。找到所需的参数-
bonus_cnt»: 45
。
然后,将参数的值更改
bonus_cnt
为1,000,000 Bonus,然后单击“ Execute”。
客户显示新的奖金金额。我们有很多钱!
1.2改写
重写是一种工具,可让您创建规则,以在请求和响应通过Charles Proxy时对其进行修改。例如,您可以添加和更改标题,在响应或请求的正文中搜索和替换文本等。
让我们尝试使用重写来更改用户的奖励金额。为此,请打开工具→重写→选中“启用重写”框→添加。在名称字段中,您可以输入任何替换名称,例如“更改奖励”,或保留默认的“无标题集”。
下一步是将请求路径添加到“位置”。为此,在位置→添加下填写以下字段并保存:
主机:
https://api.youla.io
路径:
/api/v1/user/5e6222bbbedcc5975d2375f8
添加请求路径后,需要更改参数本身及其值。为此,您需要创建一个重写规则:
类型:正文(因为参数在正文中);
其中:响应(因为该参数位于服务器的响应中);
匹配部分:在“值”中指定服务器返回的值和参数;
替换部分:在“值”中,指定要在客户端上看到的值和参数。
接下来,保存“重写规则”,然后在“重写设置”选项卡上单击“确定”。在客户端上,再次重新请求用户配置文件。您已自动更改了用户奖励数量。我们又有钱了!
1.3本地地图
Map Local是一种工具,可让您像使用服务器一样使用本地文件。
转到工具→本地地图。
接下来,在“映射本地设置”窗口中,单击添加→主机:
https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8
→本地路径:计算机上文件的路径。您可以使用现成的媒体文件,HTML,CSS,JSON,XML。当然,它更适合开发人员,以便不将数据上传到服务器进行后续测试,但是测试人员也可以找到合适的应用程序。我们已经预先准备好我们需要的答案并将其保存到change_bonus.json文件中:
将输入的值保存在``编辑映射''选项卡和``地图本地设置''选项卡中。
在客户端上,再次重新请求用户配置文件。您已自动更改了用户奖励数量。我们又有钱了!
让我们看看Charles Proxy工具的其他功能。让我们从头开始,使用“代理”标签。
2.1油门设置
油门设置是一项功能,可让您设置所选域的连接速度的不同参数。
对于那些喜欢在电梯,地铁,地下通道中进行测试的人来说,该功能非常有用。让我们转到“代理” →“节流设置” →“启用节流”复选框。如果您不了解上述所有要点,则可以使用“油门”预设并为测试选择适当的速度,系统将自动填写其余字段。
如果选择“仅适用于选定的主机”,则可以设置要对其应用设置的特定主机。在这里,您可以使用现成的预设以及各种类型(4G,3G等)的设置。您还可以设置各种参数,我将简要列出其中一些:
带宽是随时间推移可以传输的最大数据量。
利用率是在任何给定时间可以提供给用户的总带宽的一部分。
延迟-客户端和远程服务器之间触发请求的延迟(以毫秒为单位)。
MTU是当前预设的最大传输单位。
可靠性-一种衡量连接失败可能性的度量。用于模拟不可靠的网络状况。
稳定性是衡量连接不稳定并因此降低质量的可能性的度量。对于模拟通信质量周期性下降的网络(例如移动网络)很有用。
2.2反向代理
反向代理是反向代理服务器。通常用于从Internet接收请求并将它们重定向到Web服务器之一。
2.3端口转发
端口转发(有时称为端口转发或隧道)是将寻址到特定网络端口的流量从一个网络节点转发到另一网络节点的过程。此方法允许外部用户访问本地网络中的端口。
2.4 MacOS代理/ Windows代理
MacOS代理或Windows代理(取决于您的操作系统)-代理来自Web浏览器的流量。
处理了“代理”部分后,让我们继续进行“工具”部分。
3.1不缓存
No Caching 工具通过操纵控制响应缓存的HTTP标头来防止缓存。标头
If-Modified-Since
和If-None-Match
从请求中删除,Pragma: no-cache
并添加Cache-control: no-cache
。头Expires
,Last-Modified
并ETag
从答案中删除并添加Expires: 0
和Cache-Control: no-cache
。
3.2块饼干
阻止Cookie -Cookie标头已从请求中删除,防止文件值从客户端应用程序(例如Web浏览器)发送到远程服务器。另外,将从响应中删除Set-Cookie标头,以防止客户端应用程序接收来自远程服务器的设置cookie的请求。在设置中,您可以为所有主机和选定主机启用Cookie删除。下面的示例为所有请求启用cookie删除。
3.3地图遥控器
Map Remote-允许您将请求从一个Map From URL重定向到另一个Map To。根据您的任务替换主机,整个路径或仅替换参数。在下面的示例中,欺骗了从生产服务器到开发服务器的请求。
3.4阻止列表
阻止列表-允许您阻止特定的域名。当网络浏览器尝试从被阻止的域名请求任何页面时,它将被阻止。您可以选择“删除连接”或返回403错误。
3.5 DNS欺骗
共享主机是指您在同一IP地址上有多个站点,并且Web服务器根据在浏览器中输入的名称确定要请求的站点。更准确地说,服务器查看请求中发送的主机头。例如,当您需要替换主机,以便在浏览器中输入地址(例如api.youla.ru)时,请求将转到另一个地址(例如,到达测试站点)。
DNS欺骗-将域名重定向到特定的IP地址。
3.6镜子
镜像-此功能使您可以自动保存返回给Charles Proxy的所有响应。它们以与服务器上相同的层次结构在本地进行布局。如果后端突然出现宕机,测试环境下降等,则您已经有Map Local的现成模拟。您可以激活以下功能:工具→镜像或工具→自动保存。
3.7撰写
撰写是一种用于编辑您捕获的查询的功能。
例如,您将产品添加到收藏夹中,但由于某种原因未将其添加。您可以编辑一个已提交的请求,然后再次发送。为此,请从列表中选择所需的请求,右键单击它,然后选择Compose。请求图标将更改,现在您可以安全地对其进行编辑了。
更改请求中的所需值后,单击下面的``执行''以将请求发送到服务器。
4.录音设置
记录设置-用于显示允许和禁止域列表的设置。
在“选项”选项卡中,您可以配置限制,即Charles Proxy可以记录的请求数。
在“包含”标签中,您可以选择一个特定域来显示软件包。
在“排除”选项卡中,我们可以选择在嗅探期间需要隐藏的那些域。
5.重点
焦点-此功能将域移到列表中的第一位置。
6.重复
重复-向服务器发送与所选请求相同的请求。
7.重复高级
高级重复-与重复相同,只有您可以选择已发送请求的数量以及它们之间的延迟。在检查服务器对洪泛的响应时,此功能很有用。
在这里,并发是用户数,迭代是每个请求重复的次数。您还可以选中“在新会话中显示结果”框,在这种情况下,将打开一个新窗口,其中将执行请求。
概要
在本文中,我们试图描述移动应用程序测试人员使用的Charles Proxy功能。仅此而已,不要忘记将会话从嗅探器附加到错误报告。