- Charles 简介 总结 HTTP 抓包 代理 MD
目录
Markdown版本笔记 | 我的GitHub首页 | 我的博客 | 我的微信 | 我的邮箱 |
---|---|---|---|---|
MyAndroidBlogs | baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
目录
Charles 简介
charles是一个HTTP代理服务器、HTTP监视器、反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。
Charles 通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java
写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要先装好Java
环境。
Charles的主要功能:
- 截取 Http 和 Https 网络封包
- 支持重发网络请求,方便后端调试
- 支持修改网络请求参数
- 支持网络请求的截获并动态修改
- 支持模拟慢速网络
Charles 破解工具
用法:输入RegisterName
(此名称随意,用于显示 Registered to xxx),选择本地已安装的版本,点击生成,并下载charles.jar文件替换本地\Charles\lib\charles.jar
文件
界面介绍
主菜单
- 清除会话记录:点击之后可清除抓取到的所有请求
- 开始/停止抓取会话记录:红色说明正在抓取请求,灰色说明目前不在抓取请求状态
- 开启/停止限流:灰色乌龟是网速设置正常,绿色乌龟指慢速网速开启了
- 开启/关闭断点:灰色说明断点未开启,红色说明在使用断点
- 编辑会话:点击之后可以修改请求的内容,修改后可执行此请求
- 重新发一遍请求:先选定某一请求,点击该图标则请求会被再次发送
- 验证回话
- 工具
- 配置
会话右键菜单
- Repeat:重复执行请求,和主菜单中的功能一样
- Repeat Advanced:可以指定重复的次数,这样可以选中多会话,在右侧的chart查看请求的时间等性能
- Focus:在某个域名下点击Focus,会将当前域名放到顶部,没有 Focus 的域名统一放到下面的 Other Hosts 下。可以在
View -> Focused Hosts
中统一编辑 - Black List:黑名单中的域名不能联网,可以在
Toos -> Black List/Write List
下统一更改 - Write List:白名单开启后,只有白名单中的网络可以访问网络,不在白名单中的不能访问网络。如果一个域名既在 Black List 中也在 Write List 中,则也不能访问网络
- Export:导出会话 Session 保存到本地,然后下次可以通过
File -> Open Session
打开本地的 Session - Compose:即工具栏上的钢笔的图标,编辑请求然后执行
两种显示模式
Charles有两种显示模式,Stucture 和Sequence,其实并没啥大的区别。
Structure
按照不同hosts域名分组展示请求。
点击+
之后便可以展开该 host 域名下的所有请求,可以很清晰的看到请求的数据结构
,可以很清晰的去分析和处理数据,适合对单一
系列的访问请求从宏观上进行把握,可以快速定位。
Sequence
按照请求的顺序展示请求。
可以看到全部请求
,适合精确定位
内容,因为每条 sequence 都有size、status等属性信息,方便快速定位这条结果的价值。
内容区域
请求内容
- Overview:会展示该请求的一个大体情况,例如:请求头、请求开始时间、响应大小、自己的notes等
- content:请求和响应的详细内容,配合下面的导航栏进行查看
- summary:展示一个该请求的大体资源分布情况,例如:服务器响应了多长时间,host是什么等等
- chart:以表格形式告诉我们一个响应时间的分布情况
- notes:点击之后自己可以对该请求记录一些东西,方便后续查看该接口的用途,可在overview中查看
request 导航栏
- header :详细的请求头信息
- query string :请求时携带的参数
- cookies :以表格的形式展示请求中的 Cookie 信息
- raw :完整的原始请求信息
response 导航栏
- header :详细的响应头信息
- text :以文本形式显示响应体
- hex、compressed :以十六进制、压缩形式显示响应体,一般不予查看
- JavaScript、json、json text:以json形式显示响应体,区别不大
- raw :完整的原始响应信息
抓包
HTTP 抓包
原理:
当你使用代理服务器后,所有的 HTTP 请求,都是先发到代理服务器,然后由代理服务器重新包装后,再发给目标服务器;响应也是如此,代理服务器先接收来自目标服务器的响应,然后包装后发给客户端,从而在代理服务器上可以实现抓包。
使用方式:
- 工具栏选择
Proxy
->Proxy Settings
,并且勾选Enable transparent Http proxying
,设置一个端口号 - 在手机端打开你的 Wifi 设置,长按已经连接的 Wifi,继续点击进入设置页面,勾上
[手动代理]
选项,代理服务器主机名、端口号
填写 Charles 上的配置的 - 当手机连接上代理后并有网络请求时,Charles 会弹出相应的提示框,点击
Allow
即可
HTTPS 抓包
完成上述配置即可以对手机端发送的 HTTP 请求进行抓包。但由于 Chrles 属于代理服务器,缺少SSL
证书,无法对HTTPS
请求进行抓包,需进行如下配置。
方式一:
- 点击
Proxy
->SSL Proxying Settings
,勾选上Enable SSL Proxying
- 点击
Add Host
填写需要代理的 host 及端口号,支持通配符*
,如果两者都是*
,则会代理所有 host 的请求 - 点击
Help
->SSL Proxying
->Install Charles Root Certificate on a Mobile Device
出现弹窗 - 在手机浏览器输入地址
chls.pro/ssl
,出现证书下载页面,下载并安装
方式二:
- 打
Help
->SSL Proxying
->Save Charles Root Certificat
-> 输入文件名(如bqt.pem
),文件格式默认.pem
格式,名称随意 - 获取证书在安卓系统中的文件名:
openssl x509 -subject_hash_old -in bqt.pem
,执行后会生成一个类似1ac7b872
的名称 - 将
bqt.pem
重命名为1ac7b872.0
,必须以.0
格式结尾 - 将
1ac7b872.0
证书 push 到手机adb push 1ac7b872.0 /system/etc/security/cacerts/
目录中,可能需要重启手机才能生效 - 注意:只有 root 过的手机才能通过 push 命令向此目录导入文件
HTTPS 抓包原理
HTTPS通信的大致过程:
- 客户端将自己支持的
加密算法
发送给服务器,请求服务器证书
- 服务器
选取
一组加密算法,并将证书
返回给客户端 - 客户端
校验
证书合法性,生成随机对称密钥
,用公钥加密后发送给服务器
- 服务器
用私钥解密出对称密钥
,返回一个响应,HTTPS连接建立完成 - 随后双方通过这个
对称密钥
进行安全的数据通信
Charles 作为一个中间人代理,当浏览器和服务器通信时,Charles 接收服务器返回给客户端的证书
,但动态生成一张证书发送给客户端
,也就是说 Charles 作为中间代理在客户端和服务器之间通信,所以通信的数据可以被 Charles 拦截并解密。
由于 Charles 更改了证书,客户端(例如浏览器)校验不通过会给出安全警告,必须安装 Charles 的证书后才能进行正常访问。
请求重定向 Map remote
当请求这个链接时,将请求重定向到自己定义的一个链接,将其返回值当做自己的返回值。
实际开发时,有这样的场景,服务端线上版本有bug,你在本地修改程序后,需要模拟实际的线上环境,来验证程序的正确性,最直接的方法就是让客户端修改一下APP的调用地址
到你本机,然后重新打一个版本供你模拟测试,这样虽然可以,但效率极其低下,然而Charles为我们解决了这个问题。
两种配置方式:
- 会话列表中,右击需要重定向的请求 -> 点击Map Remote -> 将会自动带入
需要重定向的链接(Map from)
,配置好实际请求的链接(Map to)
,点击OK即可 - 工具栏处,Tools -> Map Remote -> 勾选Enable选项 -> 点击 Add 添加需要重定向的请求
注意:
- To map from a path and its subdirectories you must end the path with a
*
. - To map an entire host leave the path blank. 要映射整个主机,请将路径留空。
响应重定向 Map local
重定向到本地的文件内容作为返回值。
两种配置方式:
- 会话列表中,右击需要重定向的请求 -> 点击Map local -> 将会自动带入入
需要重定向的链接(Map from)
,选择本地需要被重定向到的目标文件(Map to)
,点击OK即可 - 工具栏处,Tools -> Map local -> 勾选Enable选项 -> 点击 Add 添加需要重定向的请求
使用技巧
断点调试
Intercept and edit requests and responses before they are sent and received
除了修改映射的方法,通过设置断点也可以实现想要的效果。和我们在 IDE 上设置断点一样,在断点处会进入调试模式,请求会暂时中断,这时我们可以进行一些自定义的操作。
设置 Charless 断点
Proxy -> Breakpoint Settings -> 勾选 Enable Breakpoints,点击 Add 添加
对指定的URL开启断点功能
选择一个URL链接 -> 右键开启菜单 -> 选择 Breakpoints 即可开启此请求的断点。这样Charles会遇到此请求时会弹出中断对话框
。
编辑请求与响应的内容
- 在中断对话框中,用户可以点击 Edit Request 来编辑请求的内容,编辑完成后然后点击
Execute
发出去这个请求给服务端。 - 在 Edit Request 对话中点击 Execute 发出请求后,服务端返回来数据后,用户点击 Edit Response 可对响应内容进行编辑,完成后然后点击 Execute 发出去这个数据给客户端。
需要注意一点:通过断点的方式会存在一定的问题。数据被拦截后,客户端的请求超时时长
是不会停止计算的,如果没在设置的超时时间内返回数据,本次请求也就按失败处理了。
过滤抓取请求
开始抓包后,随着时间的推移,抓取到的网络包越来越多,这时我们可以使用过滤功能,来过滤出我们想要的网络请求。
在 Proxy -> Recording Settings
中可以设置网络包的过滤选项,过滤选项中有 Include 和 Exclude 两种选项,只有当 Include 为空时,Exclude 中的设置才会生效。过滤条件支持通配符。
Include
- Only requests that match one of the locations below will be recorded.
- If this list is empty , all requests will be recorded unless otherwise excluded. 除非另有排除。
模拟网络限速
在做移动端开发的时候,我们常常需要模拟慢速网
络或者高延迟
的网络,以测试在移动网络下应用的表现是否正常。Charles对此需求提供了很好的支持。
在Charles的菜单上,选择 Proxy -> Throttle Setting
项,在之后弹出的对话框中,我们可以勾选上Enable Throttling
,然后设置 Throttle Preset(限流预值) 等。
也可以通过点击工具栏上小乌龟
的图标开启或停止限流。
给服务器做压力测试
我们可以使用 Charles 的Repeat
功能来简单地测试服务器的并发处理能力
,方法如下:
我们在想打压的网络请求上右击,然后选择Repeat Advanced
菜单项,接着我们就可以在弹出的对话框中,选择打压的并发线程数
以及打压次数
,确定之后,即可开始打压。
一些写得很弱的投票网站,也可以用这个办法来快速投票。
- Charles 简介 总结 HTTP 抓包 代理 MD的更多相关文章
- Fiddler简介以及web抓包
Fiddler简介以及web抓包 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.Fiddler简介简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联 ...
- Fiddler简介与Web抓包,远程抓包(IE、360、谷歌、火狐)
Fiddler简介以及web抓包 一.Fiddler简介 简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯.网上简介很多,我们不多说. 二 ...
- 使用Charles进行网络请求抓包解析
使用Charles进行网络请求抓包解析 0. 懒人的福音(⌐■_■)(破解版下载地址,记得安装java库支持) http://pan.baidu.com/s/1c08ksMW 1. 查看电脑的ip地址 ...
- 使用Charles进行移动APP抓包分析
一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 目前Charles ...
- 1. charles安装配置与抓包详解
Charles简介Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发 ...
- iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解
写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教程,于是待问题解决后抽时间截了图,自己写一遍封存在博客园中以便以后随时查阅. charles又名青花瓷,在iOS ...
- iOS安全攻防之使用 Charles 进行网络数据抓包 和 Paros 网络抓包
Charles 是 Mac 系统下常用的网路抓包工具(Paros 也不错),windows 下常用 fiddler.正版的 Charles 是收费的(PS:支持正版),天朝人民比较喜欢破解版的Char ...
- 【Fiddler学习】Fiddler简介和Web抓包应用(转)
一.Fiddler是什么? Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的进出Fiddler的数据. Fiddler 要比其 ...
- 不同局域网如何利用charles对app进行抓包
晚上遇到了一种尴尬的场景:电脑并没有无线网卡,电脑是通过有线连接的,但是手机连的是公共的wifi,二者并不在同一个网段 在试过很多办法无解后,终于百度出一种"曲线救国"的办法(以荣 ...
随机推荐
- phpstorm分别在Mac和Windows下启动命令行,并启用ssh
Mac:在terminal下运行 sudo -i 输入密码 就可以用ssh IP:端口 命令行登录了 DAssist是一个命令行开发辅助,可直接在系统命令行工具中使用,Linux和MacOS等自带 ...
- Flink流式计算
Structured Streaming A stream is converted into a dynamic table. A continuous query is evaluated on ...
- 编写合格的C代码(1):通过编译选项将特定警告视为错误
目录 快速设定 向错误的执念开炮,向C编译器开炮 编译警告应当被忽略吗?warning不重要吗? 个人总结的应当视作error的warning 1. 函数没有声明就使用 2. 函数虽然有声明,但是声明 ...
- Java常用关键字的原理及用法
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10843135.html 一:transient 用途:Java中一个类在定义时如果实现了Serilizabl ...
- java static学习
原创,转载请注明来源sogeisetsu的博客园 static,在类里面定义公共的属性,它可以统一修改,并只占一个内存.从而达到方便修改和少占内存的目的 先放上代码,您可以先越过代码,看后面的讲解内容 ...
- 201671030113 李星宇 实验十四 团队项目评审&课程学习总结
项目 内容 所属课程 [所属课程(https://www.cnblogs.com/nwnu-daizh/) 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 ...
- gitlab的搭建和使用(转)
工作当中常用的GitHub比较好用,但是安全性不是太强,因为github完全开源的,安全性不高 有空搞一下,先记录几个博客 https://yq.aliyun.com/articles/44531 h ...
- 完美解决该死的ie6下select总是置于最上层bug
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- ToDoList--HttpMediaTypeNotSupportedException
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-url ...
- day 16
Weep no more, no sigh, nor groan. Sorrow calls no time that's gone. 别哭泣,别叹息,别呻吟:悲伤唤不回流逝的时光.