charles全面使用教程及常见功能详解(较详细)
主要功能:
- 抓取http和https请求
- 修改服务器返回内容
- 修改网络请求
- 模拟弱网络
- 其他问题
简介
Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。
Charles 主要的功能包括:
截取 Http 和 Https 网络封包。
支持重发网络请求,方便后端调试。
支持修改网络请求参数。
支持网络请求的截获并动态修改。
支持模拟慢速网络。
1. Charles安装
前提先安装配置好Java环境,官网下载安装Charles:https://www.charlesproxy.com/download/
Charles共享账号: Name: https://zhile.io; Key: 48891cf209c6d32bf4
Charles安装证书:
2. HTTP抓包
(1)查看电脑IP地址
方法一: 打开”运行”(快捷键:win+R键;或者在任务栏的”搜索”按钮中查找并点击”运行”),输入“cmd”后进入命令行窗口,在命令行窗口中输入”ipconfig”命令查看IP
方法二: 在charles中查看 :Help -> Local IP Address
(2)Charles代理设置
接下来打开Charles的代理设置:Proxy->Proxy Settings,设置一下端口号,默认的是8888,这个只要不和其他程序的冲突即可,并且勾选Enable transparent HTTP proxying。
(3)Charles设置Proxy代理
Proxy -> SSL Proxying Settings... 勾选Enable SSL Proxying,点击Add,点击Add,Host设置要抓取的https接口,
Host : * (使用通配符表示检测所有网络请求;Port:443)
比如想抓所有接口的内容,Host填写:*,Port填写:443
完成以上操作,就完成Charles抓取HTTP(S)数据包的所有配置了。
(4)手机端设置
在手机设备、模拟器或者远程浏览器上设置代理,抓取手机设备上的请求包(手机和电脑必须在同一个局域网内,并关闭电脑防火墙、其他代理或者翻墙软件)
第一步:在手机wifi 上设置代理 -> 长按无线网络-->修改网络-->高级选项-->代理 手动-->手动输入输入IP、端口号
服务器IP:PC机器的IP(通过之前介绍的查看IP的方法)
第二步:Charles弹出询问“allow”或者“deny”,点击“allow”按钮允许;出现手机的HTTP请求列表
第三步:如果修改相关配置后,没有出现上面截图信息,可在设置中加入自己手机的IP,如下图:
第四步 安装证书
- 抓取https数据需要在手机上安装证书,HTTPS的抓包需要在HTTP抓包基础上再进行设置;
- Help -> SSL proxying -> Install charles root certificate on a Mobile Device or remote browser…
出现弹窗得到地址chls.pro/ssl
- 在手机自带的系统浏览器输入地址chls.pro/ssl,出现证书安装页面,点击安装,手机设置有密码的输入密码进行安装。安装完证书后,就可以截取手机上的 Https 通讯内容了。不过同样需要注意,默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择 SSL proxy 菜单项。
- 注意2:iOS 10.3系统,需要在设置→通用→关于本机→证书信任设置里面启用完全信任Charles证书
3.Charles 主界面介绍
主要是会话的两种视图模式以及对应的 requet/response 面板组成:
Structure视图
Sequence视图
Structure:树状结构显示,将网络请求按访问的域名分类;
Sequence:水平结构显示,将网络请求按访问的时间排序
Structure视图模式下,列表会按照域名来归类所有请求,而Sequence视图则是按照请求发生的顺序来展示;如果不习惯Sequence默认的上下视图,可以修改为类似Fiddler的左右视图模式(有更符合眼睛的习惯):快捷键 cmd+,->Charles Preferences->Viewers选择Sequence view layout为Tall即可;
常用的功能:
Save response: 保存response数据到文件中,方便后面用于重定向功能map local...;选择多条记录后再右键就会有Save All...可以方便的把所有response信息一次性导出到某个目录中,然后通过map local...结合通配符来批量重定向请求;
Export: 可以将选中的多个会话信息完整导出成文件(*.chls),通过File - import来导入chls文件,方便不同开发人员进行调试或者现象复现分析;
repeat advanced...: 可以重发次数以及并发数,用于进行简单的服务器压测,
Filter : 过滤,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求
Overview : 查看这次请求的详细内容,例如耗时详细列车了请求开始时间、结束时间,响应开始时间、结束时间,总耗时、DNS耗时、网络延时等。
对于Size也详细列出了请求头大小、响应头大小、压缩比例等内容。
URL:进行网络请求的链接;
Status:当前状态,complete表示请求完成;
Responce Code:返回码。不同的接口,不同的请求结果,返回码都不同;
Protocol:使用的协议;
Method:请求方式,如GET请求,POST请求等;
Kept Alive:判断当前是否正在链接(活跃);
Content-Type:发送的内容类型,如这里用的是XML文本,以UTF8的方式发送;
Client Address:客户端的IP地址;
Remote Address:远程服务器的IP;
Timing:
Request Start Time:请求开始的时间;
Request End Time:请求结束的时间;
Response Start Time:返回开始的时间;
Response End Time : 返回结束的时间;
Duration : 总时间;
Size:
Request Header :请求的头部大小;
Response Header:返回的头部大小;
Request : 请求发送的大小;
Response:返回数据的大小;
Total:所有数据大小;
Request Compression : 请求压缩;
Response Compression : 返回压缩;
Request : 查看请求内容(底下的Headers,Query String,Cookies,Raw。)
Headers:发送请求的头部信息;
Query String : 发送参数列表;
Cookies: 浏览器缓存;
Raw:发送的原生数据,包括了头部和参数;
Reponse : 查看响应内容
Headers:是返回的头部信息;
Text:返回信息(除去头部)后的文本;
Hex:返回信息的16进制表示;
XML:我返回的数据是XML。如果你返回的是JSON,这里就会显示JSON;
XML Text:如果你返回JSON,这里会显示JSON Text;
Raw:返回的所有原生数据,包括头部;
Summary: 查看发送数据的一些简要信息(主机,状态码,数据的类型,header和body大下,加载时间,总时间)
Chart: Summary中简要信息以图表形式展示
Notes: 其他信息
抓包接口测试需要了解下相关HTTP状态码所对应说明
4.菜单
4.1Proxy 菜单
这个用得比较多,在这里设置跟踪捕捉过滤功能:
Proxy菜单
4.2过滤( Recording Settings )
Recording Settings
设置会话捕捉条件,include 面板用于启用/停止可以捕捉/显示的会话;
exclude 表示不显示的会话,在会话列表中右键选择 ignore 时,对应的url会出现在这里;
record_setting_add
比较好用的是过滤条件支持通配符,*表示任意多个字符,?表示一个字符,如Protocol中有http,https和 "",选择空白或者输入*都可以表示任意协议的请求;
也可以通过主界面底部的Filter来简单设置过滤条件,不支持通配符
filter
还有一种方法就是在一个网址上右击,选择Focus,然后其他的请求就会被放到一个叫Other Host的文件夹里面,这样也达到了过滤的目的。
4.3模拟网络环境(Throttle Settings)
4.3.1弱网设置throttle_settings
- 在这里选择要模拟的网络环境,也可以自定义指定的url进行网络环境(勾选only....),通过该功能,模拟不同的网络带宽、延时率、丢包率。
- 弱网菜单介绍
- 配置参数解析:
bandwidth —— 带宽,即上行、下行数据传输速度
utilisation —— 带宽可用率,大部分modern是100%
round-trip latency —— 第一个请求的时延,单位是ms。
MTU —— 最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况。
Releability —— 指连接的可靠性。这里指的是10kb的可靠率。用于模拟网络不稳定。
Stability —— 连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。
- 这里设置完成后通过Proxy-Start Throttling(Ctrl+T)或者常用工具栏按钮来启用或停止;
- 关于网络网络制式上下行频率、速率比较2G、3G、4G网络制式上下行频率、速率比较_猫猫猫猫猫大人的博客-CSDN博客_4g上行速率和下行速率
5.断点功能
- 方法:
- 在会话列表中右键点击某个会话,然后在菜单中选择Breakpoints;
- 通过Proxy-Breakpoint settings...中手动新建/启用某个断点;
- 要求勾选enable breakpoints,之后当下次再有该请求时,会自动进入断点模式;
- 对断点进行设置
修改请求后发送
6.常见问题解决
1 . 手机无法抓包的问题
检查是否配置好代理IP,端口号
检查是否与电脑在同一个局域网
检查是否关闭防火墙,代理,翻墙软件
弹出询问点击“allow”或者“deny”时,误点“deny”,关闭charles重启,手机再次浏览则会重新弹出询问
2 . 解决request和response信息中的中文乱码问题
方法一 :修改charles windows版本安装目录下也有一个Charles.ini的配置文件
修改后的配置文件 添加-Dfile.encoding=UTF-8即可。
通过以上方法就可以解决Request和Response的中文乱码问题了。
3.设置代理后,浏览器打不开网页
浏览器--设置--打开代理设置--局域网设置--去除代理服务器下图选项后-确定
charles全面使用教程及常见功能详解(较详细)相关推荐
- docker 20安装教程及常见命令详解
本文笔记学习来自B站狂神说 视频链接: https://www.bilibili.com/video/BV1og4y1q7M4?p=14 docker安装 先卸载系统之前的老版本docker sudo ...
- 操作系统:电脑系统盘常见文件夹的功能详解
目录 一.C盘根目录常见文件夹 二.隐藏文件夹 相信很多电脑小白对于系统C盘每个文件夹的功能不是很清楚,今天小编给大家介绍一下电脑系统盘文件的功能详解,希望对大家能有所帮助! 一.C盘根目录常见文件夹 ...
- recovery是什么意思?recovery功能详解刷机教程
Recovery是什么意思?对于很多刚接触到安卓手机的同学这是一件比较头疼的事情.那么究竟Recovery是什么意思?他又可以帮助我们做一些什么呢?小编今天就给大家做一个比较详细的recovery功能 ...
- CorelDRAW Graphics Suite2023新功能详解下载教程
CorelDRAW2023版本有效快速创作,充分体现设计者创意,一款全面图形设计软件.应用广告宣传.艺术作品.纺织业等各个行业. CorelDRAW Graphics Suite涵盖了全部CorelD ...
- 网摘精灵教程:网摘精灵延时功能详解
网摘精灵教程:网摘精灵延时功能详解 网摘精灵软件里面有个功能设置项是"延时",这个延时如何设置呢? 简单地说,就是发送数据一次,最多花费多久时间.这个是以秒为单位的,设置值应该是数 ...
- python 元类 type_Python 使用元类type创建类对象常见应用详解
本文实例讲述了Python 使用元类type创建类对象.分享给大家供大家参考,具体如下: type("123") 可以查看变量的类型;同时 type("类名", ...
- 【STM32】标准库与HAL库对照学习教程八--串口通信详解
[STM32]标准库与HAL库对照学习教程八--串口通信详解 一.前言 二.准备工作 三.通信的基本概念 1.通信方式 2.串行通信与并行通信 (1)串行通信 (2)并行通信 3.异步通信与同步通信 ...
- mysql防止超发_PHP+redis实现的限制抢购防止商品超发功能详解
本文实例讲述了PHP+redis实现的限制抢购防止商品超发功能.分享给大家供大家参考,具体如下: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用.redis中key的原子自 ...
- AndroidManifest.xml文件配置教程及相关指令详解
AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
最新文章
- clipse3.2/3.3中指定第三方包(JAR)和类路径(CLASSPATH)的几个方法(转做笔记)
- python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧
- 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构(附源码)
- Studio右键选项中没有Git?
- 使用相对长度单位rem布局网页内容
- java安全 ——JAAS(Java 认证和授权服务)开发指南
- js提交出现post错误_阿里云的 Node.js 稳定性实践
- Kubernetes复杂吗?Cube-新的容器管理服务产品
- GT_Trace的使用
- git rebase和 merge的区别
- 【转】用VC2008编译最新SVN版本OpenCV源代码
- 经典代码d359f1d82912ef1b1cd784bd28829325
- 老程序员应该记住的 5 件事
- iperf3 linux源码下载
- 建设银行和工商银行的网银安全措施
- C++ 类成员函数的函数指针
- Symantec Endpoint Protection 14.3 RU3 (macOS, Linux, Windows) - 端点安全解决方案
- SUST OJ 1641: 电子狗的心事
- php+中文分词scws+sphinx+mysql打造千万级数据全文搜索
- python爬虫豆瓣电影短评_【Python爬虫】BeautifulSoup爬取豆瓣电影短评
热门文章
- 写在汇编语言开课之前
- 未来教育二级MS Office无纸化考试模拟软件
- 学习java需要用到哪些软件?
- win7卡在正在启动windows界面_Windows系统电脑卡在开机界面进不去系统解决方法
- 如何在软件里显示编译时间?__DATE__和__TIME__
- 计算机毕业论文性能测试怎么写,计算机毕业论文撰写技巧
- java服务器 c 服务器_c 编写服务器
- Nexus 的下载和部署
- jmeter开发导入excel脚本
- Excel 中VBA脚本的简单应用