网络抓包原理及常用抓包工具

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

  1. 定位网络接口问题
  2. 分析其他App数据接口
  3. 学习网络协议,使用抓包工具分析网络数据更直观

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

  • 你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有问题,还是App没有将数据发出去,或是App发送数据格式有误
  • 你和后台接口联调测通,但业务数据对不上,你认为是后台问题,后台认为是你发的问题,可以抓包确认问题所在
  • 线上App出现bug需要定位,但你没在公司,没有代码可调试,可直接抓包分析
  • App页面渲染缓慢,抓包看下接口响应时长,是不是后台出现性能问题
  • 需要测试弱网环境下App的体验?抓包工具可设置流量限制,可设置接口堵塞
  • 想改变某接口的响应报文?想多次重发某一请求,但App业务流程有限制?可以试试抓包工具提供的功能

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

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

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


手机、本地网络属于客户端侧的抓包,接入设备、服务器属于后台侧的抓包,两者没有什么不同

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

虽然在手机侧也可实现抓包,但和本地路由一样,抓包比较麻烦,如果不是没有办法,尽量还是不在手机侧抓包。但是有一种情况必须在手机端抓包,那就是在4G网络情况下:

在这里插入图片描述

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

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


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

例如无法解析https报文(除非有https整数);无法篡改报文数据等。

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

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


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

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

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


SSL和TLS是保证安全传输的协议,包括证书认证、加解密和数字签名。

项目中HTTPS的链路:


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

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


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

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


  • fidder windows平台最受欢迎抓包工具,免费、易用
  • charles Mac平台下最佳抓包工具,易于使用,收费软件,可一直试用
  • wireShark 老牌抓包工具,跨平台,功能齐全、强大
  • tcpdump 命令行程序,适用于手机系统和后台系统

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

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

wireShark、tcpdump属于网卡抓包工具

几个工具间的使用关系:

  1. 如果是windows平台,使用fidder
  2. 如果是Mac平台,使用charles
  3. 如果是linux平台(手机或后台),使用tcpdump
  4. 如果抓非HTTP(S)协议的包,如TCP包,则使用wireShark

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

tcpdump -p -vv -s 0 -i any -w capture.pcap

  • -p 关闭混合模式
  • -vv 产生更详细的输出
  • -s 0 抓去完整的数据包
  • -i any 监听任意网络接口
  • -w 将抓去的包保存文件

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

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

iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdump,wireshark等工具对创建的接口进行抓包分析。

具体步骤:

  1. 获得iOS设备的UDID
  2. 使用USB数据线将iOS设备和MAC连接
  3. 创建RVI接口 rvictl -s <UDID>
  4. 使用wireShark抓取rvi0虚拟接口
  5. 移除RVI接口 rvictl -x <UDID>

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

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

安装tcpdump:

  1. 下载android版本的tcpdump
  2. adb shell
  3. su #切换root用户
  4. chmod 777 /data/local #修改目标路径权限,这里是/data/local
  5. adb push tcpdump /data/local #将tcpdump拷贝到目标路径

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

使用tcpdump:

  1. adb shell
  2. su
  3. /data/local/tcpdump -p -vv -s 0 -i any -w /data/local/capture.pcapng

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

导出capture文件:

  1. adb pull /data/local/capture.pcapng . #导出到当前目录
  2. 使用wireShark打开capture文件,进行浏览分析

若进行push及pull操作不成功,可能是因为不让直接操作/data/local等系统目录,可以先pull到sd卡,在将文件从sd卡拷贝到/data/local,反之依然。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手机网页关键词视频爬虫采集软件可导出视频分享链接|视频无水印批量下载工具

全新音视频批量下载工具&#xff0c;为您解放视频管理烦恼&#xff01; 现如今&#xff0c;音上涌现出大量精彩的视频内容&#xff0c;但是要想高效地获取、管理和分享这些视频却是一件颇具挑战的事情。针对这一难题&#xff0c;我们自主研发了全新的音视频批量下载工具&#x…

云计算系统等保测评对象和指标选取

1、云计算服务模式与控制范围关系 参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图&#xff0c;主要是云计算系统安全保护责任分担原则和云服务模式适用性原则&#xff0c;指导后续的测评对象和指标选取。 2、测评对象选择 测评对象 IaaS模式 PaaS模式…

微信投票小程序源码系统:礼物道具投票盈利能力超强 带完整的安装代码包以及安装部署教程

近年来&#xff0c;微信小程序以其便捷性、轻量化等特点&#xff0c;迅速占据了移动应用市场的一席之地。投票小程序作为其中的一种应用类型&#xff0c;因其独特的互动性和社交性&#xff0c;成为了商家进行品牌宣传、活动推广的有力工具。然而&#xff0c;市场上的投票小程序…

离谱!奇安信人事总监透露:Web安全不会岗位这些就别投简历了

有人的地方就有江湖&#xff0c;有互联网安全的地方&#xff0c;就必然有Web安全工程师的身影。但其实Web安全是近几年才备受关注的&#xff0c;从事这方面的专业人员并不多&#xff0c;这就导致整个市场Web安全研究员的供求严重不平衡。 这种供求不平衡直接反映在Web安全研究…

常纪文-污水处理的绿色低碳政策与市场机遇

报告人&#xff1a;常纪文 报告题目&#xff1a;污水处理的绿色低碳政策与市场机遇 大会专家 常纪文&#xff0c;国务院发展研究中心资源与环境政策研究所副所长、研究员&#xff0c;国家碳达峰碳中和标准化总体组成员、中国环境科学学会常务理事、生态环境部环境影响评价委员…

复旦大学MBA:iLab项目探寻科技创新 助力企业出海

2024年2月底&#xff0c;新一轮复旦MBA iLab商业咨询项目&#xff08;以下简称iLab项目&#xff09;正式拉开序幕。      科创大时代&#xff0c;如何于变局中创新突破、绘就商业“蓝图”&#xff1f;怎样把握ESG投资机遇&#xff0c;创造可持续发展的未来&#xff1f;如何…

Java反射机制的讲解及其示例说明

Java 反射机制是指在运行时动态地获取类的信息以及操作对象的方式。它允许程序在运行时检查和操作类、方法、属性等&#xff0c;而不需要在编译时就确定这些属性。通过反射机制&#xff0c;我们可以在运行时动态地创建对象、调用方法、获取属性等。 Java 反射机制提供了以下主…

企业数据指标体系构建的四大原则

在信息化和数字化的时代浪潮下&#xff0c;数据已成为企业决策的重要依据。数据指标体系作为企业管理数据的基石&#xff0c;对于提升企业运营效率、优化资源配置、实现战略目标具有重要意义。因此&#xff0c;构建一套科学、合理的企业数据指标体系成为企业的迫切需求。本文将…

代码签名证书被吊销的原因及其后果是什么?

代码签名证书是确保软件代码完整性和可信度的关键工具&#xff0c;然而&#xff0c;在某些情况下&#xff0c;此类证书可能会被撤销。这意味着证书颁发机构&#xff08;CA&#xff09;不再认可该证书的有效性&#xff0c;并宣布其失效。本文将解析导致代码签名证书撤销的原因、…

基于springboot的大创管理系统

采用技术 基于springboot的大创管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员模块 项目中检管理 专家评审管理 指导老师模块 项目申…

【Java开发过程中的流程图】

流程图由一系列的图形符号和箭头组成&#xff0c;每个符号代表一个特定的操作或决策。下面是一些常见的流程图符号及其含义&#xff1a; 开始/结束符号&#xff08;圆形&#xff09;&#xff1a;表示程序的开始和结束点。 过程/操作符号&#xff08;矩形&#xff09;&#xff…

Prometheus mysqld_exporter 监控mysql配置方法

Prometheus mysqld_exporter 支持MySQL服务的监控指标 支持的版本&#xff1a; MySQL > 5.6.MariaDB > 10.3 一、首先 在配置mysqld_exporter监控之前&#xff0c;我们需要先创建一个监控帐号&#xff0c;用于后面连接数据库使用 CREATE USER exporterlocalhost IDE…

Elasticsearch数据写入、检索流程及底层原理全方位解析

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 ✍&#x1f3fb;序言✍&#x1f3fb;1️⃣✍&#x1f3fb;es的架构简介1. 分布式架构2. 索引与搜索3. 数据写入与持久化4. 缓…

TSINGSEE青犀数字化、智能化视频技术推动森林防火智慧监管

一、背景分析 中央网络安全和信息化委员会印发《“十四五”国家信息化规划》&#xff0c;明确指出“提升林草生态网络感知能力&#xff0c;完善生态系统保护成效数字化监测评估体系”。这为数字化系统建设引领了方向&#xff0c;中国林业信息化建设迈入了新的阶段&#xff0c;全…

Unity多人游戏基础知识总结

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。 (谢谢你的关注…

【机器学习】机器学习实验方法与原则(评价指标全面解析)

评价指标 在 不同任务 下衡量模型的性能&#xff0c;有 不同的评价指标 &#xff0c;例如&#xff1a; • 回归任务 • 平均绝对误差&#xff08; MAE &#xff09;、均方误差&#xff08; MSE &#xff09;、均方根误差&#xff08; RMSE &#xff09;等 • 分类任务 •…

数据本地性如何助力企业在云上实现高效机器学习

分享嘉宾&#xff1a; Lu Qiu, Shawn Sun 本文将讨论数据本地性对于在云上进行高效机器学习的重要性。首先对比现有解决方案的利弊&#xff0c;并综合考虑如何通过数据本地性来降低成本和实现性能最大化。其次会介绍新一代的Alluxio设计与实现&#xff0c;详细说明其在模型训练…

语言与人生:编程中的“影视风云”

语言与人生&#xff1a;编程中的“影视风云” Language and Life: The “Cinematic Spectacle” in Programming 编程&#xff0c;于我而言&#xff0c;便如走进一座座影视城&#xff0c;每换一种语言&#xff0c;便仿佛遇见了一位新的影视人物&#xff0c;性格迥异&#xff0c…

使用Windows的“远程桌面连接”Ubuntu主机连接不上问题解决

问题描述&#xff1a; 使用Windows自带的“远程桌面连接”来连接自己的Ubuntu的系统的过程中&#xff0c;自己已经成功安装了 xrdp 文件包&#xff0c;但是在使用“远程桌面连接”时&#xff0c;自己的“远程桌面连接”软件在输入Ubuntu系统的用户名和密码后&#xff0c;连接不…

day13-SpringBootWeb 事务AOP

一、事务管理 1 事务回顾 概念 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;这些操作 要么同时成功&#xff0c;要么同时失败。 操作 开启事务&#xff08;一组操作开始前&#xff0c;开启事务&#xff09;&#xff1a;start transaction / begi…