一、都有哪些抓包工具?

除了程序员们用得最多的finddler、charles,还有系统级抓包的Wireshark,其它更多的直接用浏览器抓包,亦或一些小众的。

二、哪个最好用?

用得多不代表好用,小众里亦有黄金。

用得最多的finddler竟然只支持windows,还有那界面真的习惯吗,可能只是因为人家出现的时间早,吃到了互联网爆发期的红利罢了。

好不容易出了个charles,虽然win和mac都支持,但竟然要收费,一般公司用用破解版的没问题,但涉及到涉密等级高的公司和体制内的公司你敢用破解版软件吗?一般情况下,它确实蛮好用的,颜值高能完全替代finddler,但抓包手机app会出现一些unknow的情况,相信不少小伙伴被整怕了。

抓包工具基本上都是finddler和charles之争,更专业的Wireshark其实大多数人接触不到,只是听过其赫赫威名,有个有意思的现象是,很多同学一旦用过charles再换不回finddler了。

三、哪个适合自动化、爬虫?

上述提到的几个抓包工具都属于exe文件,是需要安装的。可一旦需要在自动化、爬虫领域里规模化应用,那它们都不适用了。

用什么呢?有今天的主角:mitmproxy

mitmproxy 是一款强大的开源抓包工具,支持命令行、Web 界面和 Python 脚本扩展,适合高级用户和开发者进行 HTTP/HTTPS 流量的拦截、分析和修改。以下是其核心功能和使用方法。

四、mitmproxy安装与启动

  1. 安装(需 Python 3.6+):

    pip install mitmproxy
  2. 三种启动模式

    • mitmproxy:命令行交互界面(推荐新手)。

    • mitmweb:Web 界面(浏览器访问 http://localhost:8081)。

    • mitmdump:无界面模式,用于自动化脚本(类似 Tcpdump)。

五、基本抓包流程

1. 配置手机 / 浏览器代理

  • 确保手机与电脑在同一局域网,获取电脑 IP(如 192.168.1.100)。

  • 手机 Wi-Fi 设置 → 代理 → 手动 → 服务器主机名(电脑 IP)→ 端口(默认 8080)。

2. 安装证书

  • 启动 mitmproxy:mitmproxymitmweb

  • 手机浏览器访问: http://mitm.it

    ,下载对应系统的证书并安装:

    • iOS:设置 → 通用 → 描述文件与设备管理 → 安装证书 → 关于本机 → 证书信任设置 → 信任。

    • Android:设置 → 安全 → 加密与凭据 → 从存储设备安装 → 选择证书。

3. 查看流量

  • 在 mitmproxy 界面中,使用方向键浏览请求,按 Enter 查看详情,按 q 返回列表。

  • 在 mitmweb 界面中,浏览器会显示请求列表、响应内容、时间线等可视化数据。

六、Python 脚本扩展

mitmproxy 最强大的功能是通过 Python 脚本实现自动化拦截和修改。

示例 1:修改请求头

创建脚本 modify_headers.py

def request(flow):
# 添加自定义请求头
flow.request.headers["User-Agent"] = "MitmProxy/1.0"
# 重定向请求
if "example.com" in flow.request.url:
flow.request.url = flow.request.url.replace("example.com", "test.com")

运行脚本:mitmproxy -s modify_headers.py

示例 2:篡改响应内容

创建脚本 modify_response.py

def response(flow):
if "json" in flow.response.headers.get("Content-Type", ""):
# 修改 JSON 响应
data = flow.response.json()
data["modified"] = True
flow.response.text = str(data)

示例 3:模拟弱网环境

创建脚本 slow_internet.py

from mitmproxy import ctx

def request(flow):
# 延迟所有请求 2 秒
ctx.master.commands.call("flow.sleep", [flow], 2)

七、高级用法

1. 抓包 HTTPS

  • 默认情况下,mitmproxy 会自动解密 HTTPS 流量,需确保:

    • 手机已安装并信任 mitmproxy 证书。

    • 脚本中未禁用 SSL 验证(如 verify=False)。

2. 多设备同时抓包

  • 在电脑上启动 mitmproxy,多个手机 / 设备配置相同的代理(电脑 IP + 8080 端口),流量会汇总显示。

3. 导出数据

  • 使用mitmdump将流量保存为 JSON 或 CSV:

    mitmdump -w output.json  # 保存为 JSON
    mitmdump -s "print(request.url)"  # 自定义输出

4. 与其他工具集成

  • 通过 Python API 将 mitmproxy 集成到自动化测试框架(如 pytest):

    from mitmproxy import http

    def request(flow: http.HTTPFlow) -> None:
    if flow.request.url.endswith("/api/data"):
    flow.response = http.HTTPResponse.make(
    200,
    b'{"mitmproxy": "intercepted"}',
    {"Content-Type": "application/json"})

八、常见问题与解决

  1. 证书安装失败

    • 确保手机与电脑在同一网络,mitmproxy 正在运行。

    • 尝试在手机浏览器中直接访问 http://mitm.it 重新下载证书。

  2. HTTPS 请求显示为乱码

    • 检查证书是否正确安装并信任。

    • 确认应用未使用证书锁定(SSL Pinning),可通过 Frida 等工具绕过。

  3. 性能问题

    • 使用过滤表达式减少不必要的流量(如 ~u /api)。

    • 大流量场景建议使用 mitmdump + 脚本处理,避免界面卡顿。

总结

最强抓包工具非mitmproxy莫属,mitmproxy 适合需要深度定制和自动化的场景,通过 Python 脚本可实现复杂的流量控制和测试逻辑。相比 Fiddler 和 Charles,它更适合技术能力较强的开发者和测试人员。如果需要图形界面和快速上手,可优先使用 Charles;如果需要跨平台和脚本扩展,mitmproxy 是更好的选择。

 

抓包工具哪个最好用?Charles不一定是正解的更多相关文章

  1. 抓包工具的感触(charles and fiddler)

    最近测mobile,一直徘徊在fiddler 和 charles之间: charles 的证书装了 ,才能正常抓包: 后来因为重定向,分享到扣扣,微信的跳转功能,跳转到wap 或者跳转到PC  或者跳 ...

  2. 抓包工具Charles使用

    设置Reason:最近接触一个APP后台项目,但是不知道APP各个操作访问对应的是后台的哪个接口,迫切需要使用一个抓包工具one by one Charles  Free  简单上手快,首选 下载:h ...

  3. HTTP之手机抓包工具篇

    简介 现在手机移动互联网时代 手机app 运用 如日冲天.自然手机app的问题排除也是头疼,明明自己测试 上线的接口正常 到了手机app就不行.怎么办呢?别急,现在有好多手机抓包工具啦! 1. Cha ...

  4. Fiddler抓包工具的基本操作

    Fiddler ——位于客户端和服务器端的HTTP代理 代理:客户端所有请求都先经过fiddler,然后转发到相应服务器 服务器端所有相应都先经过fiddler,然后发送到客户端 1. 常用的HTTP ...

  5. charles抓包工具的中文乱码解决方法

    charles是 MAC上最好用的抓包工具.charles 网上的参考文档已经很多,我就不再赘述啦.只是说说我在安装过程遇到的问题和解决方法,仅供参考. charles抓包的数据中的中文内容显示乱码, ...

  6. 抓包工具--Fiddler及charles的使用

    Fiddler和charles--是抓包工具,可以抓到pc端的请求,手机上设置代理后也可以抓到手机上的请求,也可以修改请求数据和返回的数据. 1.网页抓包,打开Fiddler或Charles应用直接访 ...

  7. mac端的优秀抓包工具——Charles使用

    http://my.oschina.net/u/2340880/blog/508688 mac端的优秀抓包工具——Charles使用 一.简介 二.安装与使用 三.使用Charles在mac上进行抓包 ...

  8. Android 常用抓包工具介绍之Charles

    ➠更多技术干货请戳:听云博客 Charles是一款抓包修改工具,相比起TcpDump,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!前面介绍了如 ...

  9. 抓包工具charles使用教程指南

    0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...

  10. charles使用教程指南(抓包工具)

    0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...

随机推荐

  1. 【深入解析AQS】从设计模式到ReentrantLock实现再到自定义锁

    深入解析AQS:设计模式.ReentrantLock实现与自定义锁开发 一.模板方法模式:AQS的架构基石 1.1 模式核心思想 模板方法模式通过固定算法骨架+可变实现细节的设计,实现了代码复用与扩展 ...

  2. packer 学习笔记

    前言 网上有一个老哥用 packer 制作镜像的博客里开篇就提到[1]. Failure is success in progress. -- Albert Einstein 不要害怕失败,在用 pa ...

  3. 在 .NET 中使用 Sqids 快速的为数字 ID 披上神秘短串,轻松隐藏敏感数字!

    前言 在当今数字化时代,数据的安全性和隐私性至关重要.随着网络应用的不断发展,数字 ID 作为数据标识和访问控制的关键元素,其保护显得尤为重要.然而,传统的数字 ID 往往直接暴露了一些敏感信息,如顺 ...

  4. 在鸿蒙NEXT开发中实现一个语音识别组件

    鸿蒙系统发布以后都不知道叫它5.0版本还是NEXT版本了,哈哈,反正是最新版本就对了.对于语音转换文字,鸿蒙系统提供了离线语音识别模型speechRecognizer,语种目前支持中文,识别效果非常不 ...

  5. Helm课程资料

      第一章.helm介绍.组件.安装和目录结构 1.helm3课程简介 helm3课程简介第一章.helm介绍.组件.安装和目录结构第二章.编写一个chart和helm内置对象详解第三章.helm3常 ...

  6. error:<init>(Ljava/lang/String;)V

    在同一个包或类名中,有重名的类哦 解决方法:换个在当前包或工程内没用过的类名就KO 照例来个eg:在javaDasic包里已有Person类,报错如下,是不是蛮熟悉咩 换个没用过的类名,例如把Pers ...

  7. L1-1、Prompt 是什么?为什么它能“控制 AI”?

    *--Prompt 入门 L1-1 想象一下,你只需输入一句话,AI 就能自动为你写一篇文案.生成一份报告.甚至规划你的创业计划.这种"对话即编程"的背后魔法,就是 Prompt ...

  8. odoo14、15里tree上加button【系统原生功能】

    odoo14.15里面tree视图已经添加了跟form一样的header标签,后面列表写button可以由此处扩展 系统案例:注意:按钮要选择数据后才出现 代码如下: <tree string= ...

  9. WPF与WinForm的对比

    WPF与WinForm的对比 本文同时为b站WPF课程的笔记,相关示例代码 创建新项目 在vs2022中,这两者分别叫做WPF应用和Windows窗体应用. 渲染引擎和设计 WPF使用DirectX作 ...

  10. Hive对JSON格式的支持研究

    一.背景 JSON是一种通用的存储格式,在半结构化存储中十分常见,部分场景已经开始存在以JSON格式贴源存储的数据,作为下游数据使用方,我们亟需对JSON格式的数据进行加工和处理,以提取出我们需要的数 ...