抓包工具哪个最好用?Charles不一定是正解
一、都有哪些抓包工具?
除了程序员们用得最多的finddler、charles,还有系统级抓包的Wireshark,其它更多的直接用浏览器抓包,亦或一些小众的。
二、哪个最好用?
用得多不代表好用,小众里亦有黄金。
用得最多的finddler竟然只支持windows,还有那界面真的习惯吗,可能只是因为人家出现的时间早,吃到了互联网爆发期的红利罢了。
好不容易出了个charles,虽然win和mac都支持,但竟然要收费,一般公司用用破解版的没问题,但涉及到涉密等级高的公司和体制内的公司你敢用破解版软件吗?一般情况下,它确实蛮好用的,颜值高能完全替代finddler,但抓包手机app会出现一些unknow的情况,相信不少小伙伴被整怕了。
抓包工具基本上都是finddler和charles之争,更专业的Wireshark其实大多数人接触不到,只是听过其赫赫威名,有个有意思的现象是,很多同学一旦用过charles再换不回finddler了。
三、哪个适合自动化、爬虫?
上述提到的几个抓包工具都属于exe文件,是需要安装的。可一旦需要在自动化、爬虫领域里规模化应用,那它们都不适用了。
用什么呢?有今天的主角:mitmproxy
mitmproxy 是一款强大的开源抓包工具,支持命令行、Web 界面和 Python 脚本扩展,适合高级用户和开发者进行 HTTP/HTTPS 流量的拦截、分析和修改。以下是其核心功能和使用方法。
四、mitmproxy安装与启动
安装(需 Python 3.6+):
pip install mitmproxy
三种启动模式:
mitmproxy:命令行交互界面(推荐新手)。mitmweb:Web 界面(浏览器访问http://localhost:8081)。mitmdump:无界面模式,用于自动化脚本(类似 Tcpdump)。
五、基本抓包流程
1. 配置手机 / 浏览器代理
确保手机与电脑在同一局域网,获取电脑 IP(如
192.168.1.100)。手机 Wi-Fi 设置 → 代理 → 手动 → 服务器主机名(电脑 IP)→ 端口(默认
8080)。
2. 安装证书
启动 mitmproxy:
mitmproxy或mitmweb。手机浏览器访问: 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"})
八、常见问题与解决
证书安装失败:
确保手机与电脑在同一网络,mitmproxy 正在运行。
尝试在手机浏览器中直接访问
http://mitm.it重新下载证书。
HTTPS 请求显示为乱码:
检查证书是否正确安装并信任。
确认应用未使用证书锁定(SSL Pinning),可通过 Frida 等工具绕过。
性能问题:
使用过滤表达式减少不必要的流量(如
~u /api)。大流量场景建议使用
mitmdump+ 脚本处理,避免界面卡顿。
总结
最强抓包工具非mitmproxy莫属,mitmproxy 适合需要深度定制和自动化的场景,通过 Python 脚本可实现复杂的流量控制和测试逻辑。相比 Fiddler 和 Charles,它更适合技术能力较强的开发者和测试人员。如果需要图形界面和快速上手,可优先使用 Charles;如果需要跨平台和脚本扩展,mitmproxy 是更好的选择。
抓包工具哪个最好用?Charles不一定是正解的更多相关文章
- 抓包工具的感触(charles and fiddler)
最近测mobile,一直徘徊在fiddler 和 charles之间: charles 的证书装了 ,才能正常抓包: 后来因为重定向,分享到扣扣,微信的跳转功能,跳转到wap 或者跳转到PC 或者跳 ...
- 抓包工具Charles使用
设置Reason:最近接触一个APP后台项目,但是不知道APP各个操作访问对应的是后台的哪个接口,迫切需要使用一个抓包工具one by one Charles Free 简单上手快,首选 下载:h ...
- HTTP之手机抓包工具篇
简介 现在手机移动互联网时代 手机app 运用 如日冲天.自然手机app的问题排除也是头疼,明明自己测试 上线的接口正常 到了手机app就不行.怎么办呢?别急,现在有好多手机抓包工具啦! 1. Cha ...
- Fiddler抓包工具的基本操作
Fiddler ——位于客户端和服务器端的HTTP代理 代理:客户端所有请求都先经过fiddler,然后转发到相应服务器 服务器端所有相应都先经过fiddler,然后发送到客户端 1. 常用的HTTP ...
- charles抓包工具的中文乱码解决方法
charles是 MAC上最好用的抓包工具.charles 网上的参考文档已经很多,我就不再赘述啦.只是说说我在安装过程遇到的问题和解决方法,仅供参考. charles抓包的数据中的中文内容显示乱码, ...
- 抓包工具--Fiddler及charles的使用
Fiddler和charles--是抓包工具,可以抓到pc端的请求,手机上设置代理后也可以抓到手机上的请求,也可以修改请求数据和返回的数据. 1.网页抓包,打开Fiddler或Charles应用直接访 ...
- mac端的优秀抓包工具——Charles使用
http://my.oschina.net/u/2340880/blog/508688 mac端的优秀抓包工具——Charles使用 一.简介 二.安装与使用 三.使用Charles在mac上进行抓包 ...
- Android 常用抓包工具介绍之Charles
➠更多技术干货请戳:听云博客 Charles是一款抓包修改工具,相比起TcpDump,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!前面介绍了如 ...
- 抓包工具charles使用教程指南
0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...
- charles使用教程指南(抓包工具)
0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...
随机推荐
- DevEco Studio AI辅助开发工具两大升级功能 鸿蒙应用开发效率再提升
随着搭载HarmonyOS 5的Pura X发布,鸿蒙生态进入快车道,各应用正在加速适配开发,越来越多开发者加入到鸿蒙应用开发浪潮中.为提升鸿蒙应用开发效率,华为前不久上线了首款开发HarmonyOS ...
- LitePal库---DataSupport类被弃用
用LitePalSupport类替换 在使用LitePal库进行CRUD时需要我们的类继承DataSupport类,发现这个类被弃用了, /** * DataSupport is deprecated ...
- Axure RP大数据可视化大屏原型组件源文件
Axure RP大数据可视化大屏原型模板 大数据BI分析上大屏,在很多大企业和政府单位客户都需要,高新区市场监控等,那使用Axure RP做交互原型是必不可少的,有了大屏原型模板可做出不同风格和行业的 ...
- 信息资源管理综合题之“什么是CA 和 什么是数字证书 和 CA实施认证服务的技术基础是什么 和 补全CA签名加密流程图”
一.公钥密码体系和RSA算法是密钥管理.身份认证.防抵赖篡改等安全问题的理论基础和技术保障.题图是运用RSA算法用户A向用户B传送加密信息并进行数学签名的过程.其中A.B的公钥分别为GA.GB,A.B ...
- Vue3的14种组件通信方式
对于日常使用vue3开发项目的前端小伙伴来说,组件通信方式可以说是必会的基本功,今天带大家一起盘下vue3的通信方式. 我们这里按照组件的关系来划分.总共包含14中组件通信方式. 一.父子通信 pro ...
- B1036 跟奥巴马一起编程
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机代 ...
- 适用于Ventoy和VirtualBox的WinToGo系统制作教程
由于篇幅原因,上个教程的内容太多,并且也有挺多地方不能一概而论,因此笔者决定还是将文章拆分开来,便于只需要制作WinToGo系统或LinuxToGo系统的读者 --笔者言 这篇文章适用于只使用Vent ...
- kubernetes之pause容器介绍
一.简单说明 我们在启动Pod的时候,发现有很多pause容器运行.每次启动一个Pod,都会运行一个pause容器.那么这个pause容器究竟是干啥的,它到底有什么作用呢? Pause容器又叫Infr ...
- hot100之数组
最大子数组和(053) 先看代码 class Solution { public int maxSubArray(int[] nums) { int n = nums.length; int subS ...
- y.sum().backward()为什么需要.sum()的思考
这是2.5小节的内容,在网上看了一些回答后仍然不是很清楚,深入思考后忽然想明白了,在此记录一下,希望对和我一样有疑惑的人有所帮助 : ) 首先,需要明确两点: backward是对标量的操作,没办法对 ...