Ater.Free.EscapeHole
0.2.3
dotnet tool install --global Ater.Free.EscapeHole --version 0.2.3
dotnet new tool-manifest
dotnet tool install --local Ater.Free.EscapeHole --version 0.2.3
#tool dotnet:?package=Ater.Free.EscapeHole&version=0.2.3
nuke :add-package Ater.Free.EscapeHole --version 0.2.3
Ater.Free.EscapeHole
Ater.Free.EscapeHole 是一个基于 Mihomo (Clash Meta) 的 dotnet tool 命令行代理工具。它支持订阅管理、节点测速、交互式节点选择、本地代理启动/停止、自定义域名规则,以及 Windows/Linux 下的用户级全局代理环境变量配置。
当前工具内置 Windows x64 与 Linux x64 运行时资源;Linux 端会使用内置的 winnet.gz 压缩包部署 Mihomo 兼容运行时。
运行要求
- 操作系统:Windows 10/11 或 Linux x64
- .NET 10 Runtime
escape connect 的本地代理模式支持 Windows 与 Linux。使用 --global 时:
- Windows:设置 Windows 当前用户系统代理,并设置用户环境变量
http_proxy、https_proxy、no_proxy。 - Linux:写入用户环境变量配置
~/.config/environment.d/escape-proxy.conf,并尽量同步到 systemd user environment。 - 停止代理、发现代理进程异常退出,或启动失败回滚时,会恢复/清理这些代理设置。
安装
dotnet tool install --global Ater.Free.EscapeHole
安装后,全局命令为 escape。
快速开始
添加 Clash/Base64 订阅:
escape sub add mysub https://example.com/subscribe
也可以添加一个带用户名和密码的 HTTPS Proxy 单节点订阅(Password 模式,不查询权益或用量):
escape sub add freeway https://proxy-user:proxy-password@proxy.example.com:8080
Authorization 模式使用 token URI;工具会在连接前验证权益并在 refresh 时刷新用量:
escape sub add freeway https://proxy.example.com:8080/{base64(Guid::email)}
刷新订阅并查看节点:
escape sub refresh mysub
escape node list mysub
连接代理:
escape connect mysub
工具会启动临时 Mihomo 实例并发测速;单个节点 5 秒内无响应会被标记为不可达。存在多个可达节点时,会列出延迟并让你选择。
使用全局代理模式:
escape connect mysub --global
查看和停止当前代理:
escape status
escape stop
可以直接运行 escape connect 连接上次使用的订阅和节点;如果没有历史连接,工具会自动从已保存订阅中寻找可达节点。
命令参考
订阅命令
escape sub add <名称> <URL>
添加一个订阅。
<名称>:订阅名称,用于后续管理。<URL>:Clash/Base64 订阅链接,或https://用户名:密码@服务器:端口格式的 HTTPS Proxy 单节点。
HTTPS Proxy 的凭据会保存在本地配置中;sub list 会隐藏密码。
escape sub refresh <名称>
重新下载并解析订阅,更新节点列表。
escape sub list
列出所有订阅,包括名称、URL、节点数量和最后更新时间。
escape sub delete <名称>
删除指定订阅。如果删除的是当前活动订阅,会自动切换到剩余订阅或清空当前选择。
节点命令
escape node list <名称>
列出指定订阅中的所有缓存节点及其最近一次测速状态。
连接命令
escape connect [名称] [--global]
测速、选择并启动代理。
[名称]:可选。指定订阅名称;不指定时优先恢复上次连接。--global:可选。启用用户级全局代理设置。
执行流程:
- 启动临时 Mihomo 实例。
- 以更高并发测试节点延迟;单节点超时为 5 秒。
- 自动选择唯一可达节点,或在多个可达节点中交互选择。
- 启动正式代理并保存 CLI 会话。
- 如果使用
--global,同步设置系统/用户代理环境。
escape status
显示当前 CLI 管理的代理会话,包括 PID、订阅、节点、端口、模式和启动时间。若进程已异常退出,会自动清理会话和全局代理设置。
escape stop
停止当前 CLI 管理的 Mihomo 代理进程。
- 本地模式只停止代理并清理会话。
--global模式会恢复 Windows 系统代理设置,并恢复/清理http_proxy、https_proxy、no_proxy。- 如果代理进程已经退出,也会执行同样的会话和代理设置清理。
规则命令
自定义规则会写入 Mihomo 配置并优先于订阅规则。默认添加代理规则;加 --no 或兼容写法 -no 时添加直连规则。
escape rules add <域名> [--no]
添加域名规则。
escape rules add google.com
escape rules add intranet.example.com --no
escape rules remove <域名> [--no]
删除域名规则。
escape rules list
列出所有自定义代理和直连域名规则。
配置命令
escape config proxy_port <端口号>
配置本地代理端口,默认值为 7890。
所有连接统一使用 Mihomo 规则分流:自定义 rules 优先,其次局域网和国内域名/IP 直连,然后继续匹配订阅自带规则,最后使用订阅的兜底策略。智能分流依赖工具内置的 geosite.dat 和 geoip.dat。
escape config loopback <enable|disable>
开启或清除 Windows 回环白名单。
enable:为当前用户已安装的 Windows App 包添加 loopback exemption,便于 UWP/商店应用访问127.0.0.1本地代理。disable:清除 Windows loopback exemption 列表。- Linux 不支持该功能,执行时会提示仅支持 Windows。
English: escape config loopback enable enables Windows loopback exemptions for installed app packages; escape config loopback disable clears the exemption list.
数据文件
配置和会话数据存储在:
%LOCALAPPDATA%\EscapeService\
Linux 通常对应:
~/.local/share/EscapeService/
| 文件 | 说明 |
|---|---|
config.json |
订阅、端口、规则和最近连接设置 |
escape-session.json |
CLI 活动代理会话记录 |
winnet\ |
Winnet/Mihomo 可执行文件、GeoIP 数据和配置 |
--global 在 Linux 上还会写入:
~/.config/environment.d/escape-proxy.conf
排查问题
查看帮助:
escape --help
escape connect --help
如果命令异常,错误信息会直接打印到终端。代理启动失败时,工具会尽量停止已启动的进程并清理全局代理设置。
许可证
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
1. Support credentialed HTTPS Proxy URLs through sub add.
2. Remove the connect-http command.