[开源自荐]SpectreProxy:安全隐身的http/dns/wss代理,避免CF Worker泄露真实ip

大佬们好,我最近在折腾 Cloudflare Worker 时,发现它的 fetch API 存在一个可能导致隐私泄露和滥用风险的问题。如果用它来反代自己的网站可能还好,但如果用于反代一些 API 或大厂网站,则可能会因为这个问题导致账号封禁、域名被滥用报告(Abuse)等。

问题的根源:fetch api中无法移除的 CF-* 请求头

具体来说,Cloudflare 的 fetch API 会自动且强制地在所有出站请求中加入一些无法被过滤掉的 CF-* 请求头,例如:

  • cf-connecting-ip:暴露发起请求用户的真实 IP 地址

  • cf-ipcountry:暴露用户所在的国家/地区

  • cf-worker:明确标识该请求经过了 Cloudflare Workers

这些请求头会导致以下几个核心问题:

  1. 隐私泄露:用户的真实 IP 被直接暴露给目标服务器。

  2. 访问限制:部分对国家/地区有限制的服务(如某些 AI 的 API)会因 cf-country 而拒绝访问。

  3. 代理暴露:目标网站可以轻易识别出请求来自 Cloudflare Workers,可能因此去找cf举报滥用,然后导致域名被cf拉黑。

为了解决这个问题,我开发了 SpectreProxy

核心思想绕过 fetch API,通过 Cloudflare Workers 的 原生 TCP Socket API (connect()) 直接构建 HTTP/1.1、WebSocket 及 DNS 请求。我们完全控制请求的每一个字节,从根源上避免了 fetch API 自动添加的、可能泄露隐私的请求头,但这样也有问题,由于HTTP/2用socket实现实在是太难了,HTTP/1.1或许会成为特征,所以我打算开发个小工具,用来混淆这个代码,在以后的开发中,在转发请求时,加入一些杂乱的数据来混淆特征。

回退机制 (Fallback)

但在开发过程中,我发现了CF的官方限制:Cloudflare 的 Socket API 无法连接到 Cloudflare 自身的 IP 段

这意味着像 OpenAI、Claude 这些同样使用 Cloudflare 服务的平台,无法通过此方法直接代理。

为此,我在 SpectreProxy 中内置了回退(Fallback)机制。当主策略(Socket)连接失败时(例如目标是 Cloudflare IP),它会自动、无缝地切换到你预设的备用策略,包括:

  • 标准 fetch:作为最基础的备用选项。

  • SOCKS5 代理:通过 SOCKS5 代理转发请求。

  • 第三方 HTTP 代理:转发到 HTTP 代理,并在该代理中剥离 CF-* 请求头。(项目内已适配好一个 PHP 代理脚本,可以轻松部署在免费或廉价的虚拟主机上)

  • 其他云平台代理:转发到部署在其他云平台的兼容实例,并在实例中剥离请求头,比如vercel。


功能总结:解决了 fetch API 自动添加 CF-* 请求头导致的隐私泄露问题。安全的代理HTTP(S),DNS,websocket请求

比较详细的说明放在了Github readme中,希望大佬们不吝赐教,本人也是没什么开发经验的代码小白,希望得到大佬们PR指导,最后感谢小众软件的站长,之前一直在看博文,今天问网友去哪里可以自荐自己的开源项目才得知小众软件论坛,以后会经常来水 :doge:

GitHub 地址GitHub - XyzenSun/SpectreProxy: 支持HTTP,Websocket,DoH/DoT协议,使用原生 TCP Socket 解决 fetch API 的隐私泄露问题并提供灵活的回退策略解决TCP Socket 目前无法连接到 Cloudflare 自身的 IP 段的问题的Cloudflare Worker代理程序。

1 个赞

鉴于最近这个新闻的存在,利用CFworker反代还是需要悠着点了

_20250731215452.png

是的,如果用的话最好混淆一下

2 个赞

之前在linuxdo上似乎也看到过类似的项目,叫shadowFetch

是的,参考了那个项目和linuxdo的一些帖子,我是用来反代Gemini api时发现的