Skip to content

liliBestCoder/ghost-proxifier-pro

Repository files navigation

Logo

Ghost Proxifier Pro

🇬🇧 English  · Download  · Website

已支持应用 · 解决了什么问题 · 架构 · 原理 · 特性 · 使用 · 运行截图 · FAQ

进程级透明代理引擎 — 通过 DLL 注入 Hook Winsock API,将目标进程的所有网络流量透明转发到 HTTP 代理。无需修改路由表,无需安装虚拟网卡,代理节点对应用完全不可见。

🔧 Ghost Proxifier (开源版) — 纯命令行工具,MIT 开源,适合 DIY 和二次开发

已支持应用

Chrome
Chrome
MS Edge
MS Edge
Claude Code
Claude Code
Codex
Codex
FinalShell
FinalShell
Xshell
Xshell
Antigravity
Antigravity
MySQL Workbench
MySQL Workbench
CMD
CMD
PowerShell
PowerShell

理论上支持所有使用 Winsock 的 Windows 应用。以上为测试验证过的应用列表,更多应用持续验证中。

解决了什么问题?

应用不走系统代理

Chrome 还算听话,但 Telegram、Antigravity、各种游戏启动器——它们根本不理 Windows 的代理设置。Ghost Proxifier 直接进入进程内部,在 Winsock 层面接管网络请求,强制走你指定的代理。流量不会泄露。

VPN 和代理不能同时开

公司 VPN 连着内网,Clash 想翻墙——路由表打架,总有一个断。TUN 模式下虚拟网卡与 VPN 网卡频繁切换,内核态/用户态切换带来额外延迟。

Ghost Proxifier 不装虚拟网卡,不改路由表。只代理你选中的进程,其它流量纹丝不动。VPN、内网、代理可以同时在线,互不干扰。

子进程裸奔

你拖入了启动器,它 spawn 出十个子窗口——那些子窗口的流量直接走真实 IP,代理形同虚设。Pro 版自动追踪进程树,一次拖入,整个进程家族全部接管。

架构

                           Ghost Proxifier Pro 架构
┌─────────────────────────────────────────────────────────────────────────────┐
│                         目标进程 (e.g. Chrome)                               │
│                                                                             │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌─────────────────────────┐  │
│  │ DNS 查询  │   │ TCP 连接  │   │ 数据发送  │   │ 8.8.8.8:53             │  │
│  │          │   │          │   │          │   │                         │  │
│  │ getaddrinfo│   │ connect()│   │ send() / │   │ sendto(53)             │  │
│  │GetAddrInfoW│   │ConnectEx()│  │WSASend() │   │WSASendTo()             │  │
│  └────┬─────┘   └────┬─────┘   └────┬─────┘   └────┬──────────────────┘  │
│       │              │              │              │                       │
│       └──────┬───────┘              │              │                       │
│              │                      │              │                       │
│         ┌────┴─────┐           ┌────┴─────┐   ┌────┴─────┐                 │
│         │  HOOK    │           │  HOOK    │   │  HOOK    │                 │
│         └────┬─────┘           └────┬─────┘   └────┬─────┘                 │
│              │                      │              │                       │
│         ┌────┴─────┐           ┌────┴─────┐   ┌────┴─────┐                 │
│         │ Local DNS │           │ 重定向到代理 │   │ Lazy Handshake        │
│         │ Proxy     │           │ 保存目标到  │   │ 1. 检查 PendingMap    │
│         │ UDP → TCP │           │ PendingMap │   │ 2. HTTP CONNECT       │
│         │ 转发到     │           │           │   │ 3. 发送原始数据        │
│         │ 8.8.8.8:53│           │           │   │                       │
│         └────────────┘           └──────────┘   └─────────────────────────┘
│                                                                             │
│                    ghost_core.dll (注入到目标进程)                            │
└─────────────────────────────────────────────────────────────────────────────┘
                   │                       │
                   │   127.0.0.1:2080      │
                   │                       │
            ┌──────┴───────┐      ┌────────┴────────┐
            │ 上游 HTTP     │      │  DNS 解析结果   │
            │  CONNECT 代理  │      │                 │
            │ (V2Ray/Clash/ │      │   IP → 域名     │
            │  NekoBox/...) │      │                 │
            └──────────────┘      └─────────────────┘

不装 TUN/TAP 虚拟网卡——那会被风控系统检测。不走 WFP 内核驱动——那需要 EV 证书签名。我们的路径是 用户态 API Hook,基于 MinHook 深度拦截 Winsock API 25+ 个函数。C++17 编写,极低内存占用,毫秒级注入完成。

原理

1. HTTP CONNECT 代理协议

Ghost Proxifier 使用标准 HTTP CONNECT 方法与上游代理建立隧道:

# 解析到域名时
CONNECT www.google.com:443 HTTP/1.1\r\nHost: www.google.com:443\r\n\r\n

# 解析不到域名时 (fallback)
CONNECT 142.251.45.10:443 HTTP/1.1\r\nHost: 142.251.45.10:443\r\n\r\n

代理返回 HTTP/1.1 200 Connection Established\r\n\r\n 后,隧道建立,开始双向数据转发。

connect() 拿到的目标是 IP 地址而非域名。Ghost Proxifier 通过 DNS 阶段建立的 IP → 域名 映射表,优先使用域名发起 CONNECT,让上游代理能做域名级路由分流。解析不到域名时 fallback 到 IP,此时上游可借助 GeoIP 规则调度。因此 Local DNS 防污染 至关重要。

2. 延迟握手(Lazy Handshake)

Chrome 等浏览器使用非阻塞 IO + 完成端口。如果在 connect() 阶段同步等待代理握手,会触发浏览器的卡死检测。

Ghost Proxifier 的解决方案:

阶段 操作 阻塞?
connect() 重定向到代理地址,保存目标到 PendingMap ❌ 非阻塞
等待连接 应用事件循环正常运行
send() 首次调用 从 PendingMap 取出目标,完成 HTTP CONNECT ✅ 短暂 (< 5ms)
后续 send() 直接转发

connect() 立即返回成功,应用以为连接已建立。真正的代理握手推迟到首次 send() 时完成,对应用完全透明。

3. 内置 Local DNS

系统 DNS 存在两个核心问题:

  • DNS 泄露 — ISP 可看到你的所有 DNS 查询
  • DNS 污染 — GFW 投毒返回虚假 IP,导致连接被重置

Ghost Proxifier 的 DNS 流程:

应用 DNS 查询 (UDP)
    ↓ Hook 拦截
Local DNS Proxy (127.0.0.1:随机端口)
    ↓ UDP → TCP 转换
通过代理隧道 CONNECT 到 8.8.8.8:53
    ↓ TCP DNS 查询
Google DNS 返回真实结果
    ↓ 记录 IP → 域名 映射(供 connect 阶段使用)

DNS 查询走加密代理隧道,杜绝 ISP 偷窥和 GFW 投毒。返回的 IP→域名映射表配合上游 GeoIP/GeoSite 分流规则,确保流量走最优路线。

4. DoH 阻断

Chrome 等浏览器默认启用 DNS-over-HTTPS(DoH),通过 HTTPS 直连 8.8.8.8:4431.1.1.1:443 等 DoH 服务器,绕过了 Local DNS Proxy。

Ghost Proxifier 识别已知 DoH 服务器 IP,在 connect() 阶段直接返回 WSAECONNREFUSED,强制浏览器回退到标准 DNS:

Chrome → connect(8.8.8.8:443)  → DoH 请求
              ↓ Hook 识别为 DoH 服务器
          返回 WSAECONNREFUSED
              ↓ Chrome 回退
Chrome → sendto(8.8.8.8:53)   → 标准 DNS → 被 Local DNS Proxy 接管 ✅

5. QUIC 阻断

QUIC(HTTP/3)基于 UDP 443,同样会绕过代理。Ghost Proxifier 在 sendto/WSASendTorecvfrom/WSARecvFrom 全路径阻断 UDP 443 流量,返回 WSAENETUNREACH,触发浏览器 TCP fallback(HTTP/2 或 HTTP/1.1),从而走 HTTP CONNECT 隧道。

特性

进程树自动追踪

拖入一个主进程,引擎自动识别并注入它创建的所有子进程。Chrome 的 Network Service、GPU Process、Utility Process——全部自动覆盖,不需要手动配置 PID。

内置 Watchdog 实时检测 Hook 状态,网络波动导致代理断开时自动重连。

流量可视化

玻璃拟态 UI + 暗黑模式。实时流量图表、进程级网络拓扑、状态指示灯(绿/黄/红)。每 2 秒刷新,流畅不抖动。

DNS 防污染 + DoH 阻断

内置 Local DNS,DNS 查询走加密隧道,杜绝 ISP 投毒。同时阻断 Chrome 等浏览器的 DoH 直连,强制所有 DNS 走本地代理,确保上游的 GeoIP/GeoSite 分流规则拿到的是真实 IP。

使用

通过 Pro 版图形界面操作:拖入或手动选择目标进程快捷方式或exe即可自动注入,引擎会自动识别并注入该进程及其所有子进程。主界面提供进程列表、代理状态、流量统计等实时信息。

上游代理节点、DNS 服务器、注入规则等所有配置均在图形界面中完成,无需手动编辑配置文件。

运行截图

Process Management

Traffic Flow

Safe DNS

Upstream Settings

FAQ

Pro 版收费吗?

是的,非pro用户不可使用拖拽快捷方式或者exe程序直接注入,只可使用手动选择框选择要注入的程序的快捷方式或者exe,最多可注入3个应用程序,且单次注入应用运行时长不可超过2h,超过2h就需要重启才可继续使用。pro付费用户则没有这些限制,想拖入多少应用就拖入多少,且不限制单次运行时间。pro用户收费标准,请参见官网或通过群组咨询开发者。

pro和非pro用户,都可正常使用进程树自动追踪注入、流量可视化、DNS防污染等功能。

和开源版有什么区别?

Pro 版提供现代化图形 UI、进程规则管理、流量可视化面板、进程树自动追踪、Watchdog 自动重连、MSI 安装包等高级功能。开源版为纯命令行工具。

如何反馈问题?

提交 Issue,Pro 版用户优先响应。

社群

About

Ghost Proxifier Pro 是一款专为 Windows 平台打造的高性能进程级透明代理引擎,旨在解决现代复杂网络环境下的两大痛点:「特定应用不走系统代理」以及「多重 VPN/代理路由冲突」。 核心亮点描述: 真正的进程级细粒度控制:不同于传统的全局代理或 TUN 模式,它基于 MinHook 直接拦截应用层 Winsock API。这意味着您可以精确指定某个进程(如 Chrome、游戏或特定工具)走代理,而无需修改系统全局路由表。 「全家桶」自动关联技术:Pro 版独有的进程追踪算法。只需接管母进程,它便能智能识别并自动拦截该软件启动的所有关联子进程,彻底告别繁琐的手动配置。 零侵入、高兼容:采用独创的 Lazy Handshake (延迟握手) 机制,完美兼容现代异步 IO

Topics

Resources

Stars

38 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors