Charles 简介 总结 HTTP 抓包 代理 [MD]

摘要:
博客地址我的GitHub我的博客我的微信我的电子邮件baiqiantaobaiqiantaobqt20094baiqiantao@sina.com目录目录目录Charles简介破解工具界面主菜单会话上下文菜单两种显示模式内容区域数据包捕获HTTP数据包捕获HTTPS数据包捕获原理请求重定向映射远程响应重定向映射本地使用断点调试的提示捕获请求模拟网络速度限制压力测试服务器Charles

博文地址

我的GitHub我的博客我的微信我的邮箱
baiqiantaobaiqiantaobqt20094baiqiantao@sina.com

目录

目录
Charles

简介

官方下载地址

charles是一个HTTP代理服务器、HTTP监视器、反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。

Charles 通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要先装好Java环境。

Charles的主要功能:

  • 截取 Http 和 Https 网络封包
  • 支持重发网络请求,方便后端调试
  • 支持修改网络请求参数
  • 支持网络请求的截获并动态修改
  • 支持模拟慢速网络

破解工具

Charles 在线破解工具
blog介绍

用法:输入RegisterName(此名称随意,用于显示 Registered to xxx),选择本地已安装的版本,点击生成,并下载charles.jar文件替换本地Charleslibcharles.jar文件

界面介绍

主菜单

Charles 简介 总结 HTTP 抓包 代理 [MD]第1张

  • 清除会话记录:点击之后可清除抓取到的所有请求
  • 开始/停止抓取会话记录:红色说明正在抓取请求,灰色说明目前不在抓取请求状态
  • 开启/停止限流:灰色乌龟是网速设置正常,绿色乌龟指慢速网速开启了
  • 开启/关闭断点:灰色说明断点未开启,红色说明在使用断点
  • 编辑会话:点击之后可以修改请求的内容,修改后可执行此请求
  • 重新发一遍请求:先选定某一请求,点击该图标则请求会被再次发送
  • 验证回话
  • 工具
  • 配置

会话右键菜单

  • 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菜单项,接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。

一些写得很弱的投票网站,也可以用这个办法来快速投票。

2019-10-29

免责声明:文章转载自《Charles 简介 总结 HTTP 抓包 代理 [MD]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(3)- Serial Downloader模式(sdphost/MfgTool)解决ThinkPhp在nginx下404问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

zookeeper源码 — 五、处理写请求过程

目录 处理写请求总体过程 客户端发起写请求 follower和leader交互过程 follower发送请求给客户端 处理写请求总体过程 zk为了保证分布式数据一致性,使用ZAB协议,在客户端发起一次写请求的时候时候,假设该请求请求到的是follower,follower不会直接处理这个请求,而是转发给leader,由leader发起投票决定该请求最终...

Ubuntu16桥接模式上网并设置静态ip

今天想运行老师发的代码,虚拟机又抽风了,网连不上,ping也主机也ping不通,没办法又忙活半天重新配置了一遍网络这方面,为了方便下次再配置,记录一下方法步骤: 首先设置将虚拟机设置为桥接模式   接下来查看主机的ip,例如我的windows系统,就win+r,接下来输入cmd。命令行输入ipconfig查看本机ip   这样就获取到主机的ip,子网掩码和...

VMware的linux虚拟机配置ip后无法ping通宿主机

VMware的linux虚拟机配置ip(使用eth0)后无法ping通宿主机,同样宿主机无法ping通linux虚拟机。 可能原因:linux虚拟机使用的网卡,与本机使用的网卡不同,配置成与本机一致的网卡即可。 解决办法: 1、打开本机的网络和共享中心,查看当前所使用的网络名称为“本地连接”。 2、如上图所示,点击“更改适配器设置”,进入适配器设置页面,...

div包裹页面后多余部分没有显示,也没滚动条 overflow 属性设置

今天弄个div套着一个页面结果那个页面超出范围后页面没有滚动条可以滚动浏览下面的内容,原来是设置了overflow的hidden属性 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被...

网络爬虫必备知识之requests库

就库的范围,个人认为网络爬虫必备库知识包括urllib、requests、re、BeautifulSoup、concurrent.futures,接下来将结对requests库的使用方法进行总结 1. requests库简介   官方中文文档:http://docs.python-requests.org/zh_CN/latest/user/quickst...

WAF、流控设备、堡垒机

目录 WAF 流控设备 堡垒机  WAF WAF(Web Application Firewall):web防火墙,WAF是通过执行一系列针对HTTP/HTTPS的安全策略来专门对web应用提供保护的一款产品,工作在应用层。 WAF的特点: 全面检测WEB代码 深入检测HTTP/HTTPS 强大的特征库 网络层的防篡改机制 流控设备 流控技术分为两种...