Charles 使用

本文简单介绍 Charles 的使用

Rewrite 功能

几乎可以用来修改 HTTP 请求中的所有数据
例如 Request 中的 path、query param 等等

这样的好处是只需要篡改请求中的数据,而不需要修改代码,避免重新编译,可以节省时间,也不会污染代码,造成发版时忘记修改回来的问题。

具体操作如下,我们以 将请求中的 versionCode=46 修改为 1111111为例

  • 点击 Tools - Rewrite

7bdcf253ly1g4rmbcpfs2j20uq0qstpi.jpg

  • 新增规则
    在面板上分成了三个区域,如下
    第一个区域为 配置区 ,用来管理各种配置
    第二个区域为 匹配区 用来匹配 Location
    第三个区域为 重写规则区 在这里新增各种重写规则

  • 编辑 Location
    7bdcf253ly1g4rm7k5dmgj20uo0lewhp.jpg

    这里一共有五个地方,分别是
    Protocol 填写协议
    Host 填写域名
    Prot 填写端口
    Path 填写路径
    Query 填写查询的值

如果不填写将会匹配所有的值,这里可以填写 *? 通配符

修改 Request

  • 填写 Rewrite 规则
    7bdcf253ly1g4rmhp99qzj211e0z2dok.jpg

    1. 首先选择 Type(类型) Modify Query Param

      即修改 Query 参数

    2. 在 Match 中填写需要修改的参数的 name 以及对应的 value

    在我们的例子中,就是 versionCode 及 46
    3. 在 Replace 中填写相对应要修改的参数名和值
    在我们的这个例子中,我们只需要将 versionCode 的值改成 1111111,所以只需要将 Replace 中的 Value 填写为 1111111

这样就可以将 HTTP 请求中的数据进行修改了,不需要修改代码和重新编译。节省了大量的时间

修改 Response

同理,我们也可以修改 HTTP 请求中的 Response 中的数据,修改成我们调试所需要的信息

只需要在 Rewrite Rule 中的 Type 中选择所需要修改的类型,例如 Response StatusModify HeaderBody

7bdcf253ly1g4rm8gorolj21080y67aw.jpg

并在 Where 中选择是修改 Request 还是 Response ,下面的规则同理。

Location Match 包含了可用于匹配请求URL的协议,主机,端口和路径字段。
任何字段都可以留空,这种情况下会匹配上任何值。

  • 通配符(Wildcards)
    通配符支持使用 * 、**?** 和 […]

* 匹配0个或者多个字符,**?匹配一个字符,字符范围[…]** 匹配范围内的一个字符,例如 [a-z] 或者 [aeiou]

  • 路径(Paths)
    要匹配子路径,必须使用/*结尾
    注意:在之前的 Charles 版本中这是隐含的,但现在是必须的
  • 查询值(Query)
    查询字段和查询字符串内容相匹配,并不匹配以 ? 开头的字符,要注意到是一个通配符
    查询字段和其他字段一样可以包含通配符,因此你可以像这样,在 Query 中任何地方使用 *page=1* 去匹配 page=1
  • 常见用途
    要将每个请求和给定的 host 匹配,填入 host 并将其他字段留空
    要将每个请求和给定的 host 以及路径匹配,填入 host 并把路径已 / 结尾,并把其他字段留空
    要将每个文件和给定的 host 上的后缀(suffix)相匹配,则填入 host 和 /*.suffix,并将其他字段留空
Host Path Result
charlesproxy.com 匹配所有到 charlesproxy.com 的请求
*.charlesproxy.com 匹配所有 host 以 .charlesproxy.com 结尾的请求
charlesproxy.com /charles/ 只会匹配所有到 charlesproxy.com/charles/ 的请求
charlesproxy.com /charles/* 匹配所有到 charlesproxy.com/charles/ 的请求,包括文件和子路径
charlesproxy.com /charles 只会匹配所有到 charlesproxy.com/charles 的请求
charlesproxy.com /index.html 只会匹配所有到 charlesproxy.com/charles.html 的请求
charlesproxy.com /*.html 匹配所有到 charlesproxy.com 并且以 .html 结尾的所有请求
/charles/*.html 匹配任何 host 的所有在路径(包括子路径) /charles/ 中以 .html 结尾的所有请求

可以将协议和端口匹配添加到上面以进一步缩小位置匹配。

作者

PPTing

发布于

2019-03-13

更新于

2022-02-12

许可协议

评论