研发神器:一键网络抓包

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

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、免费试用

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

相关文章
|
8月前
|
前端开发 数据可视化 测试技术
自从用了这款接口神器,团队效率提升了 60%,必须推荐
做技术管理的童鞋,往往会陷入这样一种困境:疲于奔命,到处救火填坑,沟通推进,却挤不出时间思考对团队和项目来说真正重要的事情。
|
监控
《“啄”壮成长,移动app线上日志分析利器》电子版地址
“啄”壮成长,移动app线上日志分析利器
63 0
《“啄”壮成长,移动app线上日志分析利器》电子版地址
|
存储 算法
五款办公神器,用过才知道什么叫成倍地提升工作效率
分享是一种神奇的东西,它使快乐增大,它使悲伤减小,坚持分享一些好用的软件给大家,今天继续为大家带来五款办公神器。
193 1
五款办公神器,用过才知道什么叫成倍地提升工作效率
|
数据挖掘 大数据
收藏转发!这五款宝藏软件你一定要用一下
今天带来五款宝藏软件,身为宝藏男孩和宝藏女孩的你们,不试一下吗?
149 1
收藏转发!这五款宝藏软件你一定要用一下
|
测试技术 Python
热饭的测开成果盘点第八期:C/S架构大型selenium平台本地调试客户端
本期介绍的是一个wxpython写的客户端,主要是给一套服务端的selenium平台做本地调用。在上回我说到 完全在页面维护的平台反响不好后就转变为使用者可自行在本地写脚本,写好后上传到平台即可,所以做了本地的c/s客户端方便调试用例,而且和平台联系紧密,比如一些公共变量 方法等同步之类的。但是可惜 做了一半我就被陷害愤然离职了,这个客户端也还没正式启用就雪葬了
热饭的测开成果盘点第八期:C/S架构大型selenium平台本地调试客户端
|
前端开发
热饭的测开成果盘点第十六期:mock抓包平台
本期介绍的是开发的一套专为前端打造的mock接口平台,主要就是抓包,然后在接口的生命周期内加入控制,相当于在闭环中加入了抓手,对前端测试工程师进行了高度赋能,可测试各种复杂数据和简化流程。
热饭的测开成果盘点第十六期:mock抓包平台
|
机器人
手撸了一个开源工具,V 站热点实时看,真香!
今天给大家介绍我的一个开源工具 V2EX Action,它可以自动将 V 站热门发送到指定的 webhook 地址,如企业微信群机器人。可配置 workflow 的触发条件为 schedule,实现周期性定时发送热门内容。
157 0
手撸了一个开源工具,V 站热点实时看,真香!
|
运维 Linux 数据安全/隐私保护
运维的新宠-远程利器Todesk
运维的新宠-远程利器Todesk
运维的新宠-远程利器Todesk
|
Web App开发 文字识别 Java
压箱底的10款在线工具平台
我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。
161 0
压箱底的10款在线工具平台
|
SQL 缓存 监控
有了这款工具,定位线上问题事半功倍|云效工程师指北
有了这款工具,定位线上问题事半功倍,程序员在日常工作中经常会遇到一些线上问题需要排查,本文的主人公程序员小张也不例外。但排查的过程却时常令他困扰不已。让我们一起看看他遇到了哪些问题,又是怎么解决的。
1032 0
有了这款工具,定位线上问题事半功倍|云效工程师指北