Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
mhr-cfw — 一个域前置中继,通过 GAS(Google Apps Script)路由流量,并将其转发到 Cloudflare Workers。设计用于绕过 DPI。 | Kitploit
工具/GitHubGitHub/denuitt1/mhr-cfw
Web代理与拦截IDS/IPS规避云安全红队
GitHubdenuitt1/mhr-cfw

mhr-cfw

一个域前置中继,通过 GAS(Google Apps Script)路由流量,并将其转发到 Cloudflare Workers。设计用于绕过 DPI。

查看仓库
4.4k41623个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

MHR-CFW

MITM 域前端 HTTP 中继 + Cloudflare Worker 出口

GitHub

EnglishPersian

工作原理

1 - GAS + Cloudflare Worker 出口

root@kitploit:~
客户端 -> 本地中继 -> Google/CDN 前端 -> GAS (Google Apps Script) 中继 -> Cloudflare Worker -> 出口
            |
            +-> 向网络 DPI 过滤器显示 www.google.com

2 - GAS + Cloudflare Worker 中间层 + 自托管上游转发器中继出口

root@kitploit:~
客户端 -> 本地中继 -> Google/CDN 前端 -> GAS (Google Apps Script) 中继 -> Cloudflare Worker -> 自托管上游转发器 -> 出口
            |
            +-> 向网络 DPI 过滤器显示 www.google.com

在正常使用中,浏览器将流量发送到运行在您计算机上的代理。 代理通过 Google 相关基础设施发送该流量,因此网络只看到允许的域名,例如 www.google.com。 您部署的中继随后通过 Cloudflare Worker 获取真实网站,并通过相同路径返回响应。

这意味着过滤器看到的是正常的 Google 流量,而实际目标地址仍隐藏在中继请求中。


使用方法

1 - 下载项目并解压

root@kitploit:~
git clone https://github.com/denuitt1/mhr-cfw.git
cd mhr-cfw
pip install -r requirements.txt

无法直接访问 PyPI? 请改用此镜像:

root@kitploit:~
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com

2 - 设置 Cloudflare Worker (worker.js)

  1. 打开 Cloudflare Dashboard 并使用您的 Cloudflare 账户登录。
  2. 从侧边栏导航至 Compute > Workers & Pages。
  3. 点击 Create Application,选择 Start with Hello World,然后点击 Deploy。
  4. 点击 Edit code,删除编辑器中所有默认代码。
  5. 打开本项目中的 worker.js 文件(位于 deploy/ 目录下),复制所有内容,并粘贴到 Apps Script 编辑器中。
  6. 重要: 将以下行中的 worker 修改为您创建的 worker:
    root@kitploit:~
    const WORKER_URL = "myworker.workers.dev";
    
  7. 点击 Deploy。

3 - 设置 Google 中继 (Code.gs)

  1. 打开 Google Apps Script 并使用您的 Google 账户登录。
  2. 点击 New project。
  3. 删除编辑器中所有默认代码。
  4. 打开本项目中的 Code.gs 文件(位于 deploy/ 目录下),复制所有内容,并粘贴到 Apps Script 编辑器中。
  5. 重要: 将以下行中的密码修改为只有您知道的密码,并将 worker URL 替换为您的 Cloudflare Worker:
    root@kitploit:~
    const AUTH_KEY = "your-secret-password-here";
    const WORKER_URL = "https://myworker.workers.dev";
    
  6. 点击 Deploy → New deployment。
  7. 选择 Web app 作为类型。
  8. 设置:
    • Execute as: Me
    • Who has access: Anyone
  9. 点击 Deploy。
  10. 复制部署 ID(看起来像一长串随机字符)。您将在下一步用到它。

⚠️ 请记住您在步骤3中设置的密码。您将在下面的配置文件中使用相同的密码。

4 - 运行

点击 run.bat 文件(Windows)或 run.sh 文件(Linux)以启动中继。

如果是首次运行,将弹出设置向导,您需要输入 AUTH_KEY 和 Google Apps Script 部署 ID。 您应该会看到一条消息,说明 HTTP 代理正在 127.0.0.1:8085 上运行。

5 - 使用

我们建议使用 v2rayN 客户端 并配置 socks5 代理。

您也可以使用 FoxyProxy 的 Chrome 扩展 或 Firefox 扩展 在浏览器中使用此代理。

6 - 测试您的连接

在浏览器中打开 ipleak.net,您应该看到您的 IP 地址显示为 Cloudflare 的地址。

image

7 - 其他使用指南

在虚拟机内使用代理

当您运行虚拟机时,它运行在与宿主机隔离的网络环境中。默认情况下,虚拟机无法直接访问宿主机 localhost 上运行的服务——包括本代理。

为解决此问题,您需要找到虚拟机监控程序分配给宿主机的网关 IP,然后在虚拟机内部配置代理时使用该 IP 代替 localhost。

示例:VirtualBox(NAT 模式)

宿主机始终可在虚拟机内通过 10.0.2.2 访问。设置代理:

root@kitploit:~
export http_proxy="http://10.0.2.2:8085"
export https_proxy="http://10.0.2.2:8085"
export all_proxy="socks5://10.0.2.2:8085"

要使此设置永久生效,请将以上行添加到 ~/.bashrc 并运行 source ~/.bashrc。

由于此代理执行 SSL 检查,您可能会看到证书错误。安装附带的 ca.crt 以解决此问题:

root@kitploit:~
sudo cp ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates

在局域网内共享代理(例如移动设备)

您可以在同一网络中的手机或其他设备上使用此代理——无需额外软件。

1. 查找宿主机 IP

root@kitploit:~
# Windows
ipconfig

# Linux / macOS
ip addr

查找连接到路由器的适配器的 IP(例如 192.168.1.8)。

2. 转发端口(仅限 Windows,如果服务绑定到 localhost)

以管理员身份运行 CMD:

root@kitploit:~
netsh interface portproxy add v4tov4 listenaddress=192.168.1.8 listenport=8085 connectaddress=127.0.0.1 connectport=8085
netsh advfirewall firewall add rule name="Proxy 8085" dir=in action=allow protocol=TCP localport=8085

3. 在手机上配置代理

将手机连接到同一个 Wi-Fi,然后手动设置代理:

  • 主机: 您的宿主机 IP(例如 192.168.1.8)
  • 端口: 8085

在 Android 上:设置 → Wi-Fi → 修改 → 代理 → 手动 在 iPhone 上:设置 → Wi-Fi → (网络) → HTTP 代理 → 手动

4. 安装 CA 证书

将 ca.crt 传输到您的手机,然后:

  • Android: 设置 → 安全 → 安装证书 → CA 证书
  • iPhone: 打开文件 → 安装描述文件 → 设置 → 通用 → 关于本机 → 证书信任设置 → 启用

可选:通过上游转发器实现稳定出口 IP

验证码(Cloudflare Turnstile/机器人挑战、reCAPTCHA、hCaptcha)将令牌绑定到解决挑战的 IP。Cloudflare Worker 每次请求都通过不同的边缘 IP 退出,因此即使您解决了挑战,目标网站上的验证也会失败。此可选附加组件允许 Worker 将所有 fetch() 调用转发到您在有稳定 IP 的 VPS 上运行的小型 Node 服务器——为目标网站提供一致的出口地址。

何时需要此功能

  • 位于 Cloudflare 机器人挑战后的网站不断将您重定向回挑战页面。
  • 登录表单在解决 reCAPTCHA/hCaptcha 后拒绝您。
  • 您需要跨请求保持 Cookie 连续性(例如 cf_clearance)。

如果您没有遇到这些问题,可以保持未配置状态——Worker 的行为将与之前完全一样。

为什么需要单独的服务器

Cloudflare Worker 不提供稳定的出站 IP——fetch() 通过轮换的 Cloudflare 边缘 IP 池退出,这正是破坏 IP 绑定验证码令牌的原因。Cloudflare 的静态出口选项(BYOIP、Egress Workers)属于企业级功能,因此带有静态 IP 的小型 VPS 是实用的变通方案。转发器只是一个瘦代理,它从稳定地址重新发起 fetch()。

1. 在 VPS 上部署转发器

参考实现位于 deploy/upstream-forwarder/upstream_forwarder.js。 它需要 Node 18+ 且无依赖。建议在 Caddy 或 nginx 后面使用 TLS 运行——Worker 会拒绝非 HTTPS 的转发器 URL。

root@kitploit:~
# 在您的 VPS 上(Ubuntu/Debian 示例):
sudo apt install -y nodejs   # 必须为 18+
export AUTH_KEY="some-long-random-string-at-least-32-chars"
export PORT=8787
node deploy/upstream-forwarder/upstream_forwarder.js

使用 Caddy 前端实现自动 TLS:

root@kitploit:~
forwarder.example.com {
    reverse_proxy 127.0.0.1:8787
}

快速测试:

root@kitploit:~
curl -X POST https://forwarder.example.com/fwd \
  -H "x-upstream-auth: $AUTH_KEY" \
  -H "content-type: application/json" \
  -d '{"u":"https://httpbin.org/ip","m":"GET","h":{}}'

解码后的响应体应显示 VPS 的 IP。

2. 将 Worker 连接到转发器

在 Cloudflare 仪表板中 → 您的 Worker → Settings → Variables and Secrets:

保存并重新部署 Worker。

3. 验证

通过代理浏览 https://httpbin.org/ip——您应该看到 VPS 的 IP,而不是 Cloudflare 的 IP。然后重新访问之前无法正常工作的受验证码保护的网站——挑战现在应该可以验证。

转发器必须要求验证。没有 AUTH_KEY 它将拒绝启动。任何拥有 URL 和密钥的人都可以将其用作中继,请保密两者。

4. 将转发器限定到特定主机(可选)

默认情况下,Worker 处理的每个请求都通过转发器路由,因此无关流量也会消耗 VPS 带宽。若要使只有需要稳定出口 IP 的网站通过 VPS 发送,请在 config.json 的 forwarder_hosts 中列出它们——语法与 bypass_hosts 相同(精确主机名或 .后缀)。不匹配的内容回退到 Worker 上的直接 fetch()。

root@kitploit:~
{
   ...
   "forwarder_hosts": [
       "example.com",
       ".cf-protected-suffix"
   ]
   ...
}

将列表留空(或删除该键)以保持历史行为(转发所有内容)。


免责声明

MHR-CFW 仅用于教育、测试和研究目的。

  • 不提供任何担保: 本软件按“原样”提供,不附带任何明示或暗示的担保,包括适销性、特定用途的适用性和不侵权。
  • 责任限制: 开发者和贡献者不对因使用本项目或无法使用本项目而引起的任何直接、间接、附带、后果性或其他损害承担责任。
  • 用户责任: 在受控测试环境之外运行本项目可能会影响网络、账户、代理、证书或连接的系统。您对安装、配置和使用负全部责任。
  • 法律合规: 您有责任在使用本软件前遵守所有地方、国家和国际法律法规。
  • Google 服务合规: 如果您将 Google Apps Script 或其他 Google 服务与本项目一起使用,您有责任遵守 Google 的服务条款、可接受使用规则、配额和平台政策。滥用可能导致您的 Google 帐户或部署被暂停或终止。
  • 许可条款: 本软件的使用、复制、分发和修改受存储库许可的约束。超出这些条款的任何使用均被禁止。

贡献者

  • 特别感谢 onlymaj

来源

  • 本项目基于 MasterHttpRelayVPN

许可证

MIT

下载工具
名称类型值
UPSTREAM_FORWARDER_URL秘密https://forwarder.example.com/fwd
UPSTREAM_AUTH_KEY秘密您在 VPS 上设置的相同 AUTH_KEY
UPSTREAM_FAIL_MODE变量closed(默认)——转发器失败时返回 502。使用 open 可回退到直接 fetch。
UPSTREAM_TIMEOUT_MS变量(可选)默认 25000