skills/mhr-cfw-domain-fronting-relay/SKILL.md
Expert skill for setting up and using MHR-CFW, a domain-fronting relay that routes traffic through Google Apps Script and Cloudflare Workers to bypass DPI filtering.
npx skillsauth add aradotso/trending-skills mhr-cfw-domain-fronting-relayInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Skill by ara.so — Daily 2026 Skills collection.
MHR-CFW (MasterHttpRelay + Cloudflare Worker) is a Python-based domain-fronting relay that routes HTTP/SOCKS5 proxy traffic through Google Apps Script (GAS) and Cloudflare Workers. Network DPI filters see only traffic to www.google.com, while the actual destination is hidden inside the relay chain.
Client → Local Proxy (127.0.0.1:8085)
↓
Google IP (216.239.38.120) — DPI sees www.google.com
↓
Google Apps Script Web App (Relay)
↓
Cloudflare Worker
↓
Target Website
git clone https://github.com/denuitt1/mhr-cfw.git
cd mhr-cfw
pip install -r requirements.txt
If PyPI is blocked:
pip install -r requirements.txt \
-i https://mirror-pypi.runflare.com/simple/ \
--trusted-host mirror-pypi.runflare.com
script/worker.js from the repoconst WORKER_URL = "your-worker-name.workers.dev";
your-worker-name.workers.dev)script/Code.gs from the repoconst AUTH_KEY = "your-secret-password-here"; // choose a strong password
const WORKER_URL = "https://your-worker-name.workers.dev";
AKfycb...)config.jsoncp config.example.json config.json
Edit config.json:
{
"mode": "apps_script",
"google_ip": "216.239.38.120",
"front_domain": "www.google.com",
"script_id": "AKfycbXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"auth_key": "your-secret-password-here",
"listen_host": "127.0.0.1",
"listen_port": 8085,
"socks5_enabled": true,
"socks5_port": 1080,
"log_level": "INFO",
"verify_ssl": true
}
| Field | Description |
|---|---|
| mode | Always "apps_script" for GAS relay |
| google_ip | IP of Google's infrastructure for fronting |
| front_domain | Domain shown to DPI (www.google.com) |
| script_id | Your GAS Deployment ID from Step 2 |
| auth_key | Must match AUTH_KEY in Code.gs |
| listen_host | Local bind address (keep 127.0.0.1) |
| listen_port | HTTP proxy port (default 8085) |
| socks5_enabled | Enable SOCKS5 proxy on socks5_port |
| socks5_port | SOCKS5 proxy port (default 1080) |
| log_level | DEBUG, INFO, WARNING, ERROR |
| verify_ssl | Verify SSL certs; set false to skip |
Linux/macOS:
bash start.sh
# or
python3 main.py
Windows:
start.bat
Expected output:
[INFO] HTTP proxy running on 127.0.0.1:8085
[INFO] SOCKS5 proxy running on 127.0.0.1:1080
Install FoxyProxy:
Configure FoxyProxy:
HTTP or SOCKS5127.0.0.18085 (HTTP) or 1080 (SOCKS5)curl -x http://127.0.0.1:8085 https://ipleak.net/json/
curl --socks5 127.0.0.1:1080 https://ipleak.net/json/
import requests
proxies = {
"http": "http://127.0.0.1:8085",
"https": "http://127.0.0.1:8085",
}
response = requests.get("https://ipleak.net/json/", proxies=proxies)
print(response.json())
import requests
proxies = {
"http": "socks5://127.0.0.1:1080",
"https": "socks5://127.0.0.1:1080",
}
response = requests.get("https://ipleak.net/json/", proxies=proxies)
print(response.json())
{
"mode": "apps_script",
"google_ip": "216.239.38.120",
"front_domain": "www.google.com",
"script_id": "YOUR_DEPLOYMENT_ID",
"auth_key": "YOUR_AUTH_KEY",
"listen_host": "127.0.0.1",
"listen_port": 8085,
"socks5_enabled": false,
"log_level": "INFO",
"verify_ssl": true
}
{
"mode": "apps_script",
"google_ip": "216.239.38.120",
"front_domain": "www.google.com",
"script_id": "YOUR_DEPLOYMENT_ID",
"auth_key": "YOUR_AUTH_KEY",
"listen_host": "127.0.0.1",
"listen_port": 8085,
"socks5_enabled": true,
"socks5_port": 1080,
"log_level": "DEBUG",
"verify_ssl": false
}
{
"listen_host": "0.0.0.0",
"listen_port": 8085
}
⚠️ Only use
0.0.0.0on trusted networks. Anyone on the LAN can use your proxy.
script/worker.js) — Key Structure// The worker receives proxied requests and forwards them to the target
const WORKER_URL = "your-worker-name.workers.dev"; // set this to your own worker
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request));
});
The worker:
script/Code.gs) — Key Structureconst AUTH_KEY = "your-secret-password-here"; // must match config.json auth_key
const WORKER_URL = "https://your-worker.workers.dev";
function doPost(e) {
// Validates AUTH_KEY, extracts target URL, forwards via WORKER_URL
}
The GAS relay:
/exec) that acts as the domain-fronted relayAUTH_KEY on every requestAfter starting the proxy and configuring your browser:
curl -x http://127.0.0.1:8085 https://ipleak.net/json/ | python3 -m json.tool
Look for "ip" showing a Cloudflare address range.script_id in config.json is the Deployment ID, not the Script IDauth_key in config.json exactly matches AUTH_KEY in Code.gs"verify_ssl": false
Set to false temporarily to diagnose. Re-enable for production use.
pip install fails (PyPI blocked)pip install -r requirements.txt \
-i https://mirror-pypi.runflare.com/simple/ \
--trusted-host mirror-pypi.runflare.com
Google Apps Script has daily quotas (~20,000 URL fetch calls/day for free accounts). If the relay stops working mid-day:
script_id values{
"listen_port": 8086,
"socks5_port": 1081
}
Change ports in config.json and update your browser/FoxyProxy settings.
WORKER_URL in Code.gs matches exactlyhttps://your-worker.workers.dev directly in browser — should respond (even with an error page) rather than timeout"log_level": "DEBUG"
Restart main.py — you'll see each relay hop logged to stdout.
When scripting deployment or CI, avoid hardcoding secrets. Use environment variables and generate config dynamically:
import json
import os
config = {
"mode": "apps_script",
"google_ip": "216.239.38.120",
"front_domain": "www.google.com",
"script_id": os.environ["GAS_DEPLOYMENT_ID"],
"auth_key": os.environ["MHR_AUTH_KEY"],
"listen_host": "127.0.0.1",
"listen_port": int(os.environ.get("MHR_PORT", "8085")),
"socks5_enabled": True,
"socks5_port": 1080,
"log_level": os.environ.get("MHR_LOG_LEVEL", "INFO"),
"verify_ssl": True
}
with open("config.json", "w") as f:
json.dump(config, f, indent=2)
print("config.json written")
Then run:
export GAS_DEPLOYMENT_ID="AKfycbXXXXXXXXXXXXXX"
export MHR_AUTH_KEY="$(openssl rand -hex 32)"
python3 write_config.py
python3 main.py
| File | Purpose |
|---|---|
| main.py | Entry point — starts HTTP and SOCKS5 proxy listeners |
| config.json | Runtime configuration (copy from config.example.json) |
| config.example.json | Template configuration with placeholder values |
| script/worker.js | Cloudflare Worker source — deploy to Cloudflare |
| script/Code.gs | Google Apps Script relay source — deploy to GAS |
| start.bat | Windows launcher |
| start.sh | Linux/macOS launcher |
| requirements.txt | Python dependencies |
development
```markdown --- name: compose-performance-skills description: Install and use the skydoves/compose-performance-skills agent skill library to diagnose and fix Jetpack Compose performance issues including stability, recomposition, lazy layouts, modifiers, side effects, and build configuration. triggers: - "my composable recomposes too often" - "LazyColumn drops frames during scroll" - "diagnose Compose stability issues" - "fix unnecessary recomposition in Jetpack Compose" - "optimize Com
development
Headless iOS Simulator manager with host-side HID input injection, 60fps streaming, and device farm web UI for iOS 26
development
```markdown --- name: claude-code-game-studios description: Turn Claude Code into a full 49-agent game dev studio with 72 workflow skills, automated hooks, and a real studio hierarchy for Godot, Unity, and Unreal projects. triggers: - "set up claude code game studios" - "use ai agents for game development" - "set up game dev studio with claude" - "add game studio agents to my project" - "how do I use claude code for game dev" - "set up godot unity unreal ai workflow" - "49 agents g
development
```markdown --- name: xq-py-quantum-vm description: Python implementation of the Quip Network's quantum virtual machine (xqvm) triggers: - quantum virtual machine python - xqvm quip network - quantum circuit simulation python - xq-py quantum vm - quip network quantum python - simulate quantum gates python - quantum vm xqvm - xqvm-py quantum circuit --- # xq-py Quantum Virtual Machine > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. `xqvm-py` is a Python impl