A free tool that lets you access the internet freely by hiding your traffic behind trusted websites like Google. No VPS or server needed — just a free Google account.
How it works in simple terms: Your browser talks to this tool on your computer. This tool disguises your traffic to look like normal Google traffic. The firewall/filter sees "google.com" and lets it pass. Behind the scenes, a free Google Apps Script relay fetches the real website for you.
For the latest news, releases, and project updates, follow our Telegram channel: Telegram Channel
Browser -> Local Proxy -> Google/CDN front -> Your relay -> Target website
|
+-> shows google.com to the network filter
In normal use, the browser sends traffic to the proxy running on your computer.
The proxy sends that traffic through Google-facing infrastructure so the network only sees an allowed domain such as www.google.com.
Your deployed relay then fetches the real website and sends the response back through the same path.
This means the filter sees normal-looking Google traffic, while the actual destination stays hidden inside the relay request.
git clone -b python_testing https://github.com/masterking32/MasterHttpRelayVPN.git
cd MasterHttpRelayVPN
pip install -r requirements.txtCan't reach PyPI directly? Use this mirror instead:
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
Or download the ZIP from GitHub and extract it.
This is the "relay" that sits on Google's servers and fetches websites for you. It's free.
- Open Google Apps Script and sign in with your Google account.
- Click New project.
- Delete all the default code in the editor.
- Open the
Code.gsfile from this project, copy everything, and paste it into the Apps Script editor. - Important: Change the password on this line to something only you know:
const AUTH_KEY = "your-secret-password-here";
- Click Deploy → New deployment.
- Choose Web app as the type.
- Set:
- Execute as: Me
- Who has access: Anyone
- Click Deploy.
- Copy the Deployment ID (it looks like a long random string). You'll need it in the next step.
⚠️ Remember the password you set in step 5. You'll use the same password in the config file below.
-
Copy the example config file:
cp config.example.json config.json
On Windows, you can also just copy & rename the file manually.
-
Open
config.jsonin any text editor and fill in your values:{ "mode": "apps_script", "google_ip": "216.239.38.120", "front_domain": "www.google.com", "script_id": "PASTE_YOUR_DEPLOYMENT_ID_HERE", "auth_key": "your-secret-password-here", "listen_host": "127.0.0.1", "listen_port": 8085, "log_level": "INFO", "verify_ssl": true }script_id→ Paste the Deployment ID from Step 2.auth_key→ The same password you set inCode.gs.
python main.pyYou should see a message saying the proxy is running on 127.0.0.1:8085.
Set your browser to use the proxy:
- Proxy Address:
127.0.0.1 - Proxy Port:
8085 - Type: HTTP
How to set proxy in common browsers:
- Firefox: Settings → General → Network Settings → Manual proxy → enter
127.0.0.1port8085for HTTP Proxy → check "Also use this proxy for HTTPS" - Chrome/Edge: Uses system proxy. Go to Windows Settings → Network → Proxy → Manual setup → enter
127.0.0.1:8085 - Or use extensions like FoxyProxy or SwitchyOmega for easier switching.
When using apps_script mode, the tool needs to decrypt and re-encrypt HTTPS traffic locally. It generates a CA certificate on first run. You must install it or you'll see security warnings on every website.
The certificate file is created at ca/ca.crt inside the project folder after the first run.
- Double-click
ca/ca.crt. - Click Install Certificate.
- Choose Current User (or Local Machine for all users).
- Select Place all certificates in the following store → click Browse → choose Trusted Root Certification Authorities.
- Click Next → Finish.
- Restart your browser.
- Double-click
ca/ca.crt— it opens in Keychain Access. - It goes into the login keychain.
- Find the certificate, double-click it.
- Expand Trust → set When using this certificate to Always Trust.
- Close and enter your password. Restart your browser.
sudo cp ca/ca.crt /usr/local/share/ca-certificates/masterhttp-relay.crt
sudo update-ca-certificatesRestart your browser.
Firefox uses its own certificate store, so even after OS-level install you need to do this:
- Go to Settings → Privacy & Security → Certificates → View Certificates.
- Go to the Authorities tab → click Import.
- Select
ca/ca.crtfrom the project folder. - Check Trust this CA to identify websites → click OK.
Auto-install on startup: When running in
apps_scriptmode the proxy will automatically detect if the CA is not yet trusted and attempt to install it for you. If it succeeds you'll see a confirmation in the log; if it fails (e.g. needs administrator rights) it will print instructions. You can also runpython main.py --install-certat any time to (re-)install the certificate.
⚠️ Security note: This certificate only works locally on your machine. Don't share theca/folder with anyone. If you want to start fresh, delete theca/folder and the tool will generate a new one.
| Mode | What You Need | Description |
|---|---|---|
apps_script |
Free Google account | Easiest. Uses Google Apps Script as relay. No server needed. |
google_fronting |
Google Cloud Run service | Uses your own Cloud Run service behind Google's CDN. |
domain_fronting |
Cloudflare Worker | Uses a Cloudflare Worker as relay. |
custom_domain |
Custom domain on Cloudflare | Connects directly to your domain on Cloudflare. |
Most users should use apps_script mode — it's free and requires no server.
| Setting | What It Does |
|---|---|
mode |
Which relay type to use (see table above) |
auth_key |
Password shared between your computer and the relay |
script_id |
Your Google Apps Script Deployment ID |
listen_host |
Where to listen (127.0.0.1 = only this computer) |
listen_port |
Which port to listen on (default: 8085) |
log_level |
How much detail to show: DEBUG, INFO, WARNING, ERROR |
| Setting | Default | What It Does |
|---|---|---|
google_ip |
216.239.38.120 |
Google IP address to connect through |
front_domain |
www.google.com |
Domain shown to the firewall/filter |
verify_ssl |
true |
Verify TLS certificates |
worker_host |
— | Hostname for Cloudflare/Cloud Run modes |
custom_domain |
— | Your custom domain on Cloudflare |
script_ids |
— | Multiple Script IDs for load balancing (array) |
To increase speed, deploy Code.gs multiple times to different Apps Script projects and use all their IDs:
{
"script_ids": [
"DEPLOYMENT_ID_1",
"DEPLOYMENT_ID_2",
"DEPLOYMENT_ID_3"
]
}If you change Code.gs, you must create a new deployment in Google Apps Script (Deploy → New deployment) and update the script_id in your config.json. Just editing the code does not update the live version.
python main.py # Normal start
python main.py -p 9090 # Use port 9090 instead
python main.py --log-level DEBUG # Show detailed logs
python main.py -c /path/to/config.json # Use a different config file
python main.py --install-cert # Install MITM CA certificate and exit
python main.py --no-cert-check # Skip automatic CA install check on startupAuto-install: On startup (MITM mode), the proxy automatically checks if the CA certificate is trusted and attempts to install it. Use
--no-cert-checkto skip this. If auto-install fails (e.g. needs elevation), runpython main.py --install-certmanually or follow Step 6 above.
┌─────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────┐
│ Browser │────►│ Local Proxy │────►│ CDN / Google │────►│ Relay │──► Internet
│ │◄────│ (this tool) │◄────│ (fronted) │◄────│ Endpoint │◄──
└─────────┘ └──────────────┘ └─────────────┘ └──────────┘
HTTP/CONNECT TLS (SNI: ok) Fetch target
MITM (optional) Host: relay Return response
| File | What It Does |
|---|---|
main.py |
Starts the proxy |
proxy_server.py |
Handles browser connections |
domain_fronter.py |
Disguises traffic through CDN/Google |
h2_transport.py |
Faster connections using HTTP/2 (optional) |
mitm.py |
Handles HTTPS certificate generation |
cert_installer.py |
Cross-platform CA certificate installer (Windows/macOS/Linux + Firefox) |
ws.py |
WebSocket support |
Code.gs |
The relay script you deploy to Google Apps Script |
config.example.json |
Example config — copy to config.json |
| Problem | Solution |
|---|---|
| "Config not found" | Copy config.example.json to config.json and fill in your values |
| Browser shows certificate errors | Install the CA certificate (see Step 6 above) |
| Telegram works but browser doesn't load sites | Almost certainly the CA certificate is not installed. Follow Step 6 to install ca/ca.crt, then fully close and reopen your browser (for Chrome/Edge, make sure no Chrome process is running in the background before reopening). |
| Installed the cert but browser still errors | Chrome and Edge cache certificates — you must completely close the browser (check Task Manager / system tray) and reopen it for the new cert to take effect. Firefox requires a separate import (see Step 6 Firefox section). |
| "unauthorized" error | Make sure auth_key in config.json matches AUTH_KEY in Code.gs exactly |
| Connection timeout | Try a different google_ip or check your internet connection |
| Slow browsing | Deploy multiple Code.gs copies and use script_ids array for load balancing |
502 Bad JSON error |
Google returned an unexpected response (HTML instead of JSON). Causes: wrong script_id, Apps Script daily quota exhausted, or the deployment wasn't re-created after editing Code.gs. Check your script_id and create a new deployment if you recently changed Code.gs. |
- Never share your
config.json— it has your password in it. - Change the default
AUTH_KEYinCode.gsbefore deploying. - Don't share the
ca/folder — it contains your private certificate key. - Keep
listen_hostas127.0.0.1so only your computer can use the proxy.
MasterHttpRelayVPN is provided for educational, testing, and research purposes only.
- Provided without warranty: This software is provided "AS IS", without express or implied warranty, including merchantability, fitness for a particular purpose, and non-infringement.
- Limitation of liability: The developers and contributors are not responsible for any direct, indirect, incidental, consequential, or other damages resulting from the use of this project or the inability to use it.
- User responsibility: Running this project outside controlled test environments may affect networks, accounts, proxies, certificates, or connected systems. You are solely responsible for installation, configuration, and use.
- Legal compliance: You are responsible for complying with all local, national, and international laws and regulations before using this software.
- Google services compliance: If you use Google Apps Script or other Google services with this project, you are responsible for complying with Google's Terms of Service, acceptable use rules, quotas, and platform policies. Misuse may lead to suspension or termination of your Google account or deployments.
- License terms: Use, copying, distribution, and modification of this software are governed by the repository license. Any use outside those terms is prohibited.
Special thanks to @abolix for making this project possible.
MIT