四大抓包神器,非常好用

article/2025/9/28 16:11:03

开发者(KaiFaX)

面向全栈工程师的开发者
专注于前端、Java/Python/Go/PHP的技术社区

来源 | 网络

一、概述

无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇主要介绍如何在各个平台下高效抓包。目前的抓包软件总体可以分为两类,一种是设置代理抓取http包,比如Charles、mitmproxy这些软件。另一种是直接抓取经过网卡的所有协议包,其中最出名就是大名鼎鼎的wireshark以及linux自带的抓包软件tcpdump。下面重点介绍一下这四个抓包工具的特点以及使用

二、Wireshark

wireshark想必大多数程序员都不会陌生。wireshark在各个平台都可以安装使用,它可以抓取经过指定网卡的所有协议。wireshark虽然很强大,但是对初学者其实不是很友好。这也正是由于它太强大,它可以抓取所有包,所以初学者在使用时面对茫茫数据流不知所措。初学者需要认真的去学习怎么过滤得到自己感兴趣的包,但是如果不熟悉wireshark的过滤语法,要过滤数据包将举步维艰。

过滤语法简单介绍

wireshark的过滤语法总结起来其实也很简单,就是以协议开头,后面可以跟着协议的属性,然后加上一些判断符号,比如contains、==、>、<等等。比如只想展示http的协议内容,则直接在过滤器输入框中输入http即可。如下图:

90d53f7d75e268f411825cc8e216f3d5.png

比如我只想看http协议的请求头中uri包含’/api’的协议,就可以这么写:

114a2fdcbc90c767013e7321997b96cf.png

如果想通过目标ip或者来源ip来过滤包,就不可以以http协议为前缀了,因为这些是ip协议的相关属性。通过目标ip来过滤可以这么写:

c637270f50125ac9c03927e27d7c97a7.png

上面表示目标机器的ip是61.135.217.100并且协议是http的包。

wireshark支持很多种协议,我们可以通过右上角的expression来打开搜索支持的协议,还可以找出协议支持的属性,然后填入期待的值,软件会自动为我们构建过滤语句。

28fb9180f3bbde455b1fdc6bb020d3dd.png

46b83b101cedfb8e2bb90a2255612157.png

优缺点

优点:

  • 功能强大,可以抓取所有协议的包

  • 抓到的包容易分析

缺点:

  • 由于线上服务器没有GUI,只有命令行,因此无法在线上服务器使用

  • 无法分析https数据包,由于wireshark是在链路层获取的数据包信息,所以获取到的https包是加密后的数据,因此无法分析包内容。当然,我们可以对https数据包进行解密, 但是操作具有一定的复杂度,可能要消耗很多时间。

三、Tcpdump

tcpdump是linux上自带的一个抓包软件(mac也有),功能强大,也可以抓取经过指定网卡的所有协议包。由于是命令行工具,tcpdump抓取到的包不易于分析,一个常见的做法是将tcpdump抓到的包输出到某个文件,然后将文件拷贝下来用wireshark分析。

tcpdump的简单使用介绍

下面的语句参考文章:

https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

一些简单的过滤参数:

# -i 参数表示抓取指定网卡的内容。具体网卡可以通过 ifconfig 命令查看
# 如果不指定网卡,默认tcpdump只会监视第一个网络接口
tcpdump -i eth1
# 打印所有www.baidu.com相关的包,这个host后面可以填 域名,也可以填ip
tcpdump host www.baidu.com
tcpdump host 192.168.0.1
# 打印 nn1和nn2或nn3 主机间通信的包,这里可以替换成ip
tcpdump host nn1 and \( nn2 or nn3 \)
# 打印nn1和非nn2之间的ip数据包
tcpdump ip host nn1 and not nn2
# 发送者是nn1的数据包
tcpdump -i eth0 src host nn1
# 接受者是nn1的数据包
tcpdump -i eth0 dst host nn1
# 指定tcp端口是23以及host是210.27.48.1数据包
tcpdump tcp port 23 and host 210.27.48.1

抓包内容输出到文件:

# 抓取指定网卡的包输出到test.cap

# 抓取指定网卡的包输出到test.cap
tcpdump -i en0 -w test.cap

之后我们可以把test.cap直接用wireshark打开,就可以很直观的分析包了。

用tcpdump输出cap文件包:

tcpdump -r test.cap

优缺点

优点:

  • 功能强大,可以抓所有协议的包

  • linux自带,直接在所有的服务器上面抓包,这是其他抓包软件不具备的

缺点:

  • 数据包分析困难,需要配合wireshark使用

  • 和wireshark一样,无法分析https数据包

四、Charles

Charles是一款http抓包工具,它是通过代理来实现的抓包。也就是我们在访问网页时需要配置代理,将代理指向Charles监听的端口,之后我们的http请求都会发向Charles的端口,之后Charles会帮我们转发并记录协议内容。

Charles的使用非常简单,配置好代理后,Charles就开始抓包了。我们可以直接通过Charles的GUi查看包的内容:

954208d8611dc9dbc354ca10e2807421.png

上图中的unknown表示https加密后的数据,所以看不到协议的具体内容。我们可以通过安装Charles的证书,让Charles也可以查看https协议的具体内容。

de647968354453b28f93d9c50a56f875.png

优缺点

优点:

  • 使用简单,只需配置一下代理地址就可以

  • 要抓取https协议的配置也很简单,只要安装下charles的证书就可以了

缺点:

  • 只支持抓取http协议

五、mitmproxy

mitmproxy是python写的一款http抓包工具,虽然只支持http抓包,但是它的特性非常强大,它不仅可以抓包,还可以对请求进行拦截、重现等操作。和Charles一样,它的原理也是基于代理,使用的时候需要设置代理指向它。

mitmproxy是命令行工具,但是也自带了mitmweb工具,可以让用户在网页上操作。另外,mitmproxy还支持用户自行编写插件,可以编写脚本对请求进行处理,然后把修改后的请求发出去。

安装

首先需要在机器安装python3以及pip3.之后通过pip3安装

pip3 install mitmproxy

如果安装mitmproxy过程中报错ModuleNotFoundError: No module named '_ssl',就需要安装一下OpenSSL,然后再重新编译安装一下python3

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++
# 去Python3的安装目录再次安装编译一次python3
make && make install

安装好openSSL后再执行pip3 install mitmproxy

使用

安装后,直接在命令行输入mitmproxy就会进入它的交互界面:

2dd030b6c9c34a701259fd4a94150e6a.png

这时候mitmproxy已经开始监听8080端口(默认),接着,我们可以去浏览器设置代理。浏览器设置代理的方式有很多,这里不多做介绍。

设置完代理后,访问浏览器的请求都会被发到mitmproxy上,mitmproxy根据规则对请求进行拦截(不配置拦截规则的话则都不拦截),所有经过的请求都会被输出:

1465c5e802802a117b82061d6554e1f5.png

在交互界面上可以通过快捷键操作请求。输入问号’?’,可以查看快捷键的文档。

684b9157a178ae12f6c8cd60ff780378.png

下面介绍一些常用的快捷键和功能

1. 请求过滤

在请求列表交互界面,按下f键后,可以输入一些过滤规则:

b73d626ebd93e674fc0382fbebe4e4ba.png

具体的过滤语法可以按下’?‘键后,再按下方向键右’—>'或者l键。

7b0546553883d96c77000a10d492a9f6.png

2. 请求拦截

按下i键后,可以对指定的请求进行拦截。按mitmproxy收到指定条件的请求时,不会立马把它转发出去,而是等待我们执行resume操作后,才会把请求转发出去——在这期间我们甚至可以对请求进行手动修改。

2b493f95f47def73e2405fedd57e7909.png

红色字体表示该请求被拦截

之后我们可以按入a键来恢复该请求,可以输入A键恢复所有被拦截的请求。

3. 查看/编辑请求

把指示光标移动到某个请求上,按回车可以查看请求的内容。或者鼠标直接点击请求也可以。

877091bdf3f51d957deb61139d6bef52.png

之后通过左右方向键可以查看request、response、detail等信息。

如果要编辑请求,可以在这个界面输入e,然后会让我们选择编辑哪块内容:

6aaba0c8552d8d5d9777beb6956ca3fd.png

之后就会进入vim编辑界面编辑相应的内容了(保存后会生效)。

4. 重发请求

mitmproxy的光标指向某个请求时,按下r键可以重发这个请求(重发前可以对该请求进行编辑)。

ea3f6ad6d4671b2e6af9044121f96513.png

按下’:'键后,可以输入命令,这样我们就可以通过过滤规则批量的重发请求

aeb2b06fea802d0118e92f24f88d27c0.png

replay.client是mitmproxy内置的一个命令,我们也可以自行编写命令。命令的编写可以参考官网文档,这里不做介绍。

5. 插件开发

我们可以编写插件,然后在启动的时候指定插件,mitmproxy处理请求的时候会执行一个插件的链,这样我们就可以对请求进行编辑然后再发送出去了。

借用官网的插件demo:

from mitmproxy import ctxclass Counter:def __init__(self):self.num = 0def request(self, flow):self.num = self.num + 1ctx.log.info("We've seen %d flows" % self.num)addons = [Counter()
]

这个方法对每一个请求进行处理,然后打印序号。通过mitmproxy -s test.py来让插件生效。通过插件可以绑定各种连接事件。感兴趣的朋友可以自行去mitmproxy官网看文档,这里不多做介绍。

6. 保存抓到的请求数据

通过w快捷键我们可以把这次抓到的请求包保存到文件上。

通过mitmproxy -r file可以读取以前抓取的请求信息进行分析。

优缺点

优点:

  • 命令行操作,可以在无GUI界面的服务器上使用

  • 安装好mitmproxy提供的证书后,也可以分析https请求

  • 不仅可以抓包,还支持对包的拦截、修改、重复,这是常规抓包软件不具备的

缺点:

  • 仅支持http协议的抓包

附录

mitmproxy官方文档地址:

https://docs.mitmproxy.org/stable/

六、总结

对于这几个抓包神器,我总结了下使用场景:

  • 只抓http协议的话,推荐使用mitmproxy。mitmproxy丰富的功能不仅可以满足我们的抓包需求,还可以提升我们的工作效率。比如测试可以抓包后一键重发请求来重现bug,开发调试的时候可以修改请求内容等等。

  • 如果是在线上的没有GUI的服务器,推荐使用tcpdump,虽然mitmproxy也可以支持命令行抓包,但是生产环境的服务器最好不要乱安装第三方插件。另外,大多数服务器都有装tcpdump。我们可以通过把请求的内容输出到文件,然后拷贝到自己的电脑用wireshark分析。

  • 想要抓取http以外的协议的话,直接上wireshark。功能强大

  • 对于Charles,感觉用了mitmproxy之后,就基本用不上Charles了。Charles好像也可以编辑后再发送,但是感觉不是很好用,可能我用的不是很熟吧。

- END -


1. 回复“m”可以查看历史记录;

2. 回复“h”或者“帮助”,查看帮助;

   开发者已开通多个技术群交流学习,请加若飞微信:1321113940  (暗号k)进开发群学习交流

  说明:我们都是开发者。视频或文章来源于网络,如涉及版权或有误,请您与若飞(1321113940)联系,将在第一时间删除或者修改,谢谢!

e0fcaf72e721233e4a6f57f4024f6b98.png

开 发 者 : KaiFaX

面向全栈工程师的开发者
专注于前端、Java/Python/Go/PHP的技术社区


http://chatgpt.dhexx.cn/article/0UJvKcxd.shtml

相关文章

抓包工具:Fiddler下载、安装、使用 教程

文章目录 抓包工具&#xff1a;Fiddler下载、安装、使用 教程一、Fiddler 下载二、Fiddler 安装三、Fiddler 使用3、Statistics 请求的性能数据分析4、Inspectors 查看数据内容5、AutoResponder 允许拦截指定规则的请求6、Composer 自定义请求发送服务器7、Filters 请求过滤规则…

彩虹歌词-周杰伦

一、歌曲目录 图片来源于&#xff1a;图片来源超链接 二、歌词目录 [歌曲名称:彩虹] [歌曲原唱:周杰伦] [所属专辑:我很忙] [00:14.11]哪里有彩虹告诉我 [00:19.98]能不能把我的愿望还给我 [00:26.56]为什么天这么安静 [00:32.70]所有云都跑到我这里 [00:38.79] [00:39.11] […

css实现霓虹灯特效字体

在开始之前先了解外部字体的引入&#xff1a; vite中字体的引入方法&#xff08;.otf字体等&#xff09;如下&#xff1a; 1、在src下的assets文件夹下创建font文件夹&#xff0c;将下载好的字体包放到该文件夹下 2、在font文件夹下创建font.css文件&#xff0c;如果你用的是…

声音彩虹

今天傍晚&#xff0c;在中国科技馆测试完展品之后从北门出来&#xff0c;忽听得身后偌大的科技馆墙壁上一声声鸟鸣呼啸而过。回身张望&#xff0c;在 一声声啾啾过后&#xff0c;没有看到任何鸟类踪影。 大家点击上面音频可以听到鸟叫的特殊的Chirp声响&#xff0c;是频率从高到…

七彩虹将星x15xs 2022款 怎么样

七彩虹新款的将星X15 XS游戏笔记本正式上市&#xff0c;搭载了英特尔刚刚推出的第十二代酷睿移动版处理器以及NVIDIA RTX 30系显卡&#xff0c;性能有了新的提升。 将星X15-XS依然采用延续了雷震子IP&#xff0c;机器的外观设计非常有特点&#xff0c;苍劲有力的书法“将”字位…

《彩虹屁》快夸夸我!彩虹屁生成器

在线直达地址: https://chp.shadiao.app/ 彩虹屁生成器的工作原理很简单, 每次打开页面或点击按钮,都会生成一句彩虹屁 t027-chp 我渴望你&#xff0c;想和你产生更多的联系&#xff0c;要和你交换香气和灵魂。有时候觉得&#xff0c;你应该遇见一个比我更好的人&#xff0c;可…

HTML5+CSS3小实例:炫彩的发光字特效

前言&#xff1a; 今天我们向大家精选了一款HTML5CSS3文字特效&#xff0c;文字特效有超酷的动画类型&#xff0c;不多说&#xff0c;一起来看看。 描述&#xff1a; 这款文字特效既有倒影的效果&#xff0c;又有随机的颜色&#xff0c;看起来非常的炫酷。全文基于 HTML5CSS3 完…

动态彩虹渐变字效,靓仔,快拿去装逼

前置知识 background-clip: text background-clip属性规定背景的绘制区域。类似photoshop里的 剪贴蒙版 的概念–>(指定一个固定区域,区域的内容随意更换.) 在W3C标准的它有三个值:  **border-box | padding-box | content-box;**动字面上来理解 分别是 以盒边界来裁…

纯 CSS 制作的彩虹条纹文字

效果预览 按下右侧的“点击预览”按钮可以在当前页面预览&#xff0c;点击链接可以全屏预览。 https://codepen.io/comehope/pen/ELpRxj点击预览 可交互视频教程 此视频是可以交互的&#xff0c;你可以随时暂停视频&#xff0c;编辑视频中的代码。 请用 chrome, safari, e…

关于彩虹表的介绍

彩虹表 1.彩虹表产生背景 起初黑客们通过字典穷举的方法进行破解&#xff0c;这对简单的密码和简单的密码系统是可行的&#xff0c;但对于复杂的密码和密码系统&#xff0c;则会产生无穷大的字典。 哈希加密算法是不可逆的&#xff0c;也就是说无论是网站的数据库管理员还是获…

彩虹形成原理

彩虹形成原理 本文摘自书籍《有趣的透镜》对于彩虹形成原理的探索&#xff0c;先从折射引起的散射开始吧&#xff01;最先解释了彩虹发生的基本原理的是,前面提到的笛卡儿和牛顿。 笛卡儿–光的折射 笛卡儿提到了光的折射&#xff0c;在笛卡儿斯涅尔定律中提到&#xff1a;入射…

Js实现彩虹文字

在文本框中输入文字&#xff0c;点击提交按钮或按回车键Ctrl键实现将文字添加在页面上&#xff0c;并采用彩虹颜色的形式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatib…

ps入门第6天_ps渐变字_彩色字 案例:彩虹桥or彩虹字特效

1、获得文字图层&#xff0c;形成文字选区 按住ctrl&#xff0c;同时点击文字图层的T。 2、新建一个图层 文字图层不是一个像素图层&#xff0c;不能编辑&#xff0c;所以要新建一个图层 3、添加渐变色 选择七彩色&#xff0c;然后点击确定&#xff0c;关闭渐变编辑器。 然后…

彩虹

彩虹 该程序是 EasyX 帮助中带的范例程序。略作修改 执行效果如下&#xff1a; 完整源代码如下&#xff1a; // 程序名称&#xff1a;彩虹 // 编译环境&#xff1a;Visual Studio 2013&#xff0c;EasyX 2017-9-19 // 最后更新&#xff1a;2018-12-8 // #include <grap…

Python绘制彩虹

彩虹 1. 列表&#xff08;颜色盒子&#xff09;1.1 概述1.2 颜色盒子使用方法 2. 坐标移动2.1 setx( )2.2 sety( ) 3. 绘制彩虹3.1 彩虹形状3.2 彩虹线条 4. 完整代码5. 颜色跑道 1. 列表&#xff08;颜色盒子&#xff09; 1.1 概述 1.2 颜色盒子使用方法 from turtle impor…

彩虹表(rainbow table)

1 彩虹表引入 在看微众银行开源的WeIdentity规范中的可验证凭证Credential数据结构时&#xff0c;看到有关于防止彩虹表方式反向破解哈希的问题&#xff0c;如下图所示。 在执行选择性披露用户的信息时&#xff0c;是将claim中的其他字段内容进行hash&#xff0c;只披露其中某…

【每日一练】64—CSS实现彩虹文字的动画效果

写在前面 最近有好几个小伙伴来问我&#xff0c;说【每日一练】里的gif动画是用什么软件录制的&#xff0c;在这里&#xff0c;我统一说一下&#xff0c;我录gif动画的工具是&#xff0c;LICEcap&#xff0c;录出来的文件&#xff0c;是默认为gif格式的。 在这里&#xff0c;我…

UGUI之Text彩虹字

博客迁移 个人博客站点&#xff0c;欢迎访问&#xff0c;www.jiingfengji.tech UGUI之Text彩虹字 脚本Rainbow直接挂在Text下 使得每个字母或者汉字均为一种随机颜色 Rainbow脚本如下&#xff1a; using UnityEngine; using System.Collections; using UnityEngine.UI; usi…

html 彩虹字体,拿来就用,超炫彩虹字体送你了

原标题&#xff1a;拿来就用&#xff0c;超炫彩虹字体送你了 还记得小编以前提过的2017设计趋势吗?里面就说到了色彩的渐变和叠加是目前的潮流。其中运用的最广泛的就有彩虹字。一般情况下&#xff0c;要做好彩虹字&#xff0c;那就需要设计师一个一个字来填充颜色、图层叠加&…

关于彩虹表

一、什么是彩虹表&#xff1f; 彩虹表&#xff08;Rainbow Tables&#xff09;就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合&#xff0c;不一定是针对MD5算法的&#xff0c;各种算法的都有&#xff0c;有了它可以快速的破解各类密码。越是复杂的密码&#…