Charles - Windows

作者: Jiun俊 | 来源:发表于2018-11-13 11:20 被阅读0次

    Charles 可以对域名和路径进行归拢,看起来比较方便,也可以就行断点、模拟网速、autoResponse 等功能。
    而且最近使用 Fiddler 感觉不太稳定,有时只能抓到部分的链接,换个用试试


    Charles 部分界面

    1 Windows 设置 1&2 原文链接

    1.1 设置不代理计算机请求

    proxy -> windows proxy (勾选则抓取计算机的请求)
    proxy -> Mozilla Firefox proxy (勾选则抓取计算机上 Mozilla、Firefox浏览器的请求)
    对 app 进行数据抓取的场景,这两项 不勾选 。

    1.2 设置代理 Https 请求,并添加证书

    proxy -> SSL Proxy Settings 弹出一个 ssl代理设置界面
    1). Enable SSL Proxying 复选框打勾
    2).添加你想要的设置代理的域名,端口默认 443
    3).添加域名的证书,端口默认 443,选择证书文件(双向认证必须添加证书) (这步我没有添加)

    1.3 过滤关心域名

    View -> Foucused Hosts 用于设置重点关心域名,在列表中会独立显示

    1.4 安装 charles 根证书

    Help -> ssl proxy -> Install Charles Root Certificate
    跳转至系统证书安装流程 安装 charles 根证书

    1.5 查看手机所需配置并安装证书

    Help -> ssl proxy -> Install Charles Root Certificate on a Moblie Device or Remote Browser


    手机安装方法

    2. Android 手机配置

    2.1 连接上同一个局域网,并按照上面配置,设置手动代理
    2.2 手机浏览器访问 chls.pro/ssl 安装证书

    QQ 浏览器下载的是 pem 格式的文件,但手机(Mi 5,其他手机可能不同,仅供参考)不能直接安装(从 QQ 浏览器的下载页面还是从文件管理器) -_-|| ,换的系统浏览器下载的是 crt 格式证书,也不能识别。
    最后,从 手机设置 → 更多设置 → 系统安全 → 加密与凭据 → 从存储设备安装 → 从本地选择刚刚下载的证书文件(但还是只能安装 pem 格式的证书)

    配置成功后就可以使用了。

    3 使用技巧 原文链接

    3.1 模拟慢速网络

    在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。

    在 Charles 的菜单上,选择 “Proxy”->”Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:

    模拟慢速网络

    如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。

    3.2 修改网络请求内容

    有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Edit”,即可创建一个可编辑的网络请求。如下所示:

    image

    我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便,如下图所示:

    image

    3.3 给服务器做压力测试

    我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。

    我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:

    image

    接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。

    image

    悄悄说一句,一些写得很弱的投票网站,也可以用这个办法来快速投票。当然,我也拿 Charles 的 Repeat 功能给一些诈骗的钓鱼网站喂了不少垃圾数据,上次不小心还把一个钓鱼网站的数据库打挂了,嗯,请叫我雷锋。

    3.4 修改服务器返回内容

    有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。

    根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:

    1. Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
    2. Rewrite 功能适合对网络请求进行一些正则替换。
    3. Breakpoints 功能适合做一些临时性的修改。

    Map 功能

    Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

    在 Charles 的菜单中,选择 “Tools”->”Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。

    image

    对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。下图是一个示例,我将所有 ytk1.yuanku.ws(测试服务器)的请求重定向到了 www.yuantiku.com(线上服务器)。

    image

    对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。

    image

    下图是一个示例,我将一个指定的网络请求通过 Map Local 功能映射到了本地的一个经过修改的文件中。

    image

    Map Local 在使用的时候,有一个潜在的问题,就是其返回的 Http Response Header 与正常的请求并不一样。这个时候如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是同时使用 Map Local 以下面提到的 Rewrite 功能,将相关的 Http 头 Rewrite 成我们希望的内容。

    Rewrite 功能

    Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

    例如,我们的客户端有一个 API 请求是获得用户昵称,而我当前的昵称是 “tangqiaoboy”,如下所示:

    image

    我们想试着直接修改网络返回值,将 tangqiaoboy 换成成 iosboy。于是我们启用 Rewrite 功能,然后设置如下的规则:

    image

    完成设置之后,我们就可以从 Charles 中看到,之后的 API 获得的昵称被自动 Rewrite 成了 iosboy,如下图所示:

    image

    Breakpoints 功能

    上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

    Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

    下图是我们临时修改获取用户信息的 API,将用户的昵称进行了更改,修改完成后点击 “Execute” 则可以让网络请求继续进行。

    image

    需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。

    3.5 反向代理

    Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(www.yuantiku.com)的80端口上了。这样,当我访问本地的 61234 端口时,实际返回的内容会由 www.yuantiku.com 的 80 端口提供。

    image

    3.6 设置外部代理,解决与翻墙软件的冲突

    Charles 的原理是把自己设置成系统的代理服务器,但是在中国,由于工作需要,我们常常需要使用 Google 搜索,所以大部分程序员都有自己的翻墙软件,而这些软件的基本原理,也是把自己设置成系统的代理服务器,来做到透明的翻墙。

    为了使得两者能够和平共处,我们可以在 Charles 的 External Proxy Settings 中,设置翻墙的代理端口以及相关信息。同时,我们也要关闭相关翻墙软件的自动设置,使其不主动修改系统代理,避免 Charles 失效。

    PS:

    1. 手机连上代理是时,Charlescharles 会弹窗提醒是否允许,同意即可;
      https 双向认证的抓包需要有该域名的证书文件(.p12文件);
    2. 第一个抓取的请求会要求输入证书密码,输入密码保存即可,输入密码后如果解析不了请求内容重启 charles 即可;
    3. charles 为收费软件,免费版会有限制(比如:开启时等待 10s 、使用半个小时后提示重启);
    4. 连接代理后若手机请求无法通过电脑,关闭 360 之类管家(垃圾制造机)、 windows 防火墙后重试。。

    相关文章

      网友评论

        本文标题:Charles - Windows

        本文链接:https://www.haomeiwen.com/subject/pgekfqtx.html