██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗
██╔══██╗██╔══██╗██╔═══██╗╚██╗██╔╝╚██╗ ██╔╝
██████╔╝██████╔╝██║ ██║ ╚███╔╝ ╚████╔╝
██╔══██╗██╔══██╗██║ ██║ ██╔██╗ ╚██╔╝
██║ ██║██║ ██║╚██████╔╝██╔╝ ██╗ ██║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
Forward HTTP traffic through any relay server (Vercel / Google Apps Script)
Binds to 127.0.0.1 only — Not a VPN — Not an open proxy
Author: v7lthronyx (Aiden Azad)
GitHub: github.com/v74all/badplace
A local-only HTTP/HTTPS proxy that forwards traffic through a relay server.
It runs on your own machine and routes your HTTP traffic through a relay (Vercel serverless function or Google Apps Script).
Use cases:
- Bypass local network restrictions for HTTP traffic
- Route browser traffic through an external relay
- Test how your apps behave behind a proxy
- Access region-restricted HTTP content
Browser/App → 127.0.0.1:8085 → Relay (Vercel/GAS) → Target Website
- You configure your browser/app to use
127.0.0.1:8085as HTTP proxy - The proxy forwards each request to the relay server via JSON POST
- The relay fetches the actual URL and returns the response
- The proxy sends the response back to your browser/app
# 1. Clone and enter the project
git clone https://github.com/v74all/badplace.git
cd badplace
# 2. Configure your relay URL
export RELAY_URL='https://your-relay-url.com'
# 3. Run the proxy
./run-local.sh- Python 3.9+
curl(for connectivity checks)- A relay server (Vercel or Google Apps Script)
Edit config.local.yaml:
mode: apps_script # vercel | apps_script
relay_url: ""
apps_script_url: "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec"
bind_host: "127.0.0.1"
bind_port: 8085
socks_port: 1081
mitm_enabled: false # HTTPS MITM (advanced)
doh_enabled: false # Disable DoH for faster local DNSOr use environment variables:
export APPS_SCRIPT_URL='https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec'Note: If your network blocks
script.google.com, the proxy can still start, but Google Apps Script relay requests will fail. In that case, use Vercel or another relay host.
# Deploy the relay function to Vercel
npm install -g vercel
vercel deploy
# Or push to GitHub and import on vercel.comThe relay function is in api/relay.js. After deployment, use the Vercel URL as your RELAY_URL.
- Go to script.google.com
- Create a new project
- Copy the code from
google-apps-script-relay.gs - Deploy as Web App (Execute as: Me, Who has access: Anyone)
- Use the deployment URL as your
RELAY_URL
Chromium (isolated profile — recommended):
chromium --proxy-server='http://127.0.0.1:8085' \
--user-data-dir='/tmp/proxy-browser-profile'Firefox:
about:preferences→ Network Settings → Manual proxy- HTTP Proxy:
127.0.0.1Port:8085 - Check "Also use this proxy for HTTPS"
- No Proxy for:
localhost, 127.0.0.1
System-wide (CLI tools):
export http_proxy='http://127.0.0.1:8085'
export https_proxy='http://127.0.0.1:8085'
export no_proxy='localhost,127.0.0.1'| Endpoint | Description |
|---|---|
http://127.0.0.1:8085/health |
Proxy status |
http://127.0.0.1:8085/test-google |
Test Google connectivity |
http://127.0.0.1:8085/test-relay |
Test relay connection |
- If
script.google.comیاscript.googleusercontent.comمسدود است، ازVercelاستفاده کنید. doh_enabled: falseرا درconfig.local.yamlقرار دهید تا DNS محلی سریعتر شود.- اگر میخواهید پروکسی حتی در صورت شکست چک اتصال اجرا شود، از:
STRICT_CHECKS=0 ./run-local.sh
- اگر میخواهید اجرای سختگیرانه باشد، از:
STRICT_CHECKS=1 ./run-local.sh
- برای تست سرعت:
curl -x http://127.0.0.1:8085 http://httpbin.org/get
./run-local.sh # Start the proxy
./stop-local.sh # Stop the proxy- ✅ Binds to
127.0.0.1only — no LAN or internet exposure - ✅ HTTPS MITM disabled by default
- ✅ Cache disabled by default
- ✅ Full URLs, cookies, Authorization headers not logged
- ✅ CA key stored with
chmod 600 - ❌ This is NOT a VPN — only works for apps configured to use the proxy
یک پروکسی HTTP/HTTPS محلی که ترافیک را از طریق یک سرور relay عبور میدهد.
روی سیستم خودتان اجرا میشود و ترافیک HTTP را از طریق Vercel یا Google Apps Script هدایت میکند.
کاربردها:
- عبور از محدودیتهای شبکه محلی برای ترافیک HTTP
- هدایت ترافیک مرورگر از طریق یک relay خارجی
- تست رفتار برنامهها پشت پروکسی
- دسترسی به محتوای محدود شده بر اساس منطقه
مرورگر/برنامه → 127.0.0.1:8085 → Relay (Vercel/GAS) → سایت مقصد
- مرورگر/برنامه خود را برای استفاده از
127.0.0.1:8085به عنوان پروکسی HTTP تنظیم کنید - پروکسی هر درخواست را به صورت JSON POST به سرور relay ارسال میکند
- Relay URL واقعی را fetch کرده و پاسخ را برمیگرداند
- پروکسی پاسخ را به مرورگر/برنامه شما ارسال میکند
# 1. پروژه را clone کنید
git clone https://github.com/v74all/badplace.git
cd badplace
# 2. URL relay خود را تنظیم کنید
export RELAY_URL='https://your-relay-url.com'
# 3. پروکسی را اجرا کنید
./run-local.sh- Python 3.9+
curl(برای چک اتصال)- یک سرور relay (Vercel یا Google Apps Script)
فایل config.local.yaml را ویرایش کنید:
mode: apps_script # vercel | apps_script
relay_url: ""
apps_script_url: "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec"
bind_host: "127.0.0.1"
bind_port: 8085
socks_port: 1081 # پورت SOCKS5
doh_enabled: false # DNS-over-HTTPS غیرفعال برای سرعت بیشتر
mitm_enabled: false # HTTPS MITM (پیشرفته)یا از متغیرهای محیطی استفاده کنید:
export APPS_SCRIPT_URL='https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec'توجه: اگر شبکهی شما
script.google.comرا بلاک کند، پروکسی اجرا میشود اما ارسال درخواست به Google Apps Script با خطا مواجه خواهد شد. در این حالتVercelانتخاب بهتری است.
# نصب Vercel CLI
npm install -g vercel
# Deploy تابع relay
vercel deployفایل relay در api/relay.js قرار دارد. بعد از deploy، URL Vercel را به عنوان RELAY_URL استفاده کنید.
- به script.google.com بروید
- یک پروژه جدید ایجاد کنید
- کد را از
google-apps-script-relay.gsکپی کنید - به عنوان Web App deploy کنید (Execute as: Me, Who has access: Anyone)
- URL deployment را به عنوان
APPS_SCRIPT_URLاستفاده کنید
Chromium (پروفایل ایزوله - توصیه میشود):
chromium --proxy-server='http://127.0.0.1:8085' \
--user-data-dir='/tmp/proxy-browser-profile'Firefox:
about:preferences→ Network Settings → Manual proxy- HTTP Proxy:
127.0.0.1Port:8085 - تیک "Also use this proxy for HTTPS"
- No Proxy for:
localhost, 127.0.0.1
ابزارهای CLI (سیستمگسترده):
export http_proxy='http://127.0.0.1:8085'
export https_proxy='http://127.0.0.1:8085'
export no_proxy='localhost,127.0.0.1'| نقطه پایانی | توضیح |
|---|---|
http://127.0.0.1:8085/health |
وضعیت پروکسی |
http://127.0.0.1:8085/test-google |
تست اتصال گوگل |
http://127.0.0.1:8085/test-relay |
تست اتصال relay |
./run-local.sh # شروع پروکسی
./stop-local.sh # توقف پروکسی- ✅ فقط به
127.0.0.1bind میشود — هیچ دسترسی LAN یا اینترنت - ✅ HTTPS MITM به طور پیشفرض غیرفعال
- ✅ کش به طور پیشفرض غیرفعال
- ✅ URL کامل، کوکیها، هدر Authorization لاگ نمیشوند
- ✅ کلید CA با
chmod 600ذخیره میشود - ❌ این VPN نیست — فقط برای برنامههایی که پروکسی را تنظیم کردهاند کار میکند
برای بهبود سرعت:
- از Vercel به جای Google Apps Script استفاده کنید (سریعتر است)
- DoH را غیرفعال کنید (
doh_enabled: false) - لاگها را در Google Script حذف کنید
- تایماوت را کاهش دهید (در کد تغییر دهید)
- اتصالهای مستقیم HTTPS ممکن است در شبکههای محدود شکست بخورند
برای تست سرعت پروکسی:
# تست سلامت پروکسی
curl http://127.0.0.1:8085/health
# تست اتصال گوگل
curl http://127.0.0.1:8085/test-google
# تست relay
curl http://127.0.0.1:8085/test-relay
# تست سرعت با سایت واقعی
time curl -x http://127.0.0.1:8085 http://httpbin.org/get
⚠️ توجه مهم: این ابزار برای عبور از فیلترینگ ایران طراحی شده است. فقط Google Apps Script نیاز است باز باشد.
- script.google.com باید باز باشد — معمولاً در ایران فیلتر نیست
- script.googleusercontent.com باید باز باشد — برای redirectهای GAS
- Python 3.9+ روی سیستم شما نصب باشد
۱. ساخت Google Apps Script Relay:
# 1. به script.google.com بروید و پروژه جدید بسازید
# 2. کد google-apps-script-relay.gs را کپی کنید
# 3. Deploy → New deployment → Web app
# 4. Execute as: Me, Who has access: Anyone
# 5. URL را کپی کنید۲. تنظیم config.local.yaml:
mode: apps_script
apps_script_url: "https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec"
bind_host: 127.0.0.1
bind_port: 8085
socks_enabled: true
socks_port: 1081
doh_enabled: true # DNS-over-HTTPS برای دور زدن DNS فیلترینگ
mitm_enabled: true # برای HTTPS لازم است
# ⚠️ همه لاگها غیرفعال شدند برای حفظ حریم خصوصی
log_full_urls: false
log_cookies: false
log_authorization: false
log_request_bodies: false۳. اجرا:
./run-local.sh۴. تست اتصال:
# تست سلامت پروکسی
curl http://127.0.0.1:8085/health
# تست اتصال گوگل (مهم برای ایران)
curl http://127.0.0.1:8085/test-google
# تست relay
curl http://127.0.0.1:8085/test-relay- فقط Google Apps Script نیاز است باز باشد — بقیه سایتها از طریق relay باز میشوند
- Vercel فیلتر است — در ایران از Google Apps Script استفاده کنید
- DoH فعال بگذارید — برای دور زدن DNS فیلترینگ ایران
- MITM فعال بگذارید — برای HTTPS لازم است
- حریم خصوصی: همه لاگها غیرفعال شدند — هیچ URL، کوکی یا هدر Authorization لاگ نمیشود
- script.google.com مسدود است: این ابزار کار نخواهد کرد. VPN دیگری پیدا کنید.
- تایماوت: اینترنت شما کند است یا script.google.com ناپایدار است. دوباره تلاش کنید.
- HTTPS کار نمیکند:
mitm_enabled: trueرا در config بگذارید و CA certificate را در مرورگر نصب کنید. - DNS کار نمیکند:
doh_enabled: trueرا بررسی کنید.
- پورت اشغال شده: پورتها را چک کنید و پروسههای قبلی را بکشید
- اتصال relay شکست خورد: URL relay را چک کنید
- سرعت کم: DoH را غیرفعال کنید (
doh_enabled: false)
- ✅ فقط روی
127.0.0.1اجرا میشود - ✅ HTTPS MITM پیشفرض خاموش است
- ✅ Cache پیشفرض خاموش است
- ❌ این یک VPN نیست
├── proxy.py # Main proxy application
├── config.local.yaml # Local configuration
├── run-local.sh # Start script
├── stop-local.sh # Stop script
├── requirements.txt # Python dependencies
├── api/
│ └── relay.js # Vercel serverless relay function
├── vercel.json # Vercel configuration
├── google-apps-script-relay.gs # Google Apps Script relay
├── .banner # ASCII art banner
└── README.md # This file
MIT License — see LICENSE for details.
Built with ❤️ by v7lthronyx