Egern 是面向 Apple 平台的网络工具,可代理、拦截与修改流量,支持丰富规则、策略组、多协议、脚本改写、DNS 与抓包分析,并可 iCloud 同步配置。本文说明如何安装并完成第一次基础连接。
1. Egern 适合哪些用户
Egern(egernapp.com)定位是功能较强的网络管理/调试工具:可记录 TCP、UDP、DNS、HTTP 流量;支持域名/GEO/CIDR/规则集等多种规则;策略组含选择、自动测速、故障转移、负载均衡等;协议覆盖 HTTP、SOCKS5、Shadowsocks、Trojan、Hysteria2、TUIC、VLESS、VMess 等。另有 MITM 解密、URL/头/正文改写与 JavaScript 脚本、本地 HTTP/SOCKS5 服务,以及 DoH/DoT/DoQ DNS 转发,并支持 iCloud 同步配置。
本站收录平台:iOS、macOS。商店常见要求 iOS 16+。它既可作日常代理,也适合需要抓包与改写的进阶场景;客户端不附带节点。
2. 如何下载并安装
打开 Egern 下载与项目入口,通过 App Store 或官网指引安装。站内版本仅供对照,实际以商店为准。
首次启用 VPN / 网络扩展时按系统提示授权。MITM 与 HTTPS 解密涉及证书信任,请只在你理解风险的环境开启。
3. 导入配置并完成第一次连接
打开 Egern 官方站点,对照文档中的配置示例(YAML)。建议第一次:导入或编写最小可用 Profile → 选择策略 → 开启连接并验证浏览器访问 → 再逐步加规则、DNS 或脚本。需要多设备一致时,确认 iCloud 同步已打开。
4. 更新前备份
升级前导出或确认 iCloud 中的配置备份。若更新后规则/脚本失效,记下 Egern 版本、系统版本与提示原文,再到官方文档排查。
资料来源:https://egernapp.com/
安装地址:https://apps.apple.com/us/app/egern/id1616105820
看得透又看得远者prevail. ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx
t.ly/s0R4x t.ly/gDGm6 ppt.cc/fwlgFx ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net ppt.cc/fwpCex ppt.cc/fxcLIx ppt.cc/foX6Ux linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com ppt.cc/ffAGfx ppt.cc/fJbezx ppt.cc/fNIQDx ppt.cc/fCSllx ppt.cc/fybDVx ppt.cc/fIMQxx
Total Pageviews
Saturday, 17 October 2026
Apple平台的网络代理与流量调试工具Egern入门
一个开源神器teledrive,把 Telegram 变成私人云盘,免费无限存储空间
项目地址:
sourceforge.net/projects/teledrive
https://github.com/senapati484/teledrive
程序下载地址: https://sourceforge.net/projects/teledrive/files/v0.1.1/
翻墙工具Stone_Gorge
单文件 Cloudflare Worker,把 Cloudflare 边缘节点当成出口用,走 VLESS over WebSocket。 -当前版本:v1.2.3「添加300节点版」 | (搭建的旧版本可以直接替换进老代码继续使用)
更新日志
-v1.2.3
-内置节点扩至 300:由原生 TLS 实测取最快(香港 / 日本 / 美国 / 新加坡 各约 56、台湾 22、韩国 55 条),命名 优选1 ~ 优选300
-深化加固:运行时自描述串(错误文案 / YAML 组名 / 区域标签 / 探测 URL / DOH UA / connect timeout)二次消隐;修复 _d 解码器 UTF-8 缺陷(中文节点名 / YAML 组名不再乱码)
一个跑在 Cloudflare 边缘上的 Worker,主要做这几件事:
- 生成接入信息:访问
/<UUID>就能拿到可以直接导入客户端的订阅(明文 / Clash 配置 / base64 三种格式) - 跑 WebSocket 隧道:客户端握手升级之后按 VLESS 协议转发流量,支持早期数据
- 转发 DNS:客户端的 DNS 请求走 TCP 53 出去
- 优选地址:你可以自己填优选 IP,也可以挂在线列表,客户端连 IP、握手用你的域名
- 出站竞速:直连和中继一起试,能直连就尽量不绕路
- 建 Worker:Cloudflare 面板 → Workers → 新建一个 Worker,把
src/worker.js全文粘进去(或者用 wrangler 部署)。 - 填必填变量:Settings → Variables 里加一个
UUID,值随便生成一个合法 UUID 就行。 - 拿节点:浏览器打开
https://你的域名/<UUID>。
UUID 是唯一的必填项。不填的话这个 Worker 对外就是个普通网站,不吐任何节点、不建隧道,所有请求都落到伪装页。根路径 / 也已经被锁了,别拿它去取节点,只会看到伪装页。
- 面板:新建 Worker → 粘代码 → Deploy → 绑自定义域
- 脚本:
node tools/deploy-worker.mjs deploy <文件> <脚本名> UUID=<值> - Wrangler:
npx wrangler deploy(仓库没带 wrangler.toml,得自己 init 一个)
自定义域在 Worker 的 Settings → Domains & Routes 里绑。绑了自有域之后 *.workers.dev 那个子域可以关掉,而且自定义域才是推荐的形态。
UUID(必填):接入令牌,决定了/<UUID>能不能访问。没配的话全站只剩伪装页。PROXYIP(选填):自定义中继出口,填host或host:port。全功能模式下生效,TLS 流量优先走它。MASK_HTML(选填):伪装页的内联 HTML;填off/0就关掉伪装(回到 404)。MASK_URL(选填):伪装页站点地址,按原路径把内容取回来;取失败就落回内置默认页。
GET /<UUID>:明文接入条目(默认格式)GET /<UUID>?format=clash或?format=yaml:Clash / Mihomo 配置GET /<UUID>?format=base64或?format=v2ray:base64 订阅GET /<UUID>/clash:也是 YAML 配置(路径写法)- 客户端 UA 里带
clash/mihomo/stash/verge/quantumult/surge/karing这些字样的,自动返回 YAML - 带
Upgrade: websocket且配了UUID的:进 WebSocket 隧道 GET /或其它路径:伪装页(根路径已锁)- 没配
UUID时:所有请求一律伪装页
订阅每行一个节点,长这样(端口决定走 TLS 还是明文):
# 标准 TLS(绝大多数端口)
vless://<UUID>@<IP>:443?encryption=none&security=tls&sni=<你的域名>&fp=chrome&type=ws&host=<你的域名>&path=%2F%3Fed%3D2048#备注名
# 明文(端口是 80/8080 等,见 6.3)
vless://<UUID>@<IP>:80?encryption=none&security=none&type=ws&host=<你的域名>&path=%2F%3Fed%3D2048#备注名
自带的 Clash 配置里有两个策略组:一个手动选(节点选择),一个自动测速(url-test,每 5 分钟探一次),默认规则走手动组。
这是整个项目最关键的一项配置,决定了下发给客户端哪些连接地址。
- 直接写地址:
149.104.28.62:443#香港-01,149.104.28.62:80#香港-01明文 - 在线列表 URL:
https://example.com/list.txt(内容按行解析成host:port#备注)
注意几点:
- 分隔可以用中英文逗号,也可以换行
- 每项写
host:port#备注,#后面是备注名,会原样变成客户端里的节点名 - 多个在线列表 URL 之间一定要用逗号隔开。要是用
#连两个 URL,会被当成网页锚点整个丢掉,表现就是「只取到第一个列表、还毫无报错」。代码现在对这种情况有容错,但别依赖它,老老实实写逗号 - 条数不限:填多少发多少,不截断
- 去重按
host:port算,一样的只留一条。想加一条新节点而不是改个名,IP 或端口至少得有一个不一样 - 你自填的列表只要非空,就完全不会去拉区域池(不会混进没验证过的 IP);只有列表为空时才用实时区域池兜底
- 当前内置列表
- 共 300 条 原生 TLS 实测最快节点,命名为 优选1 ~ 优选300(香港 / 日本 / 美国 / 新加坡 各约 56 条,台湾 22 条,韩国 55 条),全部本机实测可达
- 无固定品牌节点(v1.2.1 曾置顶「熊猫cloud三网机场」,v1.3.0 起移除,节点完全由实测优选池决定) 区域池兜底源是 bestcf.pages.dev 上按地区分的几个 txt。刷新/重建列表用 node build/fetch-fast-nodes.mjs 60 6 build/avail/fastlist300.txt(6 区均衡凑 300,注:build/ 为本地临时目录不进 git),校验用 node tools/verify-preferred.mjs。 提醒:区域池原始可用率只有六到八成,一定要先用 build-nodelist.mjs 预筛过再写进 PREFERRED_LIST,别直接把池子内容贴进来。 节点传输方式:明文还是 TLS(看端口)
接入条目走明文还是 TLS,由优选地址的端口自动决定,不用额外配:
- 端口是
80808088802052208220862095→ 明文 ws,不校验证书 - 其它端口(
44384432053208320872096等)→ 标准 TLS 握手
前提:明文端口走的是 CF 的 HTTP 入口,得把域名在 SSL/TLS → Edge Certificates 里把 Always Use HTTPS 关掉,不然 CF 会把明文请求 301 跳走,而 ws 升级不跟跳转,就连不上。
例外:*.workers.dev 那个子域是平台强制 HTTPS 的,所以这类域名一律不生明文节点,全走 TLS。
同一个 IP 可以同时写两种端口,生成两条(明文 + TLS),客户端自己挑。
在客户端里填订阅地址就行,同一个地址会根据你的 UA 自动适配格式:
https://你的域名/<UUID> # 浏览器/curl 看到明文条目,Clash 系 UA 看到 YAML
https://你的域名/<UUID>?format=clash # 强制 YAML
https://你的域名/<UUID>?format=base64 # 强制 base64
各客户端建议:
- v2rayN / v2rayNG / NekoBox / Shadowrocket:直接填
/<UUID>(明文条目,兼容老客户端) - Clash Verge / Mihomo / Stash / Surge / Karing:直接填
/<UUID>就行(UA 自动识别返回 YAML),或者显式加?format=clash - 任何支持 base64 订阅的:
/<UUID>?format=base64
没匹配到任何路由的请求都会返回伪装页。代码里自带一份中性的默认页,开箱即用不用配;你也可以用部署变量换掉(运行期读,改配置不用重新部署)。优先级从高到低:
MASK_HTML:内联 HTML 原样返回;填off/0就关伪装(回到 404)MASK_URL:把这个站点内容取回来当伪装页。填站点根就透传原路径,填具体页面就固定取那个地址;取失败落回内置默认页,不会暴露上游错误- 都没配 → 内置默认页(一个 Welcome 静态页,返回 200)
已经授权的令牌路径(/<UUID>、/<UUID>/clash)和 WebSocket 通道完全不受伪装配置影响,伪装页只兜底那些没匹配到路由的请求。
注意:MASK_URL 会让这个 Worker 变成那个站点的反向代理,只填你自己拥有或明确授权的站点。
出站逻辑大致是:合规模式开 → 纯直连,不经过任何第三方中继;合规模式关(当前默认)→ 先试自定义中继,再试 SOCKS5,然后直连和中继一起竞速,最后还有备用地址和中继兜底。
细节上直连有个优先窗口,能直连就尽量不绕路;碰到某些目标直连会被回环保护拦掉,这时候窗口就失效。非 TLS 的首包(比如 MTProto 或明文 HTTP)不走 SNI 型中继,否则会连上了但一个字节都收不到。
UUID就是唯一门禁。泄露等于服务被白嫖,别写进公开仓库、别截图、别发聊天记录。怀疑泄露就换个值,面板改一下就行,不用重新部署。- 根路径
/已锁,没配UUID时全站只剩伪装页,对外看就是个普通网站。 PROXYIP和MASK_*这些只在运行期读取,源码里不出现这些字符串明文。- 部署脚本名铁律(Error 1101):每次线上验证必须用全新脚本名 + 全新子域;脚本名避开
edgetunneledtunnelbpbvlesstrojan这类黑名单词。已经污染过的名字(edge-gateway、probe-hard)永远别复用——一旦同名脚本报过 1101,之后同名部署任何内容都会 1101。改完记得重跑加固和校验(见第十二节)。 src/worker.js.pre-harden是没门禁的旧基线,千万别部署——它硬编码了 UUID 还公开根路径。部署前确认源文件是src/worker.js或它重建出来的dist/*。
| 现象 | 原因 | 处理 |
|---|---|---|
| 访问返回 522 | 绑定的域没路由到 Worker | 去 Workers → Settings → Domains 看,确认是「自定义域」而不是只建了 Zone Route |
| 明文节点连不上 | 域名的 Always Use HTTPS 没关,明文被 301 了 | 去 SSL/TLS → Edge Certificates 关掉,或者改用 TLS 端口 |
| 订阅只下发了一部分节点 | 两个在线列表 URL 之间误用了 # 连接,锚点被丢掉 |
改用逗号分隔(代码现在会自动拆,但还是规范写) |
| 节点数比填的少 | host:port 去重了,同 IP 同端口只留一条 |
让重复项端口不同,或删掉重复项 |
| Worker 报 500 | 出站全失败 | 看响应体,检查目标可达性 / 优选 IP 是否已失效 |
| 订阅里中文节点名乱码 | 客户端把明文订阅当成 base64 解了 | 改用 ?format=base64,或者客户端本身 UTF-8 支持不好,换明文订阅 |
包含的能力: v1.2.3 相对 v1.2.1 的变化:
- 内置节点扩至 300:由原生 TLS 实测取最快(香港 / 日本 / 美国 / 新加坡 各约 56、台湾 22、韩国 55 条),命名 优选1 ~ 优选300
- 深化加固:运行时自描述串(错误文案 / YAML 组名 / 区域标签 / 探测 URL / DOH UA / connect timeout)二次消隐;修复 _d 解码器 UTF-8 缺陷(中文节点名 / YAML 组名不再乱码)
- v1.2.1(历史)
- UUID 门禁:
UUID移出源码改成必填部署变量,没配就全站伪装页,根路径锁死 - 内置伪装页:自带默认页开箱即用,
MASK_HTML/MASK_URL可选覆盖 - 优选无上限:删掉下发条数截断,自填非空时不混入区域池
- 分隔符容错:支持中英文逗号和换行,
#误连两个 URL 时自动拆开 - 明文节点:按端口自动判定走明文还是 TLS(修掉了之前 workers.dev 判定写反的 bug)
- 部署工具:
tools/deploy-worker.mjs,支持 deploy / vars / smoke0 / smoke1 / route / unroute / zones / list / delete
from https://github.com/nbsklang-blip/Stone_Gorge
-------------------------------------------------------------------------
相关帖子:
部署VLESS到CloudFlare Worker
deploybase.eu , 欧洲免费静态空间,支持自动构建,每月100gb流量+200分钟构建时间
可以直接进行静态网站托管、自动构建。免费额度每人1个网站,100 GB月流量,200分钟构建时间。
deploybase注册简单,只需验证邮箱,无需手机号、信用卡。
网址:https://deploybase.eu/
注册之后即刻开通。
新建网站
登录之后点击右上角的 New project 创建站点,然后点击左下角的pick from github, 导入你的项目(仓库),我导入的是
github.com/brightmann/hpgi ,平台会从仓库里的代码自动识别构建命令,然后输入name的值(项目名称的值,可用简写形式。其实就是在输入子域名的值),然后点击底部的deploy按钮,等待部署完成,部署完成后,我得到网址:
https://hpgi.sites.deploybase.eu
更新GitHub仓库会触发自动构建,每次大约耗时2分钟。
项目地址:
https://github.com/Huxpro/huxpro.github.io
https://github.com/brightmann/hpgi
博客地址:https://hpgi.sites.deploybase.eu (这是一个jekyll-based website)
我试过导入项目github.com/brightmann/nextjs-lexical-blog ,但不知为何构建失败。