
एक Domain-Fronting Relay जो GAS (Google Apps Script) के माध्यम से ट्रैफ़िक को रूट करता है और इसे Cloudflare Workers पर अग्रेषित करता है। DPI को बायपास करने के लिए डिज़ाइन किया गया।
Client -> Local Relay -> Google/CDN Front -> GAS (Google Apps Script) Relay -> Cloudflare Worker -> Exit
|
+-> नेटवर्क DPI फ़िल्टर को www.google.com दिखाता है
Client -> Local Relay -> Google/CDN Front -> GAS (Google Apps Script) Relay -> Cloudflare Worker -> Self-Hosted Upstream Forwarder -> Exit
|
+-> नेटवर्क DPI फ़िल्टर को www.google.com दिखाता है
सामान्य उपयोग में, ब्राउज़र आपके कंप्यूटर पर चल रहे प्रॉक्सी को ट्रैफ़िक भेजता है।
प्रॉक्सी उस ट्रैफ़िक को Google-आधारित बुनियादी ढाँचे के माध्यम से भेजता है ताकि नेटवर्क को केवल एक अनुमत डोमेन जैसे www.google.com दिखे।
आपका तैनात रिले फिर क्लाउडफ्लेयर वर्कर के माध्यम से वास्तविक वेबसाइट लाता है और प्रतिक्रिया उसी पथ पर वापस भेजता है।
इसका मतलब है कि फ़िल्टर सामान्य Google ट्रैफ़िक जैसा दिखता है, जबकि वास्तविक गंतव्य रिले अनुरोध के अंदर छिपा रहता है।
git clone https://github.com/denuitt1/mhr-cfw.git
cd mhr-cfw
pip install -r requirements.txt
PyPI तक सीधे नहीं पहुँच सकते? इसके बजाय इस मिरर का उपयोग करें:
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com
worker.js फ़ाइल खोलें ( deploy/ के अंतर्गत), सब कुछ कॉपी करें, और इसे Apps Script एडिटर में पेस्ट करें।const WORKER_URL = "myworker.workers.dev";
Code.gs फ़ाइल खोलें ( deploy/ के अंतर्गत), सब कुछ कॉपी करें, और इसे Apps Script एडिटर में पेस्ट करें।const AUTH_KEY = "your-secret-password-here";
const WORKER_URL = "https://myworker.workers.dev";
⚠️ चरण 3 में सेट किया गया पासवर्ड याद रखें। आप नीचे कॉन्फ़िग फ़ाइल में उसी पासवर्ड का उपयोग करेंगे।
रिले शुरू करने के लिए run.bat फ़ाइल (Windows पर) या run.sh फ़ाइल (Linux पर) पर क्लिक करें।
यदि आप पहली बार चला रहे हैं, तो यह एक सेटअप विज़ार्ड प्रदर्शित करेगा जहाँ आपको AUTH_KEY और Google Apps Script Deployment ID दर्ज करना होगा।
आपको एक संदेश दिखना चाहिए जो कहता है कि HTTP प्रॉक्सी 127.0.0.1:8085 पर चल रहा है।
हम socks5 प्रॉक्सी कॉन्फ़िगर करने के लिए v2rayN client का उपयोग करने की सलाह देते हैं।
आप अपने ब्राउज़र में इस प्रॉक्सी का उपयोग करने के लिए FoxyProxy के Chrome extension या Firefox extension का भी उपयोग कर सकते हैं।
अपने ब्राउज़र में ipleak.net खोलें, आपको अपना IP पता क्लाउडफ्लेयर का दिखना चाहिए।
जब आप एक वर्चुअल मशीन (VM) चलाते हैं, तो यह होस्ट से अलग एक अलग नेटवर्क वातावरण में काम करती है। डिफ़ॉल्ट रूप से, VM होस्ट मशीन के localhost पर चल रही सेवाओं तक सीधे पहुँच नहीं सकता है — जिसमें यह प्रॉक्सी भी शामिल है।
इसे ठीक करने के लिए, आपको उस गेटवे IP को खोजना होगा जो आपका हाइपरवाइज़र होस्ट को सौंपता है, फिर VM के अंदर प्रॉक्सी को कॉन्फ़िगर करते समय localhost के बजाय इसका उपयोग करें।
उदाहरण: VirtualBox (NAT मोड)
होस्ट हमेशा VM के अंदर 10.0.2.2 पर पहुँचा जा सकता है। प्रॉक्सी सेट करें:
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 को इंस्टॉल करें:
sudo cp ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates
आप इस प्रॉक्सी को अपने फ़ोन या एक ही नेटवर्क पर किसी अन्य डिवाइस पर उपयोग कर सकते हैं — किसी अतिरिक्त सॉफ़्टवेयर की आवश्यकता नहीं है।
1. अपना होस्ट IP खोजें
# Windows
ipconfig
# Linux / macOS
ip addr
अपने राउटर से जुड़े एडेप्टर का IP देखें (उदा. 192.168.1.8)।
2. पोर्ट फ़ॉरवर्ड करें (केवल Windows के लिए, यदि सेवा localhost से बाउंड है)
एडमिनिस्ट्रेटर के रूप में CMD चलाएँ:
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 से कनेक्ट करें, फिर प्रॉक्सी को मैन्युअल रूप से सेट करें:
192.168.1.8)8085Android पर: सेटिंग्स → Wi-Fi → संशोधित करें → प्रॉक्सी → मैन्युअल iPhone पर: सेटिंग्स → Wi-Fi → (नेटवर्क) → HTTP प्रॉक्सी → मैन्युअल
4. CA प्रमाणपत्र इंस्टॉल करें
ca.crt को अपने फ़ोन में स्थानांतरित करें, फिर:
CAPTCHAs (Cloudflare Turnstile/bot चैलेंज, reCAPTCHA, hCaptcha) टोकन को उस IP से बाइंड करते हैं जिसने चैलेंज को हल किया। Cloudflare Workers प्रति अनुरोध विभिन्न एज IPs के माध्यम से बाहर निकलते हैं, इसलिए जब आप चैलेंज को हल करते हैं तब भी लक्ष्य साइट पर सत्यापन विफल हो जाता है। यह वैकल्पिक ऐड-ऑन वर्कर को सभी fetch() कॉल को एक छोटे Node सर्वर के माध्यम से अग्रेषित करने देता है जिसे आप एक स्थिर IP वाले VPS पर चलाते हैं — लक्ष्य साइट को एक सुसंगत निकास पता देता है।
cf_clearance)।यदि आप इनमें से किसी का सामना नहीं करते हैं, तो इसे अनकॉन्फ़िगर छोड़ दें — वर्कर पहले जैसा ही व्यवहार करता है।
Cloudflare Workers एक स्थिर आउटबाउंड IP प्रदर्शित नहीं करते हैं — fetch() क्लाउडफ्लेयर एज IPs के एक घूर्णन पूल के माध्यम से बाहर निकलता है, जो वास्तव में IP-बाउंड CAPTCHA टोकन को तोड़ता है। Cloudflare के स्थिर-एग्रेस विकल्प (BYOIP, Egress Workers) एंटरप्राइज़-स्तरीय हैं, इसलिए एक स्थिर IP वाला छोटा VPS व्यावहारिक समाधान है। फ़ॉरवर्डर सिर्फ एक पतला प्रॉक्सी है जो fetch() को एक स्थिर पते से फिर से जारी करता है।
संदर्भ कार्यान्वयन deploy/upstream-forwarder/upstream_forwarder.js है।
इसे Node 18+ और कोई निर्भरता नहीं चाहिए। इसे Caddy या nginx के पीछे TLS के साथ चलाएँ — वर्कर गैर-HTTPS फ़ॉरवर्डर URLs को अस्वीकार करता है।
# अपने VPS पर (उबंटू/डेबियन उदाहरण):
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
ऑटो-TLS के लिए इसे Caddy के साथ फ्रंट करें:
forwarder.example.com {
reverse_proxy 127.0.0.1:8787
}
त्वरिक धुआँ परीक्षण:
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 दिखाना चाहिए।
Cloudflare डैशबोर्ड → अपना वर्कर → Settings → Variables and Secrets:
सहेजें और वर्कर को फिर से तैनात करें।
प्रॉक्सी के माध्यम से https://httpbin.org/ip ब्राउज़ करें — आपको क्लाउडफ्लेयर का IP नहीं, बल्कि VPS का IP दिखना चाहिए। फिर एक CAPTCHA-संरक्षित साइट पर वापस जाएँ जो काम नहीं कर रही थी — चैलेंज को अब मान्य होना चाहिए।
फ़ॉरवर्डर के लिए प्रमाणीकरण आवश्यक है।
AUTH_KEYके बिना यह शुरू होने से इनकार करता है। URL और कुंजी वाला कोई भी व्यक्ति इसे रिले के रूप में उपयोग कर सकता है, इसलिए दोनों को गुप्त रखें।
डिफ़ॉल्ट रूप से वर्कर द्वारा संभाला जाने वाला प्रत्येक अनुरोध फ़ॉरवर्डर के माध्यम से रूट होता है, जिससे असंबंधित ट्रैफ़िक भी VPS बैंडविड्थ की खपत करता है। केवल उन साइटों को भेजने के लिए जिन्हें VPS के माध्यम से स्थिर निकास IP की आवश्यकता है, उन्हें config.json में forwarder_hosts में सूचीबद्ध करें — bypass_hosts के समान सिंटैक्स (सटीक होस्टनाम या .suffix)। जो भी मैच नहीं होता है वह वर्कर पर सीधे fetch() पर वापस आ जाता है।
{
...
"forwarder_hosts": [
"example.com",
".cf-protected-suffix"
]
...
}
इतिहासिक "सब कुछ अग्रेषित करें" व्यवहार को बनाए रखने के लिए सूची को खाली छोड़ दें (या कुंजी हटा दें)।
MHR-CFW केवल शैक्षिक, परीक्षण और अनुसंधान उद्देश्यों के लिए प्रदान किया जाता है।
| नाम | प्रकार | मान |
|---|
UPSTREAM_FORWARDER_URL | गुप्त | https://forwarder.example.com/fwd |
UPSTREAM_AUTH_KEY | गुप्त | वही AUTH_KEY जो आपने VPS पर सेट किया था |
UPSTREAM_FAIL_MODE | चर | closed (डिफ़ॉल्ट) — फ़ॉरवर्डर विफलता पर 502 लौटाएँ। open का उपयोग सीधे fetch पर वापस आने के लिए करें। |
UPSTREAM_TIMEOUT_MS | चर (वैकल्पिक) | डिफ़ॉल्ट 25000 |