简介
Charles是一款抓包修改工具,抓取http/https协议的包
tips:当手机有安装vpn,记得将vpn链接去掉,否则会抓不到包(网络会出现直接走vpn线路)
一、手机如何代理环境
查看本地IP地址
a.打开charles,点击 help—>ssl proxying—>Install charles ……—>获取ip地址,如图示的IP地址为192.168.1.7
b.在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:
MAC抓包https
在菜单栏选择 『Help -> SSL Proxying -> Install Charles Root Certificate』,会自动导入 Charles Proxy CA 证书并打开 Keychain Access,
双击新导入的证书弹出证书信息页面,将 Secure Sockets Layer(SSL) 设置为Always Trust,关闭页面后弹出密码提示,输入密码更新系统信任设置。
如果还是无法抓包,关闭浏览器重启后看下。
1. iPhone http代理设置
设置 -> 无线局域网 -> 当前连接的wifi 最右侧 详细信息按钮 -> 最下面的http代理填入IP,端口
注意:ios 10.3及以上系统,需要在手机:设置-》通用-》关于本机-》证书信任设置里面启用完全信用Charles证书
2. Android http代理设置
取消当前wifi网络,重新连接,高级选项,http代理,手动,填入IP,端口
android7以上使⽤charles抓取https 会出现unknown,即使安装了证书
安装证书:在⼿机浏览器打开 chls.pro/ssl 地址安装证书
解决⽅案:
安装charles证书
安装VirtualXposed
将需要调试的app安装在VirtualXposed上
charles Proxy>SSL Proxying Setting 添加需要查看的请求host
解决⽅案⼆(推荐)
⼿机上安装charles证书
项⽬中增加android:networkSecurityConfig配置,允许android7.0以上设备https抓包
Charles SSL Proxying Settings中配置host,如果需要针对全部host⽣效,host配置为*即可
配置代码如下
<application android:networkSecurityConfig="@xml/network_security_config">
<?xml version="1.0" encoding="utf-8"?>
<network-security-config> // 配置后就可以通过charles抓取https(android 7.0以下设备默认是这种配置)
<base-config cleartextTrafficPermitted="true" >
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config> // 以下配置只针对debug包有效,不推荐这种⽅式
<!-- <debug-overrides>-->
<!-- <trust-anchors>-->
<!-- <!–信任⽤户安装的证书–>-->
<!-- <certificates src="system" />-->
<!-- <certificates src="user" />-->
<!-- </trust-anchors>-->
<!-- </debug-overrides>-->
</network-security-config>
3. wifi环境下使用手机连接电脑需要注意以下几点:
手机和电脑需要连接不同的wifi。因为网管有做隔离所以相同的wifi无法连接代理 。
电脑防火墙需要处于关闭状态。
手机上的浏览器无法抓包时可以尝试清空缓存,特别是UC浏览器
4. 手机查看https内容
iOS:
ios手机浏览器访问chls.pro/ssl,安装证书后,进入设置-通用-关于本机-证书信任设置-选择刚才安装的证书-开启信任
Android:
电脑导出charles证书,传送到手机上,手机上在设置里面选择从存储设备安装证书,安装完就可以了
5.Charles确认连接
手机上任意打开一个网址,这是Charles会弹出一个框让你确认是否代理,点击allow就可以了,然后你就会在Charles上发现手机上的请求了。
二、常用功能
1.过滤功能
主要用来过滤掉不需要的域名的抓包信息。
操作步骤:
菜单栏->proxy->recording setting
include:需要抓取的域
exclude:不需要抓取的域
选择相应的选项后点击add按钮,弹出的界面中protocol选择相应的协议http或者https,在Host填入需要的域。
例如:protocol:http Host:newupload.baidu.com
2.网速模拟功能
可以看在低网速下的相关功能的表现。
操作步骤:
菜单栏->proxy->throttle settings
勾选enable throttling选项后选择需要的网速
Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(字节)(MTU的说明请看百度百科)
配置后可以使用测速软件测试下现在的网速,确保生效
3.断点功能
可以绕过客户端判断,直接往服务器发消息。测试接口的各种边界情况,比如出错、超时等表现,Charles的断点+随意篡改。
操作步骤:
菜单栏→proxy→breakpoints
预先设置需要断点的接口。根据相应的选项填入即可
右键→breakpoints
选中抓到的接口后右键选择breakpoints。下次执行时即可断住
设置对应域名的断点:菜单栏→proxy→breakpointssettings(相当于该接口无法请求)
4.Map Remote功能
Map Remote 功能:是将指定的网络请求重定向到另一个网址;可以切换测试环境
操作步骤:
菜单栏->tools->Map Remote
进入Map Remote勾选enable Map Remote
add--》进入edit Mapping
举例将美拍线上接口指向pre环境接口
protocol:协议类型
Host:需要的域名
prot:对应端口
ps:线上api对应https和443端口,beta和pre对应到http和80端口(其他项目需要自个了解后再做定向处理)
5.Map Local功能
Map Local:将某个网络请求重定向到本地的某个文件
操作步骤:
菜单-Tools-Map Local
进入Map Local 勾选enable Map Local
add–进入edit Mapping
填入需要映射本地文件的协议,主机地址,端口号
本地文件可以是自己造的测试数据,也可以是接口返回的数据保存到本地再进行修改,只需先将接口返回数据进行保存到本地:点击某接口response,右击save response。
使用map local功能,请求并不会请求到服务端,会请求本地文件,这是和断点功能不同的地方
6.批量执行功能
可以批量执行或重复执行相同的接口。
操作步骤:
右键→repeat
重复执行接口,只执行一次
右键->repeat advanced
重复执行多次或并发执行
iterations:迭代次数
concurrency:并发数
concurrency为1时,重复执行iterations的次数
concurrency不为1时,并发执行concurrency的次数
7.模拟发送请求功能
charles也可以模拟发送请求,选择你想要改造的接口,点选上面的钢笔进入编辑(可以改参数header任何你能改的信息)
编辑成功后点击Execute执行请求
8.允许重写某个地址的对应key信息
charles允许重写对应域名的key信息,比如更改网页的cookie或是token过期时,方便复现对应问题
9.电脑也允许抓包
Mac :Help--SSL Proxy--Install Charles Root Certificate--这时会打开【钥匙串访问】--解锁系统根证书--找到Charles Proxy CA--打开--选择信任–使用此证书时:始终信任
windows: Help--SSL Proxy--Install Charles Root Certificate--安装证书--下一步--将所有证书放入下列存储--浏览选择受信任的根证书到颁发机构--完成
网友评论