研发神器:一键网络抓包

简介: 了解一键网络抓包实现方案,免费试用岩鼠云真机一键网络抓包!

1、简介

网络抓包(Packet Capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。

在移动开发中,需要对手机的网络行为进行监控测试,排查网络、安全相关的问题。岩鼠平台上线了抓包功能,方便用户快速的进行网络监测,其中Android支持一键抓包,而iOS需要用户自行手动设置代理来实现抓包。

本文主要介绍岩鼠平台在移动端的真机抓包方案。具有以下特点:

  • 一键开启,无须任何配置(动态切换WIFI,设置代理,安装证书)
  • 不需要依赖任何分析工具,支持在线实时查看瀑布流
  • 支持多种协议:HTTP/ HTTP2/HTTPS/WebSocket/TCP等

2、效果演示

image.png

3、抓包原理

要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。通常我们监控本地网卡数据,如下图:

image.png

手机、本地网络属于客户端侧的抓包,接入设备、服务器属于后台侧的抓包,两者本质上类似。本地网络指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在手机和本地路由之间加一层代理服务,这样只要抓代理服务的网络数据即可,如下图:
image.png

4、方案选型

Android出于安全性的考虑,并不支持抓包。所以现在Android上的抓包方式五花八门,但是不外乎两种,一种是通过android Linux的特点使用Tcpdump抓取信息,Tcpdump在Linux上需要su用户,在android上就需要root手机才能实现,而且Tcpdump是命令行工具,不便于分析结果。另一种方式是通过设置网络通道的方法抓包,如网络代理、AP、VPN等,这一类方法的优点是不需要手机Root,但是需要PC支持无线网络。但由于Tcpdump方式不支持HTTPS,因此我们选型以第二种为主。

4.1、Fiddler

Fiddler原本是一个网页调试工具,能够监听的HTTP协议,包括HTTPS。他的强大功能是允许你设置断点,修改输出数据,并且用户界面友好,使用简单,有对各种数据格式进行解析,方便查看。Fiddler另外一个好处是通过设置代理,可以过滤其他程序的信息。Fiddler基于微软的.net平台编写,所以目前只支持Windos系统

4.2、Wireshark

Wireshark是目前最流行的抓包工具,支持的协议多达850种,从最基础的IP协议和DHCP协议到高级的专用协议,如AppleTalk和BitTorrent等都能支持,是目前支持协议最多的抓包工具。由于Wireshark是开源软件,每次更新都会增加一些新的协议支持。同时它是一个跨平台的软件,可以在unix系列、linux、mac os、windows等多个平台上面进行网络协议抓包工作,但是还没有支持Android。Wireshark的前身叫Ethereal,2006年因为其创始人Gerald Combs的跳槽而改名为wireshark

4.3、Mitmproxy

Mitmproxy是一个基于Python的中间人代理的开源框架。同时 MitmProxy 还有两个关联组件,一个是 MitmDump,它是 MitmProxy 的命令行接口,利用它我们可以对接 Python 脚本,用 Python 实现监听后的处理。另一个是 MitmWeb,它是一个 Web 程序,通过它我们可以清楚地观察到 MitmProxy 捕获的请求。

4.4、Anyproxy

Anyproxy是阿里巴巴开源的一个基于nodejs开发的中间人代理框架,支持HTTP/HTPS的解析,提供WEB界面

5、方案对比

image.png

最终我们是选择了mitmproxy作为代理服务

6、方案演进(踩坑之旅)

从大体确定方案,到最终的方案落地,过程中踩了不少坑,方案也做了多次调整

方案1、PC + USB无线网卡开热点 + 手机设置代理 + Mitmproxy

方案可行,存在问题:linux驱动无线网卡困难;无线网卡开热点非常不稳定,经常会自己关闭

方案2、PC + USB无线网卡开热点 + iptables NAT + Mitmproxy

方案可行,存在问题:linux驱动无线网卡困难;无线网卡开热点非常不稳定,经常会自己关闭;NAT只配置过来透传TCP,UDP配置非常麻烦

方案3、VPN + Mitmproxy

方案不可行, 存在问题:VPN和Mitmproxy的双证书问题,除非自己开发VPN

方案4、PC + 双有线网卡 + 无线路由+ iptables NAT + Mitmproxy

方案可行,存在问题:无线路由需要使用电脑的有线网络作为出口上网,路由器下方开启的无线网络接入的手机,在Mitmproxy只能获取到无线路由器的IP,无法获取到具体的手机IP,需要扩展Mitmproxy

方案5、服务器 + 有线网卡 + 公共热点(连接该热点的设备和服务器之间网络互通) + 手机设置代理 + Mitmproxy

最终,方案5在岩鼠平台落地

7、数据链路

image.png

流程说明:

1、用户在真机使用界面点击【开启】按钮开启抓包功能

2、UI层通过websocket方式将启动抓包指令发送给WEB层

3、WEB层接受到开启抓包指令后,获取websocket中的消息内容,安装云真机后端约定的协议,将消息推送到消息队列中

4、云真机后端订阅了消息队列中的指定消息,当收到消息后,会调用手机上预先安装好的APP的接口进行切换网络和设置代理的操作(云真机后端服务器和手机之间通过USB连接,手机预先安装的APP会启动一个端口供云真机后端调用)

5、手机上面的APP接收请求后,调用安卓系统API进行网络切换和代理设置

6、手机网络设置成功后,手机上面的APP能接收到消息,通过原来链接将切换成功的消息逐个模块返回,最终返回到UI

7、UI收到消息后,会调用抓包服务接口,启动抓包服务

8、抓包服务收到消息,会为每台手机动态分配一个端口,并将在线查看瀑布流的URL返回给UI

9、UI接收到响应结果后,通过iframe方式嵌入在线查看瀑布流页面,用户可以查看到实时的请求数据

8、特别说明

Android 7.0+由于系统的限制,默认无法抓取APP https网络包。如果需要抓取指定APP的https网络包,需要APP开启网络安全配置,详见

https://developer.android.com/training/articles/security-config.html

9、免费试用

免费试用岩鼠云真机,体验下一键网络抓包的吧!
点击访问岩鼠云设备平台

相关文章
|
4月前
|
机器学习/深度学习 人工智能 PyTorch
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
84 1
|
4月前
|
人工智能 物联网 异构计算
AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
349 0
|
7月前
|
域名解析 负载均衡 网络协议
阿里云基础设施网络研发团队参与论文获得CCS 2023 杰出论文奖
阿里云基础设施网络研发团队参与论文获得CCS 2023 杰出论文奖
|
网络协议
《演讲三:阿里IPv6网络演进之路-蔡依群,阿里巴巴集团基础架构事业群网络研发事业部副总裁》电子版地址
演讲三:阿里IPv6网络演进之路-蔡依群,阿里巴巴集团基础架构事业群网络研发事业部副总裁
191 0
《演讲三:阿里IPv6网络演进之路-蔡依群,阿里巴巴集团基础架构事业群网络研发事业部副总裁》电子版地址
|
机器学习/深度学习 人工智能 自然语言处理
华为AI芯片+微软研发=第一款移动端离线推理神经网络
10 月下旬,华为的 NPU AI 专用处理单元和 HiAI 移动计算平台亮相华为上海发布会,引起了诸多关注。在发布会上,余承东通过微软为华为开发的 Microsoft Translator 的 AI 离线翻译功能介绍了人工智能专用芯片 NPU 与 HiAI 移动计算平台。随后,我们与微软全球技术院士黄学东进行了对话,仔细聊了聊这款包含了世界上第一个能够在智能设备上进行离线推理的自然语言处理神经网络的应用的诞生始末。
389 0
华为AI芯片+微软研发=第一款移动端离线推理神经网络
|
机器学习/深度学习 Ubuntu TensorFlow
Graph-Learn(GL,原AliGraph) 面向大规模图神经网络的研发和应用而设计的一款分布式框架
它从实际问题出发,提炼和抽象了一套适合于当下图神经网络模型的编程范式, 并已经成功应用在阿里巴巴内部的诸如搜索推荐、网络安全、知识图谱等众多场景。
|
机器学习/深度学习 消息中间件 人工智能
【1012 - 1016直播导视 | PPT 下载】走进工业级图神经网络框架GraphLearn、一个真正人人可用的云时代研发模式已经到来!
本周将为你带来多场技术公开课:开源日也迎来第四期走进工业级图神经网络框架GraphLearn;并且还有阿里云Serverless云开发平台风驰为你揭秘一个真正人人可用的云时代研发模式已经到来!
5635 0
|
Java Spring 算法
【面小易-面经08】菜鸟网络Java研发工程师面试经验(社招)
7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!马上投递简历:https://developer.aliyun.com/special/offerday01
8564 0