稳如老狗 - 调试工具Charles

Charles 是很棒棒的跨平台代理调试工具, 能帮助你快速的定位网络问题

介绍

Charles 提供了很多很强大的功能, 能满足很多场景下的调试需求

  1. 查看网络请求详细的 request 和 response

  2. 拦截修改 request 和 response

  3. Request mapping, remap 网络请求的地址

  4. Bandwidth Throttling 模拟慢速网络

  5. 网络请求 黑白名单

  6. 其它 key feature

安装

作为一个正经的教程, 只能建议你去买官方的 license : Official Charles Website

幸运的是, 我们大天朝人民可以在 Lizhi.io 折扣购买正版 ~

Charles 默认下载后可以永久免费使用试用版, 和正式版相比, 有如下限制 :

  1. 启动需要等待 30s

  2. 每 30 分钟 app 自动关闭

安装 Charles 就是拖拽而已, 不解释

第一次打开 Charles, 他会提示请求设置系统网络代理的权限, 如果不允许的话, 后面的功能没法使用

配置

1. HTTP Proxy

打开 Charles 后, macOS proxy 是默认选中的

image

然后打开 http://httpbin.org/image

可以看到网络请求像下图 :

在 Structure 模式 : 网络请求按照 host 来组织

image

在 Sequence 模式 : 网络请求按执行顺序排列

image
image

2. 配置 HTTPS

目前, 大部分 App 或者网站都在使用 HTTPS 协议, 所以需要配置 Charles 支持 HTTPS 请求的代理

Charles SSL proxy feature

  1. 开启 HTTPS proxy 之前 :

    不能看到网络请求的 url, 也不能看到详细的 request 和 response

image
  1. 配置好之后 :

    所以的数据清晰可见 ~

image

image
  1. 选择 Install Charles Root Certificate , 系统 钥匙串 会自动打开, 然后输入密码信任这个根证书

  2. 为某个域名开启 HTTPS 调试

image

6 ~

3. iOS & Android

iOS 和 Android 真机, 需要额外安装一个根证书 ~

image
image

根据提示, 用Safari 浏览器浏览chls.pro/ssl, 然后安装证书

image

iOS 11 以上, 需要额外的操作 : 信任证书

image

安装完成之后, 需要将真机和电脑连接到同一个 局域网( wifi 信号) 中

  1. 和 Mac 连接到同一个 wifi
image
  1. 点击最右边的 ! 进入高级设置
image
  1. 选择 配置代理
image
  1. 选择手动, 然后输入 Mac 的 ip 地址, 和 Charles 代理的端口 (默认是 8888)

  2. 可以从 系统设置 => 网络 查看本机的 ip 地址

image

基本操作

1. 过滤网络请求

[图片上传失败...(image-99c8ce-1529141512655)]

使用关键词去 Filter 需要的网络请求

2. 模拟慢速网络

开启 ThrottleProxy -> Throttle Settings

image

3. 重复发送请求

image

重复一次, 或者配置并发多次请求

4. 黑/白 名单

image

允许或者禁止 制定 host 的请求

高端玩法

1. Map Remote

右键点击某个请求, 启用 map remote 功能

image
image

这个配置, 将 匹配 https://slack.com/clog/tracks/* 的请求 map 到 https://mywebsite.com/clog/tracks/*

这个功能在需要切换 Production QA Development 环境时很好用 ~

image

更多的设置可以在这里看到

2. Map Local

同样的, 右键点击某个请求, 为某个 request 启用 Map local 功能

image

现在, 所有匹配https://slack.com/clog/track/* 的请求将会被劫持, 网络请求的 response 会是Users/Shawn/Downloads/fake.json 文件中的内容

当需要一直修改某个请求的内容或者做 Mock server 时很有用 ~

3. 断点 !

右键点击, 为某个 request 启用断点 功能, 或者查看更多的设置 : Proxy -> Breakpoint Settings

image

现在, 所有匹配Get https://jianshu.com/* 的请求将会被劫持

image

现在 浏览 https://jianshu.com, Charles 会自动停在断点, 并前置当前窗口

可以编辑 request, 修改请求参数, 请求头, cookie, 或者终止请求等,

随后点击 Execute

image

Charles 获取到服务端的 response 后, 进入 response 断点

我们可以查看 response 的详情, jianshu.com 的 response 应该是 HTML 数据, 然后点击 Execute 让整个网络请求继续执行

很秀的功能 ~

P.S.

1. Charles 怎样实现抓取网络请求 ?

man-in-the-middle

中间人攻击

简而言之 :

正常的网络请求

Charles 中间人攻击

  1. server 代表我们请求的资源, 如 google.com

  2. browser 代表我们发起请求的手机 App 浏览器等

  3. Local Proxy 是代理工具, 如 Charles Wireshark whistle

主要流程 :

  1. Browser 发送请求

  2. Charles 接收请求, 并转发给真正的 server

  3. Charles 接收真正 server 返回的 response, 并转发给 browser

这样, Charles 能同时获得 browserserver 发送和返回的数据, 也就实现了抓包的功能

流程看起来很简单, 实际上, HTTPS = HTTP + SSL/TLS, 是一个安全的通信协议

所以前面繁杂的根证书等配置, 来 hack 这层安全的协议

2. SSL Pinning

随便信任未知来源的 证书 是非常危险的操作, 这将允许证书的所有者拦截查看你所有的 HTTPS 请求内容

那么, 有什么办法防止被 MITM 么 ?

  1. 在 web 端是没有办法避免 MITM 的

  2. 在移动端, 比如 facebook 的 iOS App 采用 SSL Pinning 的方式防止 MITM 攻击

办法也很简单, 将服务端正确的证书打包到 iOS 客户端 App 中, 每次网络连接中, 检查证书是否一致即可

3. 证书

Charles 的证书是成对的, 如果某台手机需要在不同的电脑上抓包, 都需要重新配置对应的证书 ~

FAQ

  1. 无法通过 chls.pro/ssl 安装证书

尝试 Save Charles root certificate 到电脑上, 然后登录 iOS 上自带的邮件客户端, 将证书作为附件, 发送邮件到手机上, 然后使用系统自带的邮件客户端, 打开邮件, 点击附件安装证书

Ref

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

推荐阅读更多精彩内容