使用Charles进行网络抓包
一、安装Charles
二、使用
1.http抓包
1.1 现在我们默认是在进行iOS开发,首先确保iPhone和Mac是在同一个局域网下(连同一个WiFi)。然后查看Mac的IP地址(打开网络偏好设置即可看到),假设我的IP地址为:192.168.1.2. 然后进入iPhone,进行HTTP代理设置,从关闭改为手动,在服务器位置输入刚才Mac的IP地址。在端口位置输入8888.如图:
1.2 然后就可以开始进行抓包了。打开Charles,会弹出是否允许,选择Allow即可。然后在iPhone上打开你要抓包的App,在Charles上就会看到抓包结果:
2.https抓包
Https抓包配置比Http抓包配置麻烦一点点。首先把证书(在压缩包中的crt文件)安装到iPhone上(装证书通过邮件的方式发送到iphone上的邮件应用中,点击即可自动安装)。安装完成以后,其他配置都和http抓包一样。额外的配置如下(我是最新的3.11版本,配置可能与其他网上3.x版本的配置稍有不同):
2.1 点击Proxy-->SSL Proxying Settings ,就会出现如下界面:
勾选Enable SSL Proxying,然后点击 Add 按钮,按下图格式进行配置(*号为通配符,表示可以对任意主机的任意端口的请求进行抓包,也可以指定某一主机和端口):
2.3 经过以上步骤,就可以进行Https抓包了。其他操作过程同http抓包。
注意:当你抓包结束后,就要去iPhone里把网络的HTTP代理关闭,否则可能会造成无法上网的情况。
三、抓包结果详解
3.1 http抓包结果
如果按照上面的过程配置好后,在手机上使用任意应用请求网络后(注意一定要用真机才可以),就会得到http请求的抓包结果,如下图:
左侧是显示结构:Structure是树状结构显示,Sequence是水平结构显示。两者基本类似,我以树状结构来进行介绍。左侧的树状结构是我进行网络请求的url链接,每一个层级表示了以“/”隔开的子域名。通过上述的代码也可以看到我GET请求的url链接是:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=18888888888&userId=
右侧是详情页,其中第一个Overview是概览。我对一些字段进行介绍:
(1)URL:我进行网络请求的链接;
(2)Status:当前状态,complete表示请求完成;
(3)Responce Code:返回码。不同的接口,不同的请求结果,返回码都不同;
(4)Protocol:使用的协议;
(5)Method:请求方式,如GET请求,POST请求等;
(6)Kept Alive:判断当前是否正在链接(活跃);
(7)Content-Type:发送的内容类型,如这里用的是XML文本,以UTF8的方式发送;
(8)Client Address:客户端的IP地址;
(9)Remote Address:远程服务器的IP;
Timing:
(10)Request Start Time:请求开始的时间;
(11)Request End Time:请求结束的时间;
(12)Response Start Time:返回开始的时间;
(13)Response End Time:返回结束的时间;
Size:
(14)Request Header :请求的头部大小;
(15)Request Header:返回的头部大小;
(16)Request : 请求发送的大小;
(17)Response:返回数据的大小;
(18)Total:所有数据大小;
(19)Request Compression :请求压缩;
(20)Response Compression: 返回压缩;
第二个页面"Request"是关于请求发送的。下面的Headers,Query String,Raw。
(1)Headers:发送请求的头部信息;
(2)Query String:发送参数列表;
(3)Raw:发送的原生数据,包括了头部和参数;
右侧的"Response"的是关于所有返回信息的。
(1)Headers:是返回的头部信息;
(2)Text:返回信息(除去头部)后的文本;
(3)Hex:返回信息的16进制表示;
(4)XML:我返回的数据是XML。如果你返回的是JSON,这里就会显示JSON;
(5)XML Text:如果你返回JSON,这里会显示JSON Text;
(6)Raw:返回的所有原生数据,包括头部;
"Summary"里面是发送数据的一些简要信息。
"Chart"是一些简要信息的图表表示。
Charles顶部的一些常用的工具栏做一个介绍:
(1)New Session:新建一个会话。也就是在一个新的Charles界面查看网络情况;
(2)Open Session:打开一个之前保存的会话;
(3)Close the current Session:关闭当前的会话;
(4)Save the current Session:保存当前的会话;
(5)Clear the current Session:清空当前的会话(比较方便,常用);
(6)Find Text in the current session:相当于查找功能;
3.2 https抓包结果
由于目前iOS9更改了对于https网络的安全机制,所以还需要在iPhone上安装一个证书,安装方式如下:
在iPhone的Safari浏览器中直接输入网址:http://www.charlesproxy.com/getssl 。进行安装Custom Root证书.安装完成之后可以进入设置-->通用-->描述文件,里面可以看到你所有安装的证书。到目前为止,对于https抓包,至少已经安装了两个证书了,第一个也就是在前面安装的。
现在打开iPhone的任意一个App,查看抓包结果:
其中http打头的都是通过http抓包生成的;https打头的则是通过https抓包生成的。如果你没有配置好https抓包,那么https前面的是一把锁,抓包成功的才是显示蓝色小球。
某一个https抓包结果如下:一些关于使用方式、参数的介绍同http抓包。
使用Charles进行网络抓包的更多相关文章
- CatchPacket网络抓包软件
CatchPacket网络抓包软件 qq 22945088431.技术特点:基于WinPcap库,c# winform2.实现获取机器所有网卡,可任意选择监听3.可以捕获常见网络协议arp dns ...
- 网络抓包wireshark(转)
转自 网络抓包wireshark 抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经 ...
- 跨平台网络抓包工具-Microsoft Message Analyzer
Microsoft Message Analyzer (MMA 2013)是微软最受欢迎的Netmon的最新版本. 在Netmon网络跟踪和排除故障功能的基础上提供了更强大的跨平台网络分析追踪能力.园 ...
- Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布
来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...
- 网络抓包工具-Wireshark学习资料
wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 ...
- 三种经典iPhone上网络抓包方法详解
此文章来自:听云博客 很多时候需要网络抓包分析,在iPhone上抓包稍有不同,下面介绍三种常用的方式.分析工具以wireshark为例. 一.最简单的方式:用PC作为热点,在PC上抓包 优点:简单 缺 ...
- HttpWatch网络抓包工具的使用
HttpWatch网络抓包工具是专为IE浏览器集成的一款网络拽包工具. 是一款强大的网页数据分析软件,是最好用的抓包工具,httpwatch可以抓到上传视屏图片的包,一般的抓包软件是抓不到的.打开 ...
- 网络抓包--Wireshark
Wireshark 是一款非常棒的Unix和Windows上的开源网络协议分析器.它可以实时检测网络通讯数据,也可以检测其抓取的网络通讯数据快照文件.可以通过图形界面浏览这些数据,可以查看网络通讯数据 ...
- Android 下使用tcpdump网络抓包方法
Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...
随机推荐
- SQL GROUP BY 和 ORDER BY 区别
order by 是按表中某字段排列表中数据group by 是按某些字段分类. 例如按 1.按年龄排序表中的记录select * from users order by age 2.按年龄分类表中数 ...
- CAD使用SetxDataString写数据(com接口)
主要用到函数说明: MxDrawEntity::SetxDataString 写一个字符串扩展数据,详细说明如下: 参数 说明 [in] BSTR val 字符串值 szAppName 扩展数据名称 ...
- JavaSE-08 封装
学习要点 封装 访问控制符 包 封装 没有封装的代码有何缺陷? 例如:对狗狗的健康值赋值为-100.如何避免?——使用封装. 封装的概念 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该 ...
- docker数据卷的管理和使用
数据卷的使用,数据库可以保证如果容器出现问题但是数据不丢失的作用,比如MySQL/date下的数据 或者Nginx根目录下的index.html 查看数据卷 [root@docker ~]# dock ...
- Layui表格之动态添加数据(表格多选解决方案)
前言: Layui已经给出了多选记录的解决方案,是在每条数据的前面加上CheckBox,每次选择都有监听.效果是这样: 实现监听的代码如下,这是一种解决选择多条数据的方案: table.on('edi ...
- [Python3网络爬虫开发实战] 3.1.3-解析链接
前面说过,urllib库里还提供了parse这个模块,它定义了处理URL的标准接口,例如实现URL各部分的抽取.合并以及链接转换.它支持如下协议的URL处理:file.ftp.gopher.hdl.h ...
- js 技巧 (三)
//无模式的提示框 function modelessAlert(Msg) { window.showModelessDialog("javascript:alert("&q ...
- python_流程控制
1.if...else 语句 单分支 if 条件: 满足条件后要执行的代码 双分支: """ if 条件: 满足条件执行代码 else: if条件不满足就走这段 & ...
- python字典及相关操作
1.字典 1.1.字典特性 字典是一种key-value的数据类型.key必须可hash,必须为不可变数据类型,且必须是唯一的:value可以存放任意多个值.可修改.可以不唯一:字典是无序的,通过ke ...
- JAVA IO中read()方法的返回值
read()方法的作用是从输入流读取数据的下一个字节,返回的字节的值是一个0~255之间的整数.到达流的末尾返回-1. 刚开始我以为这个返回值表示的是所读取的数据的长度,可是之后在一个示例程序中发现这 ...