Charles抓包工具

Update Log:
2017.10.31: 更新charles抓不到的情况总结.
2018.8.9: 更新reponse code 和 code区别
2018.9.29: 增加Focus功能和BreakPoint功能

一.是什么?

Charles是mac上的一款网络封包截取工具.可以帮助我们调试与服务器端的通讯.定位一些bug的原因.

二 .主要功能

1.拦截接口.查看服务端返回数据.

2.map local-拦截接口.篡改服务端返回的数据.来测试一些临界值.

3.rewrite-拦截接口.篡改服务端返回的http返回码.帮助我们测试接口错误的情况.

4.模拟慢网速状态.

三.安装

Charles破解版.下载后双击.拖入Application目录下即可.

四.使用方法:

1.拦截接口.查看服务端返回数据

1)模拟器使用方法:

1.将Charles设为成代理服务器.

打开Charles.工具栏->Proxy->Mac OS X Proxy.如图勾选即可.

2.运行模拟器.这样模拟器所有的请求都会被Charles所拦截.

2)真机使用方法:

1.获取本机的IP地址.

打开本机系统偏好设置-网络.如图即本机的IP地址.

image.png

2.真机连接本机的IP

手机 -> 设置 -> WIFI -> 点击你连的WIFI最右边的感叹号 -> 页面滑到底部 -> HTTP代理 -> 手动.

需要填写两项.
1.服务器:(为第一步获取的本机IP地址)
2.端口:(一般为8888)

Charles抓包工具_第1张图片
image.png

3.Charles上的设置

Charles -> 工具栏 -> Proxy -> Proxy Setting

1.将Port设置为:8888 (此处应与手机上填写的端口号保持一致)
2.勾选 Enable Transparent HTTP Proxying
3.此时就已经设置好了.如果这台手机是第一次连接本机.此时Charles就会弹出一个警示框.选择Allow即可.

Charles抓包工具_第2张图片
3

二.拦截HTTPS方法:

1.证书的安装

如果你拦截的请求为HTTPS.那么Charles是不能拦截的.会出现接口显示Unknown的情况.这是因为没有安装Charles证书的原因.

注意: 真机和模拟器都需要安装这个证书.而且不同的模拟器都是独立的.所以各自都需要安装一次.

安装方法: 真机或者模拟器打开Safari(必须是Safari).输入网址www.charlesproxy.com/getssl安装即可.

2.Charles设置

Charles -> 工具栏 -> Proxy-SSL Proxying Settings.

证书安装后.Charles默认也并不截取Https.所以还要设置一下.如图设置即可.

Charles抓包工具_第3张图片
5
Charles抓包工具_第4张图片
6

三.Maplocal修改返回数据

开发时需要测试某个数据为临界值时.app显示是否会正常.

1.保存接口返回的数据到本地文件

找到你想修改的url -> 右击 -> Save Response -> 填写文件名(如response.text)

2.将接口与本地数据建立链接

找到刚才的url -> 右击-map local -> 粘贴刚才复制的url到Host
Protocol / Host / Port / Path都会自动填充.
我们只要把Query里的数据删除即可(必须删除).点击OK就可以了.

3.打开刚才你保存在本地的文件response.text.修改你想修改的数据.Alt+s保存一下.

4.这时候app再请求这个接口的时候.返回的数据就是你修改的本地数据了.

Charles抓包工具_第5张图片
7

四.rewrite修改http返回码

有时候我们需要模拟接口访问失败的情况.就要修改Http返回码.

1.获取你想修改的接口的URL

在Charles里找到你想修改的url -> 右击该url -> Copy URL
即可获取该url.如图.

Charles抓包工具_第6张图片
7

2.打开Rewrite功能

打开Charles -> 工具栏 -> Tools -> Rewrite

Charles抓包工具_第7张图片
8

3.设置选项

3.1.勾选Enable Rewrite.

3.2.勾选Debug in Error log

Charles抓包工具_第8张图片
9

3.3.点击Locations里Add按钮(上图5)

Charles抓包工具_第9张图片
10

Protocol设置为Http或者Https(视你的接口而定)
Host: 为你刚才复制的Url的Host.
Path: 为你刚才复制的Url的path
Port 和 Query 都留空.(一定要留空)

注释:什么是Host 和 Path
如该接口: https://www.baidu.com/x/v2/show?platform=ios
www.baidu.com就为Host.
/x/v2/show即为Path(?之前Host之后即为Path)

(5).点击Rules里的Add按钮(上图6)

Type 选项选择 Response Status
Match 栏里的 Value填写 200
Replace 栏里的 Value填写 你想修改成的返回码.如404

Charles抓包工具_第10张图片
11

五.Mocky用法:

Mocky是一个可以自己生成一个Api.并且可以自定义Status Code. Body的网站.

Charles抓包工具_第11张图片
12

六.HTTP返回码总结

此处总结的为response code.
是请求结果的请求头里的code.
他由HTTP协议规定.全世界统一.

还有一个code是请求结果里的code码.
即返回的json数据里的code字段.
这个code是你们自己公司后端开发定义的.即随意定义.
能拿到这个code最起码表明你的请求已经成功了.(即response code == 200)
但是后端那边拿不到正确的数据.
所以通过json数据里的code字段来表明他是因为什么导致拿不到正确数据的.

状态码 类别 原因
1xx information-信息状态码 接收的请求正在处理
2xx success-成功状态码 表示请求成功地接收
3xx redireaction-重定向状态码 为完成请求客户需进一步细化请求
4xx client error-客户端错误状态码 客户错误
5xx server error-服务器错误状态码 服务器错误

1.关于304的用处见利用服务端304返回码更新本地资源

七.模拟慢网速

在开发的时候.有时需要测试在网速差的时候app是否正常.

1.Charles工具栏-Proxy-Throttle Setting
2.选中Enable Throttling
3.选择Throttle preset为56 kbps Modem.他就会自动将Bandwidth设置为57.6kb/s.这个即你现在的下载速度.如果你觉得还不够慢.可以将他修改的更小.

Charles抓包工具_第12张图片
13

九:Focus功能

1.平常抓包的时候会出现很多接口.其中大部分我们都是不关心的.我们只关心其中的几个.这样就会很难查看.
所以我们可以使用Focus功能.
如.我们只关心api.bilibili.com和bangumi.bilibili.com这两个接口
那么可以先按住command键同时选中这两个接口.然后右键.选中Focus功能.
他就会如图二所示.把我们不关心的接口都放到Other Hosts里了.

Charles抓包工具_第13张图片
image.png
image.png

十.clear others功能

如下图.这个接口抓了太多包了.我想清楚一下列表.但是我又不想清楚其他接口里的包.能不能只清楚这一部分呢.
如图.charles有个功能叫clear others.

Charles抓包工具_第14张图片
image.png

十一.BreakPoint功能

有时候仅仅想修改接口的一个参数.或者Response Code
有个更简便的方式.即BreakPoint功能.

step1: 找到你想修改的url.右键然后点击Breakpoints .如下图

Charles抓包工具_第15张图片
image.png

step2: 重新请求这个接口

charles就会进入这个界面.这个页面可以让你修改此次请求的参数.
修改好修可以点击Execute按钮.进入下一个界面

Charles抓包工具_第16张图片
image.png

step3:点击execute按钮后你就会进入下图这个界面.
此界面可以让你修改Response Code或者返回的json数据.
修改好后点击Execute即可.

Charles抓包工具_第17张图片
image.png

step4:

然后就会发现此次接口就被你修改了.

注意:

使用之前最好检查一下.你是否开启了breakpoints功能.如下图.

Charles抓包工具_第18张图片
image.png

八: Charles抓不到包的处理方法总结

报错:SSLHandshake: Received fatal alert: unknown_ca

1.检查模拟器是否装了chales证书.

安装地址: www.charlesproxy.com/getssl
使用safari(必须系统自带浏览器)打开这个网址.并安装证书.

2.检查手机是否勾选chals证书:

设置路径: 手机 -> 设置 -> 通用 -> 关于本机 -> 证书信任设置(拉到底) -> 勾选Charles Proxy CA

Charles抓包工具_第19张图片
14
3.检查手机是否信任charles证书

设置路径: 手机 -> 设置 -> 通用 -> 描述文件与设备管理(拉到底) -> 信任charles 证书

4.检查你是否开了host

host会修改你的网路配置
关闭host重新打开charles即可.

你可能感兴趣的:(Charles抓包工具)