如何抓取app数据包网络抓包原理及实现通信网络

本文以App作为例子,实际应用不限于App范围。

一、为什么要抓包

分析其他App数据接口

学习网络协议,使用抓包工具分析网络数据更直观

大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:

你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是App没有将数据发出去,或是App发送数据格式有误

你和后台接口联调测通,但业务数据对不上,你认为是后台问题,后台认为是你发的问题,可以抓包确认问题所在

App页面渲染缓慢,抓包看下接口响应时长,是不是后台出现性能问题

需要测试弱网环境下App的体验?抓包工具可设置流量限制,可设置接口堵塞

想改变某接口的响应报文?想多次重发某一请求,但App业务流程有限制?可以试试抓包工具提供的功能

二、网络抓包原理

要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。

但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。

通常我们监控本地网卡数据,如下图:

本地网络指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在手机和本地路由之间加一层代理服务,这样只要抓代理服务的网络数据即可:

4G网络状态下如何抓包,以及它的劣势,我们后面章节再细讲。

除了通过代理,直接利用网卡驱动捕获所有流经网卡的数据:

这样的好处是不用设置代理,但它的缺点也很明显,只能对数据进行分析,无法进一步的控制。

三、网络协议

抓包实际上是分析网络协议的一种过程,尽管繁琐的细节劳动都让抓包工具做了,但我们还是需要了解下基础的网络协议,好帮助我们更好的分析问题。

首先需要了解下经典的OSI七层网络模型,以及每层的作用,其次对TCP、HTTP协议简单了解。

虚线框中的部分是需要着重了解的。

HTTPS与HTTP有什么不同?

HTTPS是基于HTTP协议的一种改进,在TCP之上的会话层增加安全处理。对于应用层来说,HTTPS和HTTP没有什么不同,也就是说,HTTPS是保证网络传输的安全性,对业务数据无侵入。

简化理解大概是这个样子:

项目中HTTPS的链路:

因此,客户端与后台,编写网络接口时,不需要关心SSL或TLS,按照HTTP协议处理即可。

既然HTTPS在网络传输是经过加密的,那么抓包抓到的数据就是密文,不经过解密是无法看到报文的。针对这个问题,如上图WIFI环境下设置代理的方式可以解决,具体思路是:

所以整个网络链路依然是HTTPS在传输,但代理服务自己可以获取到明文数据。

四、常用抓包工具

比较常用的抓包工具大概有4个,主要用作互补,配合使用基本所有平台、所有抓包需求都能满足:

fidderwindows平台最受欢迎抓包工具,免费、易用

charlesMac平台下最佳抓包工具,易于使用,收费软件,可一直试用

wireShark老牌抓包工具,跨平台,功能齐全、强大

tcpdump命令行程序,适用于手机系统和后台系统

需要说明的是,tcpdump可将数据保存成文件,直接用wireShark打开分析,针对后台或手机抓包使用起来十分方便。

fidder、charles属于代理类的抓包工具

wireShark、tcpdump属于网卡抓包工具

几个工具间的使用关系:

如果是windows平台,使用fidder

如果是Mac平台,使用charles

如果抓非HTTP(S)协议的包,如TCP包,则使用wireShark

tcpdump命令

抓去所有网络接口的数据,并保存到当前目录的capture.pcap文件中:

tcpdump-p-vv-s0-iany-wcapture.pcap

-p关闭混合模式

-vv产生更详细的输出

-s0抓去完整的数据包

-iany监听任意网络接口

-w将抓去的包保存文件

混合模式,即可以监听所有经过该网卡的数据(关闭混合模式可以过滤掉一些垃圾数据)

五、真机抓包

为什么要真机抓包?必定是没有办法设置代理服务了,如4G网络情况下直接和移动基站链接,没法设置代理服务。凡是非4G网络状态下,都不建议真机抓包。

具体步骤:

获得iOS设备的UDID

使用USB数据线将iOS设备和MAC连接

创建RVI接口rvictl-s

使用wireShark抓取rvi0虚拟接口

移除RVI接口rvictl-x

真机抓包,意味着无法获取HTTPS的明文数据,因此真机抓包的意义不大,只能用户分析网络接口连通性,正确性,无法分析业务报文是否正确。

android是linux系统,和后台一样可以使用tcpdump命令来抓包,但是需要root权限,因为一般手机系统不带有抓包命令tcpdump,需要自行安装。

安装tcpdump:

su#切换root用户

chmod777/data/local#修改目标路径权限,这里是/data/local

adbpushtcpdump/data/local#将tcpdump拷贝到目标路径

若tcpdump命令不能执行,需要赋予该文件chmod+xtcpdump

使用tcpdump:

adbshell

su

/data/local/tcpdump-p-vv-s0-iany-w/data/local/capture.pcapng

这是就已经进入抓包状态,手机所有的网络请求都会被捕获,并保存到capture文件中。

THE END
1.iOS解除方法交换mob6454cc6d5f87的技术博客交换功能是指路由器在一个接口接收数据包并将其从另一个接口转发出去的过程。交换功能的重要责任是将数据包封装成适用于传出数据链路的正确数据帧类型。 对于从一个网络传入,以另一个网络为目的地的数据包,路由器会进行哪些处理?路由器主要执行以下三个步骤: https://blog.51cto.com/u_16099249/12803795
2.iPhone新手设置ID耗时太久?快速攻略来啦!第一手游网踏入智能手机的新世界,尤其是拥有了最新款的iPhone,那份激动与期待不言而喻,对于许多新手玩家来说,初次设置Apple ID的过程却成了一道不小的门槛,漫长的等待时间、复杂的步骤,让人不禁感叹:“新iPhone设置ID,为何这么久?” 我们就来一场说走就走的“新手村攻略”,助你快速跨越这道障碍,畅享iPhone的无限魅力!http://m.875211.net/zixun/49359.html
3.使用Safari获取手机UDID,对.mobileconfig文件进行签名加密生成文件地址在文章中,关于UDID自己写一个唯一标识的就可以.点击我跳转生成地址 生成好文件根据博主的图示把内容修改成自己需要的,同时再附上一个方便查看 生成好的文件安装在手机里没有红色提示,显示没有签名. <!--参考:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/iPhoneOTAhttps://www.jianshu.com/p/0664e0226e14
4.iphoneUDID读取方法资源快速查看UDID 浏览:149 快速查看UDID的方法通常涉及到以下步骤: 1. **使用网页查询**: - 可以直接在iPhone或iPad的Safari浏览器中访问`udid.iosbeta.cn/udid`,页面会提供一个“立即查询”的按钮。 - 点击该按钮后,系统会提示安装一 苹果手机快速获取UDID https://download.csdn.net/download/sxccxz/6905181
5.苹果手机试玩没任务抢不到任务怎么办,解决办法分享要解决这个问题有几种方法:最直接的方法就是换新机,每做完新手任务,就换一批新手机来操作,但是计算成本以及时间上来看,这些都是相对于不划算的,所以很多人会选择其他:技术层面,其实无限刷就是抹机加软改,硬改,FD抓包,试玩这么多,很多平台都已经验证了UDID设备,一旦安装验证后的手机都不是新机,你登陆进去的平台已经https://card.weibo.com/article/m/show/id/2309404434853624938513
6.苹果试玩无限刷技术之还原广告标识符教程,简单实用的无限试玩方法严格来说,还原广告标识符(IDFA)并不算是苹果试玩的无限刷技术,但它同样能达到无限刷的目的,而且是简单有效又安全的方法。严格的无限刷技术涉及到抓包、软改udid、跳码跳验证等一系列操作,目的是让一台手机不断变换身份,在试玩平台眼里成为一台新设备。彻底的无限刷不仅工序多,也极易封号,还需要配置足够多的账号进https://wanzhuanapp.com/info/66.html
7.mPaasH5离线包问题排查工具介绍iOS客户端出口抓包需要把iOS移动设备通过usb连接到macbook上,并在Mac上建立的一个该设备网卡的虚拟映射。Wireshark通过该虚拟网卡捕获iOS移动设备上的网络包。 获取iPhone的UDID 将iOS移动设备通过USB接口连接Mac上,然后在终端上使用如下命令获取iOS设备的UDID(Serial Number): https://developer.aliyun.com/article/848594
8.Python爬虫实战入门:爬取360模拟翻译(仅实验)需求所需第三方库# 获取请求头信息headers = {'Accept':'application/json, text/plain, */*','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.9','Content-Length':'0','Cookie':'QiHooGUID=F02A63E0BCB72DB4A01C21FA023475E1.1703769301607; Q_UDID=00b0237e-501b-1360-b2eb-96b79d1https://article.juejin.cn/post/7406512341112487946
9.在Iphone手机上使用charles抓包数据http://www.cr173.com/html/20064_1.html Fiddler绝对称得上是"抓包神器", Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求。 Fiddler能捕获ISO设备发出的请求,比如IPhone, IPad, MacBook. 等等苹果的设备。 同理,也可以截获Andri https://www.pianshen.com/article/48202714318/
10.PHP开发的UDID全自动签名工具源码自动识别重签名udid,已经修复多抓包漏洞 支持多应用批量签名 1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除! 3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负! http://www.ylcom.net/2083.html
11.Mac端Wireshark抓包工具使用腾讯云开发者社区我们一般常规的监听是来自手机上的。所以我们要把iPhone通过usb连接到mac。 但是当我们连接之后,还是会一脸蒙蔽,并不知道选哪一个。首先,如果是第一次安装Wireshark,并不会显示手机的网卡的,需要做一个设置: 打开终端输入:rvictl -s 设备udid 代码语言:javascript https://cloud.tencent.com/developer/article/1355945
12.如何获取设备的SDK版本产品版本设备类型(平板手机)build如何使用Charles工具抓包 Socket下的TLSConnectOptions不配置是否会使用手机上的默认证书 在使用Socket连接相关接口时,NetAddress的address参数只能是IP地址,如果只有host的情况如何处理 在建立好TCPSocket之后,如何将复合类型结构转换为ArrayBuffer 如何将Axios获取GBK格式的网络数据转换UTF-8格式 如何解决网络连接状态变https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-performance-analysis-kit-23-V5
13.PHP开发的UDID全自动签名工具源码/支持任何api签名+不掉证书+支持应用分类后台直接添加编辑 激活码权限可以选择对应分类生成 后台支持导入授权码 一键上架下架功能 修改老版本重复提交UDID不显示回调等回调 回调做了防抓包偷取ipa直接调用本地网站 增加后台登录日志功能 自动识别重签名udid,已经修复多抓包漏洞 支持多应用批量签名https://www.zztuku.com/detail-5928.html
14.iOS下一键调试Push的方法详解IOS测试同学每隔一段时间就会发现 iPhone 又收不到 Push 了,这是经常发生在上家公司的场景(湾区好像很多公司都没测试),最后调试下来原因各不相同,但每次都免不了停下手头的工作走一遍流程:数据线连手机,查看 uuid,启动虚拟网卡,运行 WireShark 或者 tcpdump 抓包,排除 server 端问题,查看手机设置。等定位好问题至少https://www.jb51.net/article/136644.htm
15.使用API登录知乎并获得token其他实现细节。比如 zhihu-oauth 使用了 pickle 来序列化 token 的结果,它是 Python 独有的,可读性和安全性都不好,我改用了 json。 好吧,我们开始。 IOS 抓包 安卓的权限控制比较松,能比较方便的抓包。但是 IOS 由于苹果的一些政策,只能迂回的获的,我使用了Charles,Charles 的安装设置就不说了,Google 能找到https://www.dongwm.com/post/86/