protobuf简单使用及其抓包分析_抓包调试protobuf请求

本文作者:IMWeb avenwu

未经同意,禁止转载

whistle是基于Node实现的跨平台抓包工具,有关whistle的内容请查看Github:https://github.com/avwo/whistle

在轻松篡改WebSocket数据包一文中谈了如何用whistle抓包调试WebSocket请求,事实上whistle也支持对普通的Socket(TCP)请求进行抓包调试,只需要客户端将请求通过HTTP代理的方式转发到whislte即可,其中Node程序可以直接用socketx模块实现,其它程序也可以参考该模块的实现:https://github.com/avwo/socketx。

如果是自己实现的代理,代理请求头要加上 x-whistle-policy: tunnel,这样可以让whistle的Frames显示长连接的每帧数据,并可以防止whistle开启全局捕获HTTPS请求时误把Socket请求当成普通的https请求;

如果确实无法在代码里面修改代理请求头,需要通过在Rules里面设置规则 tunnel://host:port disable://capture enable://inspect 禁用定host和端口的HTTPS捕获及开启显示请求的每帧数据。

但在实际使用过程中,不是每个需要传输的数据包对应一帧数据,由于数据包大小关系,经常会出现拆包粘包的情况,因此对传输的数据包进行封装以便在接收方能完整取出,这时需要发送和接收方约定一种传输协议,如WebSocket内置的传输协议,普通的Socket连接也可以自定义简单的传输协议,如:simpleproto。在进行上述组包之前可能还会用protobuf等协议对数据包进行序列化压缩加密等,导致在whistle界面上看到的普通长连接数据包不完整或出现乱码,难以用whistle进行抓包调试这类长连接。

为方便抓包调试自定义协议的长连接请求,whistle v1.13.1 版本开始把界面 Network/Frames 的API通过事件的方式暴露给插件,方便插件自定义解析WebSocket、Socket请求的数据包并显示到界面的Frames列表中,同时可以监听到该面板的暂停、忽略、构造数据等操作,实现抓包调试各种自定义协议(不局限于protobuf协议)。

自定义长连接包解析器,要求 whislte >= v1.13.1 版本,如果版本太低可以点击此链接升级:https://wproxy.org/whistle/update.html

不清楚whistle插件机制的可以先看下文档:whistle插件开发

有关自定义包解析器的可以参考以下两个项目:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值