自研抓包服务思路的产生

抓包思路的产生
抓包是什么
  • 官网解释:抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
  • 简而言之:截取请求包,想干啥干啥
为什么要抓包
  1. 分析bug(接口传参、返回body、header请求头)
  2. 接口调试(Map、Rewrite、Throttling、Repeat、Filter、breakingpoint)
  3. 请求记录(功能、对接)
抓包工具有哪些

目前常用:Fiddler、Charles、F12
不常用:Wireshark、Sniffer、Postman
开源工具:阿里的Anyproxy、腾讯的Whistle、python第三方库mitmproxy

抓包工具都有哪些短板
  • Fiddler:只适用于Windows系统,且安装环境依赖java
  • Charles:只适用于Mac系统,不支持二次开发
  • F12:只适用于web,不支持二次开发
  • Postman:需要浏览器设置代理,不支持二次开发
  • Anyproxy:JS开源,可视化页面内容较少,规则文件执行单一
  • Whistle:JS开源,配置规则太繁琐
    目前来说,Whistle是最接近理想的抓包工具
为什么不用以上工具
  1. Fiddler、Charles只能在本地部署
  2. Postman代理设置对于除测试人员门槛较高
  3. Anyproxy、Whistle定制规则不够理想,操作复杂
理想型的工具是什么样
  • 拥有Charles的可视化Map、Rewrite等功能
  • 支持共享、服务化,降低新手使用门槛
  • 自定义规则且能批量处理,操作简单
  • 一键下载安全证书,避免各个安卓系统安装证书的困难
  • 可扩展性,对接自动化、小工具、监控等
有什么办法去实现
  1. 怎么获取抓包请求流?
    python+第三方库mitmproxy能通过flow的方式获取到抓包数据,每个flow包含请求明细。
    python+标准库socket能获取到任何方法的二进制数据,暂不使用。
  2. 请求流如何展示?(MVC模式)
  • 存储flow数据
  • 服务端api高效查询数据
  • 前端调用api获取数据并格式化展示
  1. 怎么存储flow数据?
  • 是当前所有flow汇总到一个集合插入还是每一个flow插入?由于实时性,每一个flow插入
  • 插入什么db?flow更像一个包文件,优先采用mongoDB,采用键值对的形式存储
  1. 怎么高效查询数据?
  • 一个search api查询所有数据的请求部分
  • 一个search_one api查询每个flow的所有部分
  1. 怎么展示数据?
  • vue table调用search
  • 点击任意cell调用search_one
  1. 怎么自定义规则?
  • 一个map_remote api插入mongoDB,一个search_remote api查询remote规则
  • 同理map local、rewrite
实现抓包服务技术结构:
  1. 获取flow数据并存储:python+mitmproxy+mongoDB
  2. 实现api:python+Django+mongoDB
  3. 实现可视化:antd vue
  4. 实现安全证书二维码:qrcodejs2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值