charles 抓包https、Wireshark抓包WebSocket

charles 抓不到Https包的特征

  • 如下图显示红色x


    Snip20190930_2.png

电脑上安装根证书

  • 打开charles->Help->SSL Proxying->Install Charles Root Certificate


    charles 抓包https、Wireshark抓包WebSocket_第1张图片
    image.png
  • 有时候电脑上的证书已经安装过了,但是就是抓包不成功,可以把之前安装的证书删掉重新安装一下。
    安装后需要打开钥匙串,找到刚才安装的证书,选中,右键,显示简介


    charles 抓包https、Wireshark抓包WebSocket_第2张图片
    Snip20190930_4.png
  • 在弹出的窗口中点开信任,选择始终信任


    charles 抓包https、Wireshark抓包WebSocket_第3张图片
    image.png
  • 到这一步,电脑上的证书算是安装好了

安装手机上的证书

  • 选择 charles-> Help-> SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser ,弹出对话框如下
charles 抓包https、Wireshark抓包WebSocket_第4张图片
Snip20190930_7.png

charles 抓包https、Wireshark抓包WebSocket_第5张图片
image.png
  • 配置手机代理 服务器为自己电脑ip,端口号为8888


    charles 抓包https、Wireshark抓包WebSocket_第6张图片
    image.png
  • 然后手机打开 safari 输入 chls.pro/ssl 下载证书
  • 下载成功后,通过 设置->通用->描述文件与设备管理 去安装证书
  • 安装成功后,通过 设置 ->通用 ->关于本机 ->证书信任设置 找到刚才安装的证书,信任证书即可

配置charles

  • 打开 charles -> Proxy-> SSL Proxying Settings,选中 SSL Proxying Tab 选中Enable SSL Proxying 添加 *:443


    charles 抓包https、Wireshark抓包WebSocket_第7张图片
    image.png
  • 到此charles 可以抓包https

原理简析

如果是HTTP请求,因为数据本身并没加密所以请求内容和返回结果是直接展现出来的。
但HTTPS是对数据进行了加密处理的,如果不做任何应对是无法获取其中内容。所以Charles做的就是对客户端把自己伪装成服务器,对服务器把自己伪装成客户端:

Charles拦截客户端的请求,伪装成客户端向服务器进行请求
服务器向“客户端”(实际上是Charles)返回服务器的CA证书
Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Charles拿到了服务器证书的公钥)
客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)
Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)
服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
Charles拦截服务器的响应,替换成自己的证书后发送给客户端
当然,如果用户不选择信任安装Charles的CA证书,Charles也无法获取请求内容。还有一种,如果客户端内置了本身的CA证书,这时如果Charles把自己的证书发送给客户端,客户端会发现与程序内的证书不一致,不予通过,此时Charles也是无法获取信息的。

后续

20200909今天在使用charle抓包时突然不行了,不论是http还是https都报红,把电脑上的根证书删了重装也不行,把手机上的证书删了之后,重装手机证书时连chls.pro/ssl都打不开,charle还是报红,然后发现charle报错的原因竟然是白名单white list,才突然想起之前设置过黑名单和白名单,把黑名单和白名单都取消后,再去chls.pro/ssl安装证书,果然可以了,安装好证书后抓包成功了

参考 Charles抓包https


Wireshark抓包WebSocket

  • 项目中经常会使用到ws来下发消息,可以常用的抓包工具却不能抓WS 的数据包,下面分享一种可以抓WS数据的工具Wireshark,MAC 和Windows 平台上都可以用。
  • 首先去官网下载客户端
  • 下载完成后安装
  • 安装完成之后设置共享WiFi,这里要记住共享来源的链接


    charles 抓包https、Wireshark抓包WebSocket_第8张图片
    image.png
  • 设置好共享wifi后,手机连上共享的wifi,设置代理
  • 第一次打开会提示你安装Install ChmodBPF,点击安装就好。
  • 安装完后共享网络的的来源链接,就是设置共享的时候让你记住的


    charles 抓包https、Wireshark抓包WebSocket_第9张图片
    image.png
  • 双击来源链接进到的页面就可以抓ws的数据包了


    charles 抓包https、Wireshark抓包WebSocket_第10张图片
    image.png

你可能感兴趣的:(charles 抓包https、Wireshark抓包WebSocket)