Charles代理

版权声明:本文为博主原创文章,未经博主允许不得转载。Flutter交流QQ群:271733776,共同学习、进步! https://blog.csdn.net/hekaiyou/article/details/82950490

Charles代理

Charles是一个HTTP和SOCKS代理服务器,代理请求和响应使Charles能够在请求从客户端传递到服务器时检查和更改请求,以及从服务器传递到客户端时的响应。

带宽模拟器

Charles可用于调整Internet连接的带宽和延迟,这使您可以在高速网络环境下模拟调制解调器下的网络连接。

使用 Proxy 菜单中的 Throttle Settings… 选项可以打开流量限制设置,勾选 Enable Throttling 可以开启流量限制。如果你只想限制部分主机名的流量,你可以勾选 Only for selected hosts 并将主机名添加到位置列表中。

打开流量限制设置

在大部分时候,你不需要理会上面那么多具体的参数,你只需要在 Throttle preste 选择框中选择一个你想要模拟的网络环境,Charles就会自动为你配置对应的流量限制参数。

想要模拟的网络环境

还有工具栏上的 乌龟 图标也可以快速开启或关闭流量限制。

快速开启或关闭流量限制

带宽可以被限制为每秒任意字节,这样可以模拟任何连接速度。延迟也可以设置为任意数毫秒,模拟在较慢的网络连接下经历的延迟,即在发出请求和在另一端接收请求之间的延迟。

断点工具

断点工具允许您在请求和响应通过Charles之前拦截它们,您可以检查和编辑请求或响应,然后决定是允许它继续还是阻止它。

每个断点使用 位置匹配1 模式匹配URL,每个断点也分配给请求或响应,或者两者都分配,因此您可以在需要截获的位置上准确地打断点。

要使用的 断点 ,请右键单击 结构视图 树中的主机名或树中的任意节点,然后从菜单中选择 Breakpoints 项,然后你会看到工具栏上的 六边形 图标亮起。

选择Breakpoints项

运行方式

当请求或响应跳过断点时,断点窗口会自动在Charles中打开并出现在最前面。Breakpoints 窗口包含当前截获的请求和响应列表,并等待您的操作,选择请求或响应以查看和编辑内容,然后决定执行、中止或取消断点。

然后决定执行、中止或取消断点

Execute 按钮应用您所做的所有更改,并允许请求或响应继续。Abort 按钮阻止请求或响应,并向客户端发送错误消息。Cancel 按钮会放弃您所做的所有更改,并使请求或响应继续进行,就像它没有被截获一样。

SSL代理

Charles可以用作HTTPS中间人代理,使您能够以纯文本格式查看Web浏览器和SSL Web服务器之间的通信。

Charles通过成为一名中间人来做到这一点,Charles不是让您的浏览器看到服务器的证书,而是动态地为服务器生成证书,并使用自己的根证书(Charles CA证书)对其进行签名。Charles收到服务器的证书,而您的浏览器收到Charles的证书。因此,您将看到一个安全警告,指示根权限不受信任,如果将Charles CA证书添加到受信任的证书中,您将不再看到任何警告。

Charles仍然通过SSL与Web服务器通信,通信是从Web浏览器到Charles的SSL(加密)以及从Charles到Web服务器的SSL(加密)。此功能对于调试安全(SSL)Web应用程序至关重要。

您可以在代理首选项中打开或关闭此SSL代理,关闭SSL代理后,Charles只会将所有SSL流量直接转发到目标Web服务器。

选择主机到SSL代理

您必须专门识别要启用SSL代理的主机名,该列表位于 Proxy 菜单的 SSL Proxying Settings… 选项中的 SSL Proxying 选项卡中。

启用SSL代理的主机名

您还可以在结构视图中右键单击主机名,然后打开或关闭SSL代理。

打开或关闭SSL代理

将主机名添加到SSL代理列表后,您可能需要重新启动Charles才能更改现有的浏览器会话。如果您想要SSL代理所有主机名,请在SSL代理设置中输入 * 到主机名列表中。

信任Charles的SSL证书

Charles为站点生成自己的证书,并使用Charles根证书签名。当您收到该证书时,您将在浏览器或其他应用程序中看到警告,因为Charles根证书不在您的受信任根证书列表中。

反向代理

反向代理在本地端口上创建Web服务器,该服务器透明地代理对远程Web服务器的请求,反向代理的所有请求和响应都可以记录在Charles中。

如果您的客户端应用程序不支持使用HTTP代理,或者您希望避免将其配置为使用代理,则可以使用反向代理。创建原始目标Web服务器的反向代理,然后将客户端应用程序连接到本地端口。反向代理对客户端应用程序是透明的,使您可以查看Charles以前可能无法访问的流量。

映射本地

映射本地工具使您可以使用本地文件,就像它们是远程网站的一部分一样,本地文件的内容将返回给客户端,就像它是正常的远程响应一样。映射本地可以大大加快开发和测试的速度,否则您必须将代码上传到远程网站以测试结果,使用映射本地,您可以在开发环境中安全地进行测试。

右键单击并选择Map Local

结构视图 的树(或其他节点)中选择站点节点,或者选择 序列视图 中的请求,然后右键单击并选择 Map Local… ,就会打开 Edit Mapping 窗口。

打开Edit Mapping窗口

在这里你可以将该请求的响应指向到本地文件,比如上面将请求映射到本地一个叫做 v3_user_home_page.js 的json文件,文件内容只是在接口原来的响应上修改了部分内容。

叫做v3_user_home_page.js的json文件

在进行以上操作之后再来进行一次请求,v3_user_home_page.js 文件中的数据被当作请求的响应返回,一个本不应该得到返回的请求在经过映射本地后返回了我们自定义的数据,这在开发需要模拟一些极端的情况时非常有用。

文件中的数据被当作请求的响应

您始终可以通过位于 Tools 菜单的 Map Local… 选项打开 Map Local Settings 页面,管理你已经添加或新增映射到本地。

动态文件

动态文件(例如包含服务器端脚本的文件)不会由映射本地工具执行,因此如果文件中有任何脚本,脚本将按原样返回到浏览器,而不是预期的结果。

运行方式

当请求与映射本地工具映射匹配时,它会检查与路径匹配的本地文件(它不包括查询字符串)。如果在本地找到所请求的文件,则将其作为响应返回,就好像它是从远程站点加载的一样,因此它对客户端是透明的。如果在本地找不到所请求的文件,那么该网站将照常提供请求。

示例

如果您正在测试css、swf或图像的更改,则可以将这些文件类型映射到网站的本地开发副本,以便您可以使用所有开发资源浏览实时站点。创建从 live.com/*.css 到本地开发副本的根映射,以及其他文件类型的类似映射。或者,您可以根据需要映射整个目录或单个文件。

位置匹配

每个位置匹配可以包含与特定URL匹配的协议、主机、端口和路径模式,位置可以包括通配符。

HTTP或HTTPS/SSL

Charles可以为HTTP或HTTPS目标创建反向代理,对于HTTP,目标端口可能是80,对于HTTPS,它将是443。当您创建HTTPS反向代理时,您必须使用HTTPS连接到它,例如:https://localhost:60000/

转发端口

可以将任何TCP/IP或UDP端口配置为使用端口转发工具从Charles转发到远程主机,这样可以调试Charles中的任何协议。在 Macromedia Flash2 中调试 XMLSocket3 连接时,这尤其有用。

在Charles中,转到 Proxy 菜单,然后选择 Port Forwarding ,将出现一个 Port Forwarding Settings 窗口。

Port Forwarding Settings窗口

选择TCP或者UDP协议、监控的端口范围、转发的IP或者域名和转发的端口。测试时可以将需要端口转发的IP写入 Remote host ,定义一个域名,不用端口转发的时候直接改 Remote host 即可。

域名和转发的端口

您还可以使用Charles作为SOCKS代理,因此您无需设置端口转发。


  1. 位置匹配是正则表达式的一种,每个位置匹配可以包含与特定URL匹配的协议、主机、端口和路径模式 ↩︎

  2. Macromedia Flash百度百科 ↩︎

  3. Macromedia Flash的长连接消息协议 ↩︎

猜你喜欢

转载自blog.csdn.net/hekaiyou/article/details/82950490