抓包工具之Charles(windows)
激活码: https://www.zzzmode.com/mytools/charles/
官方地址:https://www.charlesproxy.com/
PC端如何配置才能抓取到https请求:否则打开浏览器会提示不安全的访问
1. 安装证书:在顶部工具栏中选择“help--Install Charles CA SSL Certificate”;

2. 然后会弹出证书信息,选择安装证书,接下来将证书存储改为:受信任的根证书颁发机构,接下来都点“下一步”;

.最后一步前可能会弹一个安全警告的弹窗,点“是”,最后完成;
注意点:
1) 存储位置为"本地计算机"
2) 证书存储的时候, 要选择"将所有的证书都放入下列存储"
3)选择证书存储"受信任的证书颁发机构"
否则会出现https无法正常抓取的问题
3. 修改charles的proxy settings:选择“Proxy--Proxy Settings”,弹出proxy设置选项卡,勾选“Enabling transparent HTTP proxying”;

4. 再选择“Proxy—SSL Proxy Settings”,勾选“Enable SSL Proxying”,在Location部分选择add,如下图所示,host中填“*”,port中填“*”,表示任务域名的数据;

5. 保存成功后,这时访问PC浏览器,再去抓取https的请求,就能正常查看里面的数据信息了。
手机端如何配置才能抓取到https请求:
1. 先打开Charles 的代理功能:在菜单栏上选择“Proxy -> Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying”;

2. 获取 Charles 运行的电脑的 IP :在Charles 的顶部菜单,点击“Help -> Local IP Address”,即可在弹出的对话框中看到 IP 地址;

3. 在手机上无线局域网配置中,选中所连的wifi,选择手动配置代理:服务器主机填写charles运行所在的电脑IP,端口号默认都填写8888,保存;这个时候只能抓取到手机端的http的请求,还需要以下设置才能抓到https请求;

4. 在Charles 的顶部菜单,点击“Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser”;

然后会出现一个弹窗,点击弹窗中“确定”;

5.打开手机浏览器,输入chls.pro/ssl,访问该地址会下载charles证书,将此证书安装到手机上;
6.此时用手机访问各请求时,会先在电脑运行的charles中弹出一个对话框请求确认连接,点击确认允许;

7.这样便可以在安卓手机端抓取https请求了。
8.如果是IOS手机,还需要在手机中开启证书信任:进入“设置—>通用—>关于本机—>证书信任设置”,开启刚才安装的charles证书即可。
重要设置项:
1. 安装证书
Help -> SSL Proxying -> Install Charles Root Certificate
2.设置https端口
菜单栏 Proxy -> SSL Proxying Settings 打开 SSL Proxying Settings配置面板,
因为HTTPS是走的 443端口,所以这里设置一个443端口,*代表匹配所有,意思为:代理所有域名的443端口
[使用]
1.请求转发 Tools > Map Remote
场景:例如在获取微信链接参数的时候, 可以在访问该链接的时候,变成访问本地的某个接口, 这样就可以将想要的数据保存到本地来使用
Tools > Map Remote 配置对应的远程服务于本地服务(可以使用flask搭建一个web服务来接收)

使用场景:
1. 将线上资源映射到本地开发服务器 www.com -> localhost,以此实现本地调试线上。
2.将线上服务调用的参数不用复制,粘贴到postman等工具上,在本地环境进行调试, 使用代理即可解决
2.Tools > Map Local
Map Local 工具能够将请求映射到本地文件,也就是将本地文件作为某个请求的返回。Map Local 和 Map Remote 相辅相成,一个映射到服务器,一个映射到本地文件。
如果说 Map Remote 是大面积覆盖,那么 Map Local 就是单点爆破。这对快速调试某个线上静态资源很方便。
💡 比如把某个线上 js 文件下载到本地,修改修改,然后通过 Map Local 这个本地文件映射就可以直接看到效果进行验证。不必走完 CI,CD 这一套焦头烂额的等待了。
3.Tools > Rewrite
Rewrite 工具能够让你重写覆盖请求的任意部分,包括 request 和 response 的 header 和 body。
下面是一些使用场景:
- 重写 response header 实现 cors 跨域
- 重写 cookie 实现一些校验
- 重写 body 实现类似 Map Local 的效果
4.Tools > DNS Spoofing
DNS 欺骗工具可以将一个域名映射到一个 IP 地址下,和系统 hosts 文件的作用一样。
实际上,在 Map Remote 里配置 example.com -> 20.205.243.166 能实现相同的效果。
💡 有了这个功能,我卸载了 hosts 管理软件。
5.Proxy > External Proxy
Charles 本身是一个代理,它还支持再配一层外部代理,通常是 VPN。请求会先过 Charles,再走外部代理。
💡 例如,想要抓包的话需要开启 Charles 的 macOS Proxy,此时 Charles 会自动设置系统代理。
一般会遇到下载的证书并不能直接进行安装,这里写一下华为手机的安装流程:
1. charles中将证书保存在本地,保存时直接选择.cer格式,将证书通过微信等方式拷贝到手机中(推荐)
Help > SSL Proxying > Save Charles Root Certificate

或者手机上访问 chls.pro/ssl进行下载(偶尔出现无法访问的情况), 并修改后缀为cer
2.找到证书并安装
设置 > 安全 > 更多安全设置 > 加密和凭证 > 从存储设备安装 > CA证书 选择并安装即可
////////////////////////////////////////////////// 注册码-解除限制
一般安装成功之后的使用是试用版本, 打开过几分钟就需要关闭, 这里可以使用在线站点进行注册码的生成, 然后在 Help > Register Charles中填写相应的信息即可
https://www.zzzmode.com/mytools/charles/
3.有时候 我们希望在有一个手机上安装了一次证书,在不同的电脑端也不需要换Charles证书的时候, 就需要将这个证书拷贝到多个设备中即可
操作步骤:
1) 一般charles的默认根证书存放位置是C:\Users\用户\AppData\Roaming\Charles\Data\ca目录, 你也可以使用Everything文件搜索工具,搜索charles-proxy-ssl-proxying-certificate.pem来定位具体位置

2)将已经可以正常链接手机并访问https的这台电脑上,这个证书复制拷贝到其他电脑上即可
注:可以备份下这三个文件,以后重装吧系统就可以拿出来使用, 不用重复在电脑上安装证书了
常见问题:
1.如果安装证书之后, 出现“时钟太快”或证书不生效,请尝试重启电脑
更多参考:
- https://blog.51cto.com/u_14629396/5441422
- https://www.jianshu.com/p/47093756daa4
- 微信小程序抓包:https://developers.weixin.qq.com/miniprogram/security/gateway/test/snifferpacket.html

浙公网安备 33010602011771号