关键词:
抓包
·终端魔法
·一劳永逸
·全平台通用
🔍 你是否也经历过这些抓狂时刻?
- 每次调试都要在浏览器里反复开关 SwitchyOmega 插件
- 手机抓包需要单独配置代理服务器地址
- 命令行工具的网络请求总是"漏网之鱼"
- 无痕模式、跨浏览器抓包困难
- 换台设备就得重新配置全套代理规则
今天分享一个极简全局代理方案,只需三行代码就能实现:
bash
wifi look # 查看网络服务
wifi on # 秒开全局代理
wifi off # 一键恢复自由
wifi help # 查看帮助
效果演示

🛠️ 原理解密:系统级代理的降维打击
传统方案 vs 系统级方案
方案 | 生效范围 | 配置复杂度 | 跨设备同步 |
---|---|---|---|
浏览器插件 | 仅单浏览器 | 高 | ❌ |
系统代理(本文) | 全应用生效 | 极低 | ✅ |
技术内核解析
graph LR
A[终端命令] --> B{networksetup}
B --> C[修改系统网络配置]
C --> D[全局流量重定向]
D --> E[Whistle代理服务器]
🚀 三步实现终极代理方案(Mac 示例)
第一步:注入终端魔法
方法一:使用函数(推荐)
在 ~/.zshrc
中添加函数:
bash
wifi() {
if [[ $1 == "look" ]]; then
networksetup -listallnetworkservices
elif [[ $1 == "on" ]]; then
networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8899
networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8899
echo "🔛 代理已开启"
elif [[ $1 == "off" ]]; then
networksetup -setwebproxystate "Wi-Fi" off
networksetup -setsecurewebproxystate "Wi-Fi" off
echo "🔴 代理已关闭"
else
echo "可用命令:"
echo " wifi look # 查看网络服务"
echo " wifi on # 开启代理"
echo " wifi off # 关闭代理"
fi
}
方法二:使用嵌套别名
bash
alias wifi="noglob _wifi"
_wifi() {
if [[ $1 == "look" ]]; then
shift
networksetup -listallnetworkservices
else
echo "未知命令: wifi $@"
fi
}
使用示例:
bash
# 查看网络服务
wifi look
# 开启代理 (需先定义函数中的 on 逻辑)
wifi on
# 关闭代理
wifi off
增强版函数(带代理状态检查):
bash
wifi() {
local service="Wi-Fi"
case $1 in
look)
networksetup -listallnetworkservices
;;
on)
networksetup -setwebproxy "$service" 127.0.0.1 8899
networksetup -setsecurewebproxy "$service" 127.0.0.1 8899
echo "✅ 全局代理已开启 (127.0.0.1:8899)"
;;
off)
networksetup -setwebproxystate "$service" off
networksetup -setsecurewebproxystate "$service" off
echo "❌ 全局代理已关闭"
;;
status)
echo "\n🛜 代理状态:"
networksetup -getwebproxy "$service"
echo "\n🔒 安全代理状态:"
networksetup -getsecurewebproxy "$service"
;;
*)
echo "wifi 命令集:"
echo " look ➜ 列出网络服务"
echo " on ➜ 开启代理"
echo " off ➜ 关闭代理"
echo " status ➜ 查看代理状态"
;;
esac
}
使用提示:
- 将上述函数添加到
~/.zshrc
文件底部 - 执行
source ~/.zshrc
使配置生效 - 如果网络服务名称不是 "Wi-Fi",请修改
local service="Your-Network-Service-Name"
💡 函数比嵌套别名更推荐,因为它:
- 支持更复杂的逻辑
- 可以处理参数和错误输入
- 允许添加帮助信息和状态反馈
- 避免 zsh 的 glob 扩展问题(无需
noglob
)
执行wifi on
后,PC端代理就完全生效了,无论是什么是*无痕模式*
、还是其它*任意浏览器*
代理都将有效
第二步:跨设备同步配置
手机端同步方案(TB):
graph LR
A[电脑开启热点] --> B[手机连接热点]
B --> C[手动配置代理]
C --> D[服务器=电脑IP]
D --> E[端口=8899]
第三步:信任安全证书
- 浏览器访问
http://127.0.0.1:8899
- 下载 RootCA 证书
- 钥匙串访问 → 证书 → 信任设置为始终允许
✨ 方案优势全景图
pie
title 方案核心优势
"零插件依赖": 35
"全平台通用": 30
"配置极简化": 25
"终端可操作": 10
⚡ 效率提升实测
操作 | 传统方式 | 本方案 |
---|---|---|
开启代理 | 6次点击 | 1命令 |
多设备同步 | 手动配置 | 热点的 |
抓包命令行请求 | 不可用 | 自动抓 |
💡 进阶技巧:给常用场景加特效
bash
# 快速切换测试环境
test-env() {
wifi on
echo "🚦 已切换到测试环境"
}
# 自动抓包并打开控制台
debug-mode() {
w2 start
open http://127.0.0.1:8899
test-env
}
🌟 小结:极简主义的胜利
为什么这个方案值得尝试
特性 | 传统插件方案 | wifi命令方案 |
---|---|---|
覆盖范围 | 仅浏览器 | 全系统应用 |
配置复杂度 | 每个浏览器单独配置 | 一次配置永久生效 |
移动端支持 | 基本不可用 | 完美支持 |
资源占用 | 每个浏览器单独进程 | 零额外资源 |
响应速度 | 插件加载耗时 | 即时生效 |
- 一行函数 = 系统级代理开关
- 零插件 = 告别浏览器依赖
- 全平台通用 = 手机/PC无缝衔接
- 终端集成 = 开发效率倍增器
当我们在复杂的工具链中挣扎时,往往忽略了操作系统本身的能力。这个方案的精妙之处在于:
用系统级原生能力代替第三方插件
用终端命令取代图形界面操作
用极简思维解决复杂问题
下次当你为网络调试焦头烂额时,不妨试试在终端轻轻敲下:
bash
wifi on
让流量掌控回归本质,把时间留给真正的创造吧!🎯
注意:使用此方案的时候,浏览器的SwitchyOmega 插件不要开启,因为插件的优先级会高于系统代理本身。开启的情况下,即使执行了
wifi off
,代理也是生效的。另外,手机安装完证书,一定要重启手机后抓包才能生效。
总结
技术工具演进的本质,是把复杂留给机器,把简单留给人类。这个方案最打动我的地方在于:
当你用
wifi on
瞬间激活整个开发环境,当你在手机终端执行相同命令获得一致体验,
当你告别无数插件切换和配置页面...
操作丝滑流畅,工作体验极佳!
无需安装,不用付费,只要3行代码,就能解锁这样优雅的解决方案------------------这大概就是它的魅力所在吧!