自研抓包服务分享

分享环节:

  • 代理服务功能介绍
  • 解决哪些场景
  • 如何快速使用
  • 抓包服务思路
  • 抓包服务实现
  • 遇见哪些问题和解决办法
  • 抓包服务展望

一、代理服务功能介绍

  • 代理ip直显。一般方式:Mac:ifconfig | grep “inet” | Windows:ipconfig | Charles:Help→Local IP Adress→en0
  • 代理设置简单。手机wifi设置+扫描二维码+安装证书
  • 代理方式操作简单。全局开关+代理方式+共享代理+实时生效
  • 保留历史数据,和即时数据区分开定时任务。历史数据保留7天,即时数据每天清空
  • 小工具扩展。个人信息:mid+uid+tuid
  • 抓包数据简洁雅观。请求顺序、请求信息清晰明了

二、解决哪些场景

  • 产运测试&预发环境验收麻烦
  • 出现问题,保留第一现场
  • 共享抓包数据
  • 大大减轻安卓手机安装证书困难
  • 快速获取信息
  • 有效远程沟通

三、如何快速使用

  • 配置代理。
  • 模糊查询。

四、抓包服务思路

对比开源Whistle、Anyproxy发现一些短板:

  1. 实现代理比较麻烦,要根据规则编写rule.js脚本
  2. 指向域名后,前端并未实时变更
  3. 要么工具少,要么工具齐全,但使用成本高
  4. 只有即时数据,没有历史数据

期望的工具:

  1. 抓包数据共享,不再本地化
  2. 代理设置操作尽可能简单
  3. 安装证书尽可能简单
  4. 历史数据可以追溯
  5. 衔接小工具,扩展不局限于redis、api等

五、抓包服务实现

技术链路:客户端—>Mitmproxy—>MongoDB—>Django—>App工厂

为何用到Mitmproxy、MongoDB:

  1. Mitmproxy是python第三方库,易于服务集成
  2. MongoDB,存储文档类型数据,和Mitmproxy输出数据很契合,尤其像header、query、body不确定具体返回字段,取数也不需要转化,提高存储和读取性能

Mitmproxy+MongoDB实现数据存储和清洗:

  1. python脚本绑定端口启动Mitmproxy服务
  2. 启动客户端后,抓包数据解析和存储。request、response对象解析,存储为历史数据和即时数据
  3. 定时任务:每周删除一次历史数据,每天清洗即时数据
  4. 实时读取Map Remote、Map Local、Rewrite配置以及全局开关并生效

Django+Mongodb读取数据并保存代理配置:

  1. 实现新增、编辑、删除代理配置
  2. 实现临时表,用于即时代理
  3. 实现全局开关
  4. 实现模糊查询即时数据和历史数据
  5. 实现读取单个请求数据明细

Vue+Django实现数据展示以及工具操作:

  1. 展示二维码下载证书
  2. 实时展示抓包服务ip和端口
  3. 实现代理操作页面
  4. 展示即时数据和历史数据
  5. 展示单个请求数据明细
  6. 实现Copy、Curl、Repeat

六、遇见哪些问题和解决办法

  1. 手机浏览器不能下载apk,初步排查是包体过大,mongodb拒绝访问。暂时未解决
  2. 当https指向http时,mitmproxy拒绝访问。原因是mitmproxy官方未对http2兼容,关掉http2配置即可
  3. Vue.js轮询太短,比如1s,那么在下拉表格查看数据时,出现短暂卡顿。暂时未解决
  4. 如果部署到ECS集群,如何像VPN一样保证局域网一致。暂时未部署
  5. 如何将request请求转化成Curl格式,从而被复制。参照Curl格式用js模拟

七、抓包服务展望

  1. 扩展工具:如何更贴近业务。开发个性化实用工具
  2. 后端部署服务。MongoDB成本以及解决局域网问题
  3. 如何实现共享的同时也能独立分化。每个人都能使用不同代理服务,但也能相互访问
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值