Charles(v4.* @Windows)的使用

转自:传送门

移动开发经常都需要抓包调试,之前用的是Window的fiddler,某日才发现mac上的Charles也有Windows版本,一查原来是mac/linux/Windows都支持,好定西啊,我是比较喜欢跨平台的东东的,以后切换开发环境的时候就比较平滑了,在此记录下使用心得操作;

简书没法自动目录,咱手撸一个(占个位,后续补...):

  • 安装

  • 基本结构

  • 菜单

    • Proxy 菜单

      • 设置会话捕捉条件

      • 设置允许连接的ip地址

      • 模拟网络环境

      • 设置为代理服务器,并捕获手机请求

    • Tools菜单

      • rewrite动态修改request/response信息
  • 捕获https请求

    • 在本机上安装证书

    • 在手机上安装证书

    • 启用https捕捉

  • 断点功能

  • response重定向功能

安装

直接上 官网 下载就好了,现在是v4.0.1,收费软件,找找破解方式,下个 charles.jar 替换下原有的就可以了;

基本结构

主要是会话的两种视图模式以及对应的request/response面板组成:

[图片上传失败...(image-3e45d1-1515741176133)]

Sequence视图

Structure视图模式下,列表回按照域名来归类所有请求,而Sequence视图则是按照请求发生的顺序来展示;

可能是之前用Fiddler或者人眼阅读的顺序,习惯先左右后上下,但是Structure模式又不好找按序查找请求,对于不清楚api发生顺序的情况下不方便理顺逻辑,而sequence模式是上下模式,怎么看怎么浪费时间,这点差点让我放弃用它了...

常用的功能在图上已经有注释,不多说,感觉chales的右键功能比fiddler多一点;

Save response : 保存response数据到文件中,方便后面用于重定向功能 map local...;

Export : 可以将选中的多个会话信息完整导出成文件,方便不同开发人员进行调试或者现象复现分析,然后通过File - import 来导入;

repeat advanced...` : 可以对设置重发次数以及并发数,可以用于进行简单的服务器压测,看到有些简友还用它来对付一般的钓鱼网站,有点意思...

菜单

Proxy 菜单

这个用得比较多,在这里设置跟踪捕捉过滤功能:

Proxy menu

设置会话捕捉条件

record_setting

include 面板用于启用/停止可以捕捉/显示的会话;

exclude 表示不显示的会话,在会话列表中右键选择 ignore 时,对应的url会出现在这里;

record_setting_add

比较好用的是过滤条件支持通配符, * 表示任意多个字符, ? 表示一个字符,如 Protocol 中有 http ,https 和 "",选择空白或者输入 * 都可以表示任意协议的请求;

设置允许连接的ip地址

access_control_settings

模拟网络环境

throtte_settings

在这里选择要模拟的网络环境,选项比Fidder多很多,也可以自定义,最人性的还可以对指定的url进行网络环境摸你, 好评...

这里设置完成后通过 Proxy - Start Throttling(Ctrl+T) 或者常用工具栏按钮来启用或停止;

设置为代理服务器,并捕获手机请求

proxy_settings

端口号 Port 默认 8888 ,跟Fiddler一样,省得切换软件的时候,手机还得重新设置wifi代理了;

记得启用 Enable transtarent HTTP proxying

手机上的设置跟Fiddler类似,切换到wifi设置页面,选择Proxy 选择 manual ,代理服务器设置为charles所在设备的ip,端口就是上面设定的 8888 , 注意: 手机和charles所在机器需处于同一个wifi网络中;

以上设定完成后,就可以charles中捕获手机请求了,第一次连接的时候charles会弹出确认提示框,选择 allow 就好了:

mobile_connect

Tools菜单

Tool_menu

rewrite动态修改request/response信息

map local 类似,也可以对response进行修改,不过他改变的只是部份信息,比如:主机地址( Host ),返回状态码( response status ),返回信息内容( body )等:

rewrite_rule

捕获https请求

1. 在本机上安装证书

help_ssl_proxying

这里可以直接选择 Install charles root certificate,会在本机上安装证书,也可以如图选择保存证书,然后手动导入到需要的位置,操作类似:

install_certificate.gif

mac上的操作请看 这篇

2. 在手机上安装证书

单击 help -- ssl proxying - install charles root certificate on a mobile device or remote browser ,会弹出提示框,然后在手机浏览器上输入网址: chls.pro/ssl ,然后根据提示保存证书即可:

install_certificate_on_mobile

3. 启用https捕捉

ssl_proxy_settings

启用后就可以在会话视图列表中看到https请求了;

断点功能

可以在会话列表中右键点击某个会话,然后在菜单中选择 Breakpoints ,也可以在 Proxy - Breakpoint settings... 中手动新建/启用某个断点并且勾选 Proxy - enable breakpoints ,这样,当下次再有该请求时,会自动进入断点模式;

一个完整请求会进入断点模式2次,request的发出之前以及收到服务器的response但尚未返回给客户端的时候;

断点request的时候,可以求改reqeust信息,不过我们程序都有对请求头做校验和处理,修改参数后一般就直接报错了,所以这里看看response就好,反正操作类似:

breakpoints

edit response 中可以双击直接修改json文件的key/value值,很方便,修改完成后单击 execute 继续执行其他操作,将修改后的response返回给客户端;

response重定向功能

这个跟Fiddler的autoResponse功能类似,可以指定本地文件( map local... )也可以指定为其他服务器( map remote... )上的文件,我们介绍前一种;

这里的 map local 只能重定向 response 的数据内容部分,而 headers

还是会保留服务器返回的,比如要修改返回码之类的操作,目前来看,只能通过断点来进行,这一点比 Filder 弱很多,不太方便,也可能是我还没发现怎么处理,有知道的请不吝告知,谢谢;

断点可以用于临时修改数据,也是一种重定向功能,若是要长期重定向,咱还是将返回重定向到本机文件比较方便,具体方法:

  • 准备一份要返回给客户端的response数据文件,可以从前面介绍的 save Response 来保存正常数据,然后修改后作为本地数据文件,也可以按照自己需要构造一份(用于服务端api尚未发布,但移动端又需要进行调试的时候);

  • 选中某个会话,右键单击,从菜单最下方中选择 map local ... , 也可以单击 Tools - Map Local... 打开 map lcoal settings 来添加一个映射关系,两种操作是一样的,前者只不过直接把url信息给写好了:

    map_local
  • 完成设定后,后续符合条件的请求都会用本地映射文件替代;

小结: 我现在是Fiddler和charles配合使用,主要是Fiddler的https捕获我用的时候一直出问题,但是charles就很一切正常,除此之外,我用charles比较少,因为平常需要的基本功能两者都满足,但是:

  1. charlessequence 视图是上下视图模式,我完全不习惯,感觉眼睛横向的时候基本都不需要动,很方便也舒服,当然这个可以设定(mac下是 cmd+, -> Charles Preferences -> Viewers 选择 sequence view layoutTall 即可);

  2. charles 删除几百个会话信息的时候就可以感觉得到卡了那么一瞬间,而Fiddler 就很顺畅;

  3. charlesfilter 功能没 fiddler 强大;

  4. fiddler 提供脚本自定义功能,如果是C#开发者的话,还可以很方便的集成fiddler_core到自己的应用中;

扩展阅读: Fiddler的使用技巧

另一篇文章地址传送门

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容

  • 移动开发经常都需要抓包调试,之前用的是Windows的 Fiddler ,某日才发现mac上的 Charles 也...
    冰川孤辰js阅读 13,432评论 1 12
  • *Charles[http://www.charlesproxy.com/]是常用的网络封包截取工具,在做移动开发...
    想起一个很好听的名字阅读 37,145评论 4 32
  • 客家人自中原大地举族南徙迁入赣南,大多数群聚居在山区,生活艰难。当时这原始森林茂密的山区寒湿、瘴气严重,为了驱寒...
    蓝莓传播阅读 1,811评论 0 0
  • 有时候你必须跳出窗外,然后在坠落的过程中长出翅膀。再长的路都有尽头,千万不要回头;再快乐的心都有烦恼,千万不...
    阿勇的故事阅读 97评论 0 0
  • 这次找工作我选择了销售。我曾无数次想过我将从事的职业:建筑设计师、结构设计师、作家、摄影师、旅行家、地理学家……...
    lemonnade阅读 174评论 0 0