研发神器:一键网络抓包

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

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

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

相关文章
|
2月前
|
存储 Prometheus 监控
|
3月前
|
数据采集 JSON 程序员
老程序员分享:Pythonrequests网络数据采集下载视频(ku6)
老程序员分享:Pythonrequests网络数据采集下载视频(ku6)
23 0
|
4月前
|
存储 监控 安全
【亮剑】指导初学者如何搭建和使用网络视频监控系统。
【4月更文挑战第30天】本文指导初学者如何搭建和使用网络视频监控系统。核心设备包括摄像头(如固定、PTZ、多目、夜视)、存储选项(NVR、DVR、云存储)及网络交换机等。安装配置步骤涉及规划布局、安装摄像头、设置存储设备和软件配置。实时监控包括实时查看、接收警报和录像回放。理解设备功能、合理布局并细心操作,就能建立稳定监控体系。随着技术进步,未来监控系统将更智能、高效,保障安全。
434 0
|
监控 Ubuntu Linux
强烈推荐:网工利器PNETLab模拟器
强烈推荐:网工利器PNETLab模拟器
1224 0
强烈推荐:网工利器PNETLab模拟器
|
监控
《“啄”壮成长,移动app线上日志分析利器》电子版地址
“啄”壮成长,移动app线上日志分析利器
70 0
《“啄”壮成长,移动app线上日志分析利器》电子版地址
|
存储 算法
五款办公神器,用过才知道什么叫成倍地提升工作效率
分享是一种神奇的东西,它使快乐增大,它使悲伤减小,坚持分享一些好用的软件给大家,今天继续为大家带来五款办公神器。
206 1
五款办公神器,用过才知道什么叫成倍地提升工作效率
|
测试技术 Python
热饭的测开成果盘点第八期:C/S架构大型selenium平台本地调试客户端
本期介绍的是一个wxpython写的客户端,主要是给一套服务端的selenium平台做本地调用。在上回我说到 完全在页面维护的平台反响不好后就转变为使用者可自行在本地写脚本,写好后上传到平台即可,所以做了本地的c/s客户端方便调试用例,而且和平台联系紧密,比如一些公共变量 方法等同步之类的。但是可惜 做了一半我就被陷害愤然离职了,这个客户端也还没正式启用就雪葬了
热饭的测开成果盘点第八期:C/S架构大型selenium平台本地调试客户端
|
运维 Linux 数据安全/隐私保护
运维的新宠-远程利器Todesk
运维的新宠-远程利器Todesk
运维的新宠-远程利器Todesk
|
安全 Linux 开发工具
压箱底的8个网站,各种高效工具应有尽有
一年半以来,我分享了很多实用工具。每当看到有同学私信或者评论说“我用了很多你分享的工具,提高了很多工作效率。”
压箱底的8个网站,各种高效工具应有尽有
|
Web App开发 文字识别 Java
压箱底的10款在线工具平台
我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。我是JavaPub,《最少必要面试题》已在更新中。
173 0
压箱底的10款在线工具平台