charles 抓包 (一)
在web、app开发中经常需要通过抓包来定位页面、接口返回数据的问题。在mac系统中,charles是一款功能丰富的抓包软件。可以实现app的数据抓包。
工具:charles
附送charles的破解方法(亲测):
// Charles Proxy License
// 适用于Charles任意版本的注册码,谁还会想要使用破解版呢。
// Charles 4.2目前是最新版,可用。
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
charles
是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。
charles功能
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查HTML,CSS和RSS内容是否符合W3C标准。
charles在工作中主要使用的功能
- 将Charles设置成系统代理。勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱。
需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。
- 截取移动设备上的网络请求包
2.1手动重复请求(Repeat,Advanced Repeat)
2.2手动模拟请求(Compose)
2.3修改网络请求内容(Compose) - 过滤网络请求
- 代理转发
- 支持https请求抓包(如果配置了还是抓不到,下面有解决方案)
charles配置 http
(1)配置代理端口号
Proxy -》 Proxy Settings -》 Port,port可以随便指定,这里取默认的8888;
(2)配置手机端代理 ip;
将手机与pc端连接同一个无线网络,Android手机的网络代理一般在设置页面,点击当前连着的wifi到网络详情,在(小米8)下方手动修改代理配置,然后将你的电脑ip(例如:192.168.2.103)和第一步中配置的端口号(8888)填写到手机上即可。如下图:
查看本机IP地址:Help -> Local IP Addresses
配置手机代理:
以上的配置就可以解决http的抓包。(如何抓,设断点、map、补充)
charles配置 https
这时,当查看https的包时,会发现response是乱码,或者处于⬆️吊死的请求状态。这时候就要设置https的相关配置。
(1)添加SSL Proxiyng
具体步骤是:Proxy -》 SSL Proxiyng Settings -》勾选“Enable SSL Proxying”,并点击下方的Add,你可以这样配置:
host是你要抓的域名或者ip(这里用通配符*,表示抓去所有的https请求),port为443。
(2)下载手机端、mac端的ssl证书
mac端证书
如果是v3.10 以前的版本首先去 http://www.charlesproxy.com/ssl.zip下载ca证书,然后双击 .crt 文件,选择「总是信任」按钮,在钥匙串访问中即可看到添加成功的证书。如果是v3.10以后的在菜单中找到 Help -> SSL Proxying -> Install Charles Root Certificate.
添加好证书之后,右键证书显示简介,点击后点击信任,选则始终信任。
手机端证书
charles 执行以下步骤:Help -> SSL Proxying ->Install Charles Root Certificate on a Mobile Device…
按照图中的说明在手机浏览器中打开安装证书。
好了大功告成,现在就应该抓包电脑浏览器和手机app的数据了;
问题:
为什么有时候抓不到包?
检查一下是不是启动了代理上网,关掉重启就可以了(翻墙的)
这是笔者遇到的问题,因为笔者使用的是代理上网方式,这可能根charles的代理有所冲突,解决方法是,设置 -> 网络 -> Wifi -> 高级 -> 代理,在左侧的配置协议列表中取消勾选"自动发现代理"和“自动代理配置”。
重启charles,再尝试一下,看能否charles抓取mac的网络请求包。
最新文章
- Windows环境下vscode-go安装笔记
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
- IT关键词,发现与更新,点成线,线成面,面成体
- mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)
- 整理常用的iOS第三方资源
- WaitAny, WaitAll 和 SignalAndWait
- 横屏下的ImagePickerController
- Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name. 的解决方法
- Codeforces Round #236 (Div. 2)
- Java虚拟机--字节码指令集
- lua协程并发下载简单测试
- Kendo UI开发教程(6): Kendo DataSource 概述
- radiobutton以及checkbox背景图片拉伸变形的问题
- malloc without free, what happens?
- C语言博客作业03--函数
- shell 运算符章节笔记
- wepy打开页面首次不显示,但是数据已经有了
- Asp.net core 学习笔记 ( DI 依赖注入 )
- hdu 5053 (2014上海网赛L题 求立方和)
- Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?