四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

01概述

无论是开发还是测试,在工作中经常会遇到需要抓包的时候。本篇文章主要介绍如何在各个平台下,高效的抓包。

目前的抓包软件总体可以分为两类:

  • 一种是设置代理抓取http包,比如charles、mitmproxy这些软件。
  • 另一种是直接抓取经过网卡的所有协议包,其中最出名就是大名鼎鼎的Wireshark以及linux自带的抓包软件tcpdump

下面重点介绍一下这四个抓包工具的特点以及使用。

02wireshark

wireshark想必大多数程序员都不会陌生。wireshark在各个平台都可以安装使用,它可以抓取经过指定网卡的所有协议。wireshark虽然很强大,但是对初学者其实不是很友好。

这也正是由于它太强大,它可以抓取所有包,所以初学者在使用时面对茫茫数据流不知所措。初学者需要认真的去学习怎么过滤得到自己感兴趣的包,但是如果不熟悉wireshark的过滤语法,要过滤数据包将举步维艰。

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

过滤语法简单介绍

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

如下图:

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

优点:

  • 功能强大,可以抓取所有协议的包
  • 抓到的包容易分析

缺点:

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

03Tcpdump

tcpdump是linux上自带的一个抓包软件(mac也有),功能强大,也可以抓取经过指定网卡的所有协议包。

由于是命令行工具,tcpdump抓取到的包不易于分析,一个常见的做法是将tcpdump抓到的包输出到某个文件,然后将文件拷贝下来用wireshark分析。

一些简单的过滤参数:

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

抓包内容输出到文件:

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

用tcpdump输出cap文件包:

tcpdump-r test.cap

04Charles

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

Charles的使用非常简单,配置好代理后,Charles就开始抓包了。

我们可以直接通过Charles的GUi查看包的内容:

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

优点

  • 使用简单,只需配置一下代理地址就可以
  • 要抓取https协议的配置也很简单,只要安装下charles的证书就可以了

05mitmproxy

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

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

1、安装

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

pip3 install mitmproxy

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

安装好openSSL后再执行pip3 install mitmproxy

2、使用

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

① 请求过滤

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

②请求拦截

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

③ 查看/编辑请求

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

④ 重发请求

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

⑤ 插件开发

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

借用官网的插件demo:

四大网络抓包神器,总有一款适合你(四大网络抓包神器,总有一款适合你的游戏)

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

⑥ 保存抓到的请求数据

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

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

优点:

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

06总 结

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

  • 只抓http协议的话:推荐使用mitmproxy。mitmproxy丰富的功能不仅可以满足我们的抓包需求,还可以提升我们的工作效率。比如测试可以抓包后一键重发请求来重现bug,开发调试的时候可以修改请求内容等等
  • 如果是在线上的没有GUI的服务器:推荐使用tcpdump,虽然mitmproxy也可以支持命令行抓包,但是生产环境的服务器最好不要乱安装第三方插件。另外,大多数服务器都有装tcpdump。我们可以通过把请求的内容输出到文件,然后拷贝会自己的电脑用wireshark分析。
  • 想要抓取http以外的协议的话:直接上wireshark。功能强大。对于Charles,感觉用了mitmproxy之后,就基本用不上Charles了。Charles好像也可以编辑后再发送,但是感觉不是很好用,可能我用的不是很熟吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月20日 下午7:30
下一篇 2024年5月20日 下午7:42

相关推荐

  • 免费工程项目管理软件

    免费工程项目管理软件: 一个让项目管理更快速,更精确,更自由的软件 随着数字化时代的到来,项目管理已经成为了企业和组织中不可或缺的一部分。传统的手动管理方式已经无法适应快速变化的工…

    科研百科 2024年7月21日
    4
  • 阿里巴巴的低代码开发

    阿里巴巴的低代码开发 阿里巴巴是中国最著名的互联网公司之一,它拥有庞大的电子商务平台和先进的人工智能技术。然而,阿里巴巴的成功不仅仅依赖于其技术和创新能力,还依赖于其低代码开发技术…

    科研百科 2024年10月30日
    4
  • 岗集科研项目

    岗集科研项目 岗集科研项目是位于中国广东省广州市的岗集科技园区的一项前沿科技研究项目。该项目旨在通过引入最新的科技手段和设备,推动人工智能领域的发展,为人们带来更多的便利和创新。 …

    科研百科 2025年2月25日
    1
  • 故事化 项目管理 图书

    《项目管理:一个士兵的故事》 从前,有个士兵名叫李明,他是一名优秀的士兵,但他总是被他的上级批评。李明的上级告诉他,他需要完成一项任务,但这项任务非常危险,需要他冒着生命危险前往敌…

    科研百科 2024年10月19日
    3
  • 【竞进足迹2022】党支部和党员队伍管理篇

    竞进足迹2022 党支部和党员队伍管理篇  一年来,在省委组织部的精心指导下,东营市严把政治关、程序关,持续抓重点、破难点,党支部和党员队伍建设取得扎实成效,经验做法多次在省级以上…

    科研百科 2023年2月15日
    298
  • 合同管理方式有哪些

    合同管理方式是指企业、组织或个人根据一定的合同协议,对某项经济活动或事项进行管理和支配的方式。合同管理方式有许多种,下面列举几种常见的合同管理方式: 1. 传统的合同管理方式:这种…

    科研百科 2025年1月6日
    4
  • 真不用花几千块买NAS!不花一分钱,利用旧电脑打造好用的 NA

    无需购买NAS,无需花费数千元,我们可以利用旧电脑来搭建一个好用的网络存储系统。在本文中,我们将介绍如何利用旧电脑搭建一个简单、实用的网络存储系统,以便更好地管理文件和数据。 首先…

    科研百科 2024年12月7日
    2
  • 项目管理信息系统pmis 价格

    项目管理信息系统(PMIS)是一种用于管理和跟踪项目进展情况的计算机软件系统。在现代商业环境中,项目管理人员越来越需要使用PMIS来提高工作效率,确保项目能够按时交付,并满足客户需…

    科研百科 2025年1月28日
    2
  • 工程项目管理绩效考核办法

    工程项目管理绩效考核办法 工程项目管理是项目管理中的重要组成部分,其目的是确保项目按时、按质、按量完成,并达到预期的目标。为了激励和评估工程项目管理人员的工作表现,制定一套科学的绩…

    科研百科 2025年1月8日
    3
  • 项目研究内容及主要技术指标怎么写

    项目研究内容及主要技术指标 随着科技的不断发展,人们对于环境保护的要求也越来越高。因此,我们计划研究一款可降解的塑料,以减少对环境的影响。 我们的研究内容主要涉及以下方面: 1. …

    科研百科 2024年10月13日
    8