欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

mitmproxy

mitmproxy — 一个开源的中间人代理工具,让你能拦截、查看和修改HTTP/HTTPS流量,调试API和抓包利器。

如果你写过前端、调过后端,或者跟第三方API打过架,你大概率遇到过这种场景:浏览器里一切正常,但线上就是报错;App发了个请求,你完全不知道它带了什么参数;或者你想看看某个网站到底在偷偷上传什么数据。这时候你就需要一个能“偷看”网络流量的工具。

市面上抓包工具不少,Fiddler、Charles、Wireshark……但它们要么收费,要么界面老旧,要么只能在特定系统上跑。而我今天要聊的 mitmproxy,是个完全不一样的存在——它是个纯命令行的中间人代理,跨平台、免费、可编程,而且一旦你习惯了它的操作方式,你会觉得其他工具都太“重”了。

这个工具到底能干什么?

简单说,mitmproxy 就是把你电脑变成一个“中间人”。你让设备的网络流量先经过它,它就可以解密、查看、修改甚至重放这些流量。它最擅长的事:

  • 调试API:你发一个请求,它能告诉你完整的请求头、请求体、响应内容,精确到每个字节。
  • 移动端抓包:把手机代理设到电脑上,App的所有HTTPS请求一览无余。
  • 模拟后端返回:开发时后端还没写好?用mitmproxy把特定接口的响应改成你要的假数据。
  • 安全测试:检查HTTPS证书是否正确、有没有中间人攻击漏洞。
  • 自动化脚本:用Python写个脚本,自动拦截并修改流量,比如批量替换图片URL、自动添加请求头。

最爽的是,它不像Charles那样需要破解,也不像Fiddler那样只能在Windows上跑。终端党、Vim党、喜欢管道的同志们,mitmproxy就是为你们设计的。

下载与安装

先去官网看一眼:
mitmproxy 官网

安装方式取决于你的操作系统,我推荐最省心的方式:

macOS

brew install mitmproxy

Homebrew一键搞定,它会自动把mitmproxy、mitmweb、mitmdump三个命令都装好。

Windows

建议用Chocolatey或者直接下载exe安装包:

choco install mitmproxy

或者去GitHub Releases下载最新版的Windows安装包。

Linux(Ubuntu/Debian)

sudo apt install mitmproxy

如果源里版本太旧,用pip装最新版:

pip install mitmproxy

验证安装

打开终端,输入:

mitmproxy --version

看到版本号就说明装好了。

基础使用教程

第一步:启动代理

mitmproxy 有三种启动方式,对应不同场景:

  • mitmproxy:纯终端交互界面,最强大,适合熟悉键盘操作的人。
  • mitmweb:启动一个Web界面,用浏览器操作,适合新手。
  • mitmdump:纯命令行,不启动界面,适合写脚本自动处理。

先试最简单的 mitmweb:

mitmweb

浏览器会自动打开一个页面,地址是 http://127.0.0.1:8081。同时mitmproxy会在本机8080端口启动代理服务。

第二步:配置系统代理

要让流量经过mitmproxy,你需要把系统的HTTP/HTTPS代理指向 127.0.0.1:8080。

macOS:系统偏好设置 → 网络 → 高级 → 代理 → 勾选“网页代理(HTTP)”和“安全网页代理(HTTPS)”,地址填127.0.0.1,端口8080。

Windows:设置 → 网络和Internet → 代理 → 手动设置代理 → 开启“使用代理服务器”,地址127.0.0.1,端口8080。

Linux:在终端里临时设置:

export http_proxy=http://127.0.0.1:8080
export https_proxy=http://127.0.0.1:8080

设置好后,打开浏览器随便访问一个网站(比如baidu.com)。你会立刻在mitmweb界面上看到一堆请求冒出来。

第三步:安装HTTPS证书

你会发现HTTPS网站都报“不安全”或者“证书错误”。这是因为mitmproxy需要安装它的根证书,让系统信任它这个“中间人”。

  1. 先确保代理已设置,浏览器访问 http://mitm.it
  2. 页面会自动检测你的系统,点击对应平台的证书下载按钮
  3. 下载后双击安装,选择“信任此证书”

macOS:安装后去“钥匙串访问”找到mitmproxy证书,双击→“信任”→“始终信任”。

Windows:安装时选择“受信任的根证书颁发机构”。

移动端:手机设代理后,同样访问 http://mitm.it,下载安装证书。Android 7以上需要额外操作(把证书装到系统证书目录),iOS需要去“设置→通用→关于本机→证书信任设置”里开启信任。

装完证书再刷新页面,HTTPS请求就能正常显示了。

第四步:基本操作

在mitmweb界面里,你能看到所有流经的请求。点击任意一条,右边会显示详情:Request(请求头、请求体)、Response(响应头、响应体)。你可以:

  • 暂停/修改请求:点击“Edit”按钮,修改请求参数或请求头,然后点“Replay”重新发送。
  • 拦截响应:在设置里开启“拦截”,可以拦截特定URL的响应,手动修改后再放行。
  • 保存流量:点击“Save”导出为har格式,方便后续分析。

如果你用的是终端版的 mitmproxy,操作更酷——全键盘操作,按 ? 看帮助,按 q 退出,按 j/k 上下移动,按 Enter 查看详情,按 e 编辑当前条目。

进阶技巧

1. 用脚本自动修改流量

这是mitmproxy最强大的地方。写一个Python脚本,比如把某个接口的返回值改成你想要的数据:

# redirect_response.py
from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    # 如果请求的是某个API
    if "api.example.com/data" in flow.request.pretty_url:
        # 直接返回假数据
        flow.response = http.Response.make(
            200,
            b'{"status": "ok", "data": "hacked!"}',
            {"Content-Type": "application/json"}
        )

启动时带上脚本:

mitmproxy -s redirect_response.py

从此所有匹配的请求都会被你的假数据拦截。后端还没写好?没问题,前端先跑起来。

2. 录制并重放流量

用mitmdump录制所有流量到文件:

mitmdump -w traffic.flow

之后用 mitmproxy 或 mitmdump 重放:

mitmdump -nC traffic.flow

这在做压力测试或者复现bug时特别有用。

3. 配合浏览器使用

如果你只想代理特定浏览器(比如Chrome),而不影响系统其他应用,可以启动Chrome时指定代理:

google-chrome --proxy-server=http://127.0.0.1:8080

这样只有这个浏览器走mitmproxy,系统其他软件不受影响。

4. 过滤请求

在mitmweb的搜索框里写过滤表达式,比如:

  • ~u api:只显示URL包含"api"的请求
  • ~m POST:只显示POST请求
  • !~u .js:排除所有JavaScript文件

这些过滤规则在终端的 mitmproxy 里同样有效。

写在最后

mitmproxy 是我用过最顺手的抓包工具,没有之一。它不占内存、不弹广告、不收费,而且因为可编程,能做的事情远超传统GUI工具。唯一的学习成本是:你需要适应键盘操作和命令行思维。但一旦跨过这个门槛,你会觉得其他工具都太“重”了。

如果你还在用Fiddler或者Charles,不妨试试mitmproxy。从 mitmweb 开始,慢慢过渡到 mitmproxy 终端版,你会打开新世界的大门。

最后提醒一句:抓包工具请用在合法场景,不要窥探他人隐私,不要用于非法破解。技术无罪,但使用技术的人要有底线。

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消