ईरानी डेवलपर्स नियमित रूप से कड़े प्रतिबंधों का सामना कर रहे हैं: GitHub खातों को ब्लॉक करता है, npm पैकेज स्थापित नहीं होते, PyPI कनेक्शन त्रुटि देता है। ये सभी प्रतिबंधों के परिणाम हैं, जो पूरे देशों को विकास की बुनियादी अवसंरचना से काट देते हैं। यदि आप ईरान से काम कर रहे हैं या ईरानी विशेषज्ञों को नियुक्त कर रहे हैं, तो यह लेख आपको एक ठोस समाधान देगा - बिना किसी बकवास और सिद्धांत के।
क्या ब्लॉक किया जा रहा है और क्यों
अमेरिका द्वारा ईरान के खिलाफ लगाए गए प्रतिबंध केवल वित्तीय लेनदेन तक सीमित नहीं हैं - वे तकनीकी सेवाओं को भी प्रभावित करते हैं। अमेरिकी अधिकार क्षेत्र में आने वाली कंपनियों (जो आधुनिक विकास के पूरे स्टैक को कवर करती हैं) को प्रतिबंधित देशों के उपयोगकर्ताओं तक पहुंच सीमित करने के लिए बाध्य किया गया है। इसके परिणामस्वरूप, ईरानी डेवलपर्स निम्नलिखित समस्याओं का सामना कर रहे हैं:
- GitHub - खातों को ब्लॉक करता है, रिपॉजिटरी अनुपलब्ध हो जाती हैं, Actions शुरू नहीं होते, Copilot काम नहीं करता।
- npm (npmjs.com) -
npm installके माध्यम से पैकेज स्थापित करने का प्रयास करते समय कनेक्शन त्रुटियाँ या स्पष्ट रूप से पहुंच से इनकार किया जाता है। - PyPI (pypi.org) -
pip installलटकता है या 403 त्रुटि देता है। - Docker Hub - छवियों को खींचना ब्लॉक किया गया है।
- Cloudflare, AWS, Azure, Google Cloud - कुछ सेवाएँ अनुपलब्ध हैं या अस्थिर रूप से काम कर रही हैं।
- Stack Overflow, JetBrains, VS Code Marketplace - IP स्तर पर समय-समय पर ब्लॉक।
ब्लॉकिंग IP पते के स्तर पर होती है: यदि आपका IP ईरानी प्रदाता (AS-नंबर IRANCELL, Shatel, MCI आदि) से संबंधित है, तो अनुरोध स्वचालित रूप से खाता जांच से पहले ही अस्वीकृत कर दिया जाता है। यही कारण है कि किसी अन्य देश से IP के साथ VPN या प्रॉक्सी एक बायपास नहीं है, बल्कि विकास अवसंरचना तक पहुंच प्राप्त करने का एकमात्र कार्यशील तरीका है।
समझना महत्वपूर्ण है:
प्रॉक्सी और VPN विभिन्न स्तरों पर समस्या का समाधान करते हैं। VPN पूरे सिस्टम के ट्रैफ़िक को पुनर्निर्देशित करता है - यह ब्राउज़र के लिए सुविधाजनक है, लेकिन कमांड लाइन उपकरणों (git, npm, pip) के लिए सुविधाजनक नहीं है, जहां सटीक सेटिंग की आवश्यकता होती है। प्रॉक्सी केवल विशिष्ट उपकरण के लिए प्रतिबंधों को बायपास करने के लिए सेट किया जा सकता है, बिना अन्य ट्रैफ़िक को छुए।
डेवलपमेंट के लिए कौन सा प्रॉक्सी प्रकार उपयुक्त है
डेवलपर के कार्यों के लिए - रिपॉजिटरी के साथ काम करना, पैकेज स्थापित करना, CI/CD - कनेक्शन की स्थिरता, गति और IP की स्वच्छता महत्वपूर्ण हैं। हम तीन मुख्य प्रकार के प्रॉक्सी पर चर्चा करेंगे और वे विशिष्ट परिदृश्यों के लिए कैसे उपयुक्त हैं।
रहवासी प्रॉक्सी
रहवासी प्रॉक्सी विभिन्न देशों के घरेलू उपयोगकर्ताओं के वास्तविक IP पते का उपयोग करते हैं। GitHub के लिए यह महत्वपूर्ण है: प्लेटफ़ॉर्म केवल IP की भू-स्थानिकता का विश्लेषण नहीं करता है, बल्कि इसकी प्रतिष्ठा का भी। डेटा सेंटर से IP संदेह पैदा करता है, जबकि घरेलू अमेरिकी या यूरोपीय IP को सामान्य उपयोगकर्ता के रूप में माना जाता है। रहवासी प्रॉक्सी - GitHub खातों के साथ निरंतर काम करने के लिए सबसे विश्वसनीय विकल्प है।
डेटा सेंटर प्रॉक्सी
डेटा सेंटर प्रॉक्सी - तेज और सस्ते। ये npm और pip के माध्यम से पैकेज स्थापित करने के लिए अच्छे हैं: PyPI और npmjs.com IP की प्रतिष्ठा को GitHub की तरह सख्ती से नहीं जांचते हैं। यदि आपको CI/CD पाइपलाइन में निर्भरताएँ केवल डाउनलोड करनी हैं, तो डेटा सेंटर प्रॉक्सी कार्य को पूरा कर देगा और सस्ता पड़ेगा।
मोबाइल प्रॉक्सी
मोबाइल प्रॉक्सी मोबाइल ऑपरेटरों (4G/5G) के IP का उपयोग करते हैं। यह एंटी-फ्रॉड सिस्टम के दृष्टिकोण से IP का सबसे "स्वच्छ" प्रकार है: एक मोबाइल IP के पीछे हजारों वास्तविक उपयोगकर्ता होते हैं, इसलिए इसे ब्लॉक करना लाभदायक नहीं है। मोबाइल प्रॉक्सी प्रासंगिक हैं यदि आपके पास पहले से ही GitHub खाते के ब्लॉक के साथ समस्याएँ थीं और आप पुनः ब्लॉक होने के जोखिम को कम करना चाहते हैं।
GitHub के लिए प्रॉक्सी सेटअप
GitHub रिपॉजिटरी के साथ काम करने के लिए दो प्रोटोकॉल का उपयोग करता है: HTTPS और SSH। प्रत्येक के लिए प्रॉक्सी सेटअप अलग होता है। हम दोनों विकल्पों पर चर्चा करेंगे।
HTTPS के माध्यम से git के लिए प्रॉक्सी
यह GitHub के साथ काम करने का सबसे सामान्य तरीका है। सेटअप git कॉन्फ़िगरेशन के माध्यम से किया जाता है। टर्मिनल खोलें और निम्नलिखित चलाएँ:
# git के लिए HTTP प्रॉक्सी सेटअप (host, port, user, password को अपने डेटा से बदलें) git config --global http.proxy http://user:password@proxy-host:port git config --global https.proxy http://user:password@proxy-host:port # सेटिंग्स की जांच git config --global --get http.proxy # यदि प्रॉक्सी बिना प्रमाणीकरण के है: git config --global http.proxy http://proxy-host:port
इस सेटअप के बाद सभी git clone, git push, git pull प्रॉक्सी के माध्यम से जाएंगे। यदि आपको केवल GitHub के लिए प्रॉक्सी सेट करना है, न कि सभी रिपॉजिटरी के लिए:
# केवल github.com के लिए प्रॉक्सी git config --global http.https://github.com.proxy http://user:password@proxy-host:port
SSH के माध्यम से git के लिए प्रॉक्सी
GitHub के साथ SSH कनेक्शन पोर्ट 22 (या वैकल्पिक रूप से 443) के माध्यम से काम करता है। SSH ट्रैफ़िक को प्रॉक्सी करने के लिए nc (netcat) या connect उपयोग किया जाता है। फ़ाइल ~/.ssh/config को संपादित करें:
Host github.com HostName github.com User git ProxyCommand nc -X connect -x proxy-host:port %h %p # या SOCKS5 के लिए: # ProxyCommand nc -X 5 -x proxy-host:port %h %p
यदि आप Windows का उपयोग कर रहे हैं, तो nc के बजाय connect.exe का उपयोग करें या PuTTY के माध्यम से ProxyCommand सेट करें। macOS और Linux पर netcat आमतौर पर पहले से ही स्थापित होता है।
पर्यावरण चर सेटअप
एक वैकल्पिक तरीका - पर्यावरण चर। ये केवल git के लिए ही नहीं, बल्कि कई अन्य कमांड लाइन उपकरणों के लिए भी काम करते हैं:
# Linux / macOS - ~/.bashrc या ~/.zshrc में जोड़ें export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" export NO_PROXY="localhost,127.0.0.1" # Windows (PowerShell) $env:HTTP_PROXY = "http://user:password@proxy-host:port" $env:HTTPS_PROXY = "http://user:password@proxy-host:port"
npm और Node.js के लिए प्रॉक्सी सेटअप
npm में प्रॉक्सी के लिए अंतर्निहित समर्थन है। सेटअप केवल एक कमांड लेता है और तुरंत सभी पैकेज स्थापना कार्यों पर लागू होता है। यह विशेष रूप से ईरानी डेवलपर्स के लिए महत्वपूर्ण है जो JavaScript/TypeScript स्टैक के साथ काम कर रहे हैं: React, Vue, Angular, Next.js - सभी सक्रिय रूप से npmjs.com का उपयोग करते हैं।
# npm के लिए प्रॉक्सी सेटअप npm config set proxy http://user:password@proxy-host:port npm config set https-proxy http://user:password@proxy-host:port # वर्तमान कॉन्फ़िगरेशन की जांच npm config get proxy npm config get https-proxy # प्रॉक्सी बंद करना (यदि सीधे कनेक्शन पर लौटना है) npm config delete proxy npm config delete https-proxy
सेटिंग्स ~/.npmrc फ़ाइल में सहेजी जाती हैं। आप इस फ़ाइल को सीधे संपादित भी कर सकते हैं:
# ~/.npmrc की सामग्री proxy=http://user:password@proxy-host:port https-proxy=http://user:password@proxy-host:port strict-ssl=false
Yarn और pnpm
यदि आप Yarn या pnpm का उपयोग कर रहे हैं, तो सेटअप समान है:
# Yarn v1 yarn config set proxy http://user:password@proxy-host:port yarn config set https-proxy http://user:password@proxy-host:port # Yarn v2/v3 (Berry) - .yarnrc.yml को संपादित करें # httpProxy: "http://user:password@proxy-host:port" # httpsProxy: "http://user:password@proxy-host:port" # pnpm pnpm config set proxy http://user:password@proxy-host:port pnpm config set https-proxy http://user:password@proxy-host:port
CI/CD के लिए सलाह:
यदि आप GitHub Actions, GitLab CI या किसी अन्य प्रणाली का उपयोग कर रहे हैं, तो प्रोजेक्ट के रहस्यों में HTTP_PROXY और HTTPS_PROXY चर जोड़ें। इससे पाइपलाइन के सभी चरणों को स्वचालित रूप से प्रॉक्सी का उपयोग करने की अनुमति मिलेगी।
PyPI और pip के लिए प्रॉक्सी सेटअप
Python डेवलपर्स ईरान से PyPI के ब्लॉक का सामना विशेष रूप से अक्सर करते हैं: pip पैकेज डाउनलोड करने के लिए HTTPS का उपयोग करता है, और यदि IP ब्लॉक किया गया है, तो स्थापना बस लटक जाती है या त्रुटि देती है। pip के लिए प्रॉक्सी सेट करने के कुछ तरीके हैं।
विधि 1: स्थापना के दौरान --proxy ध्वज
# प्रॉक्सी के माध्यम से एक बार की स्थापना pip install requests --proxy http://user:password@proxy-host:port # pip3 के लिए pip3 install django --proxy http://user:password@proxy-host:port
विधि 2: pip.conf कॉन्फ़िगरेशन फ़ाइल
प्रत्येक कमांड पर प्रॉक्सी निर्दिष्ट करने से बचने के लिए, pip के कॉन्फ़िगरेशन फ़ाइल में सेटिंग्स जोड़ें:
# Linux/macOS: ~/.config/pip/pip.conf
# Windows: %APPDATA%\pip\pip.ini
[global]
proxy = http://user:password@proxy-host:port
trusted-host = pypi.org
pypi.python.org
files.pythonhosted.org
विधि 3: पर्यावरण चर
# pip स्वचालित रूप से मानक पर्यावरण चर को उठाता है export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # इसके बाद सामान्य pip install प्रॉक्सी के माध्यम से काम करता है pip install numpy pandas scikit-learn
Poetry और Conda
यदि आप निर्भरताओं का प्रबंधन करने के लिए Poetry का उपयोग कर रहे हैं, तो प्रॉक्सी सेटिंग पर्यावरण चर के माध्यम से की जाती है - Poetry स्वचालित रूप से HTTP_PROXY और HTTPS_PROXY को विरासत में लेता है। Conda के लिए, ~/.condarc फ़ाइल में जोड़ें:
# ~/.condarc proxy_servers: http: http://user:password@proxy-host:port https: http://user:password@proxy-host:port
अन्य डेवलपर उपकरण: Docker, Composer, Maven
ब्लॉकिंग केवल GitHub, npm और PyPI तक सीमित नहीं है। आइए अन्य लोकप्रिय विकास उपकरणों के लिए प्रॉक्सी सेटअप पर चर्चा करें, जो ईरान से अनुपलब्ध हो सकते हैं।
Docker
Docker Hub ईरानी IP के लिए ब्लॉक किया गया है। docker pull करने के लिए, Docker डेमन कॉन्फ़िगरेशन में प्रॉक्सी सेट करें:
# Linux: /etc/docker/daemon.json बनाएँ या संपादित करें
{
"proxies": {
"http-proxy": "http://user:password@proxy-host:port",
"https-proxy": "http://user:password@proxy-host:port",
"no-proxy": "localhost,127.0.0.1"
}
}
# Docker को पुनरारंभ करें
sudo systemctl restart docker
macOS और Windows पर, Docker Desktop के लिए प्रॉक्सी सेटिंग ग्राफिकल इंटरफेस के माध्यम से की जाती है: Settings → Resources → Proxies.
Composer (PHP)
# Composer पर्यावरण चर का उपयोग करता है export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # या Composer कॉन्फ़िगरेशन के माध्यम से composer config --global http-basic.repo.packagist.org user password
Maven (Java)
<!-- ~/.m2/settings.xml -->
<settings>
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy-host</host>
<port>port</port>
<username>user</username>
<password>password</password>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
</settings>
Go मॉड्यूल
# Go GOPROXY का उपयोग करके मॉड्यूल डाउनलोड करता है # आप मिरर निर्दिष्ट कर सकते हैं या सिस्टम प्रॉक्सी सेट कर सकते हैं export GOPROXY="https://goproxy.io,direct" export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port"
सुरक्षा: GitHub पर खाता न खोने के लिए
प्रॉक्सी का उपयोग पहुंच की समस्या को हल करता है, लेकिन एक नई समस्या उत्पन्न करता है: यदि आप विभिन्न IP पतों से GitHub में लॉग इन करते हैं (आज ईरान से, कल अमेरिकी प्रॉक्सी के माध्यम से, परसों यूरोपीय प्रॉक्सी के माध्यम से), GitHub की सुरक्षा प्रणाली आपके खाते को संदिग्ध के रूप में ब्लॉक कर सकती है। इससे बचने के लिए यहां कुछ तरीके दिए गए हैं।
IP स्थिरता का नियम
GitHub के साथ काम करने के लिए एक ही प्रॉक्सी सर्वर का उपयोग करें। यदि आपका प्रॉक्सी प्रदाता प्रत्येक कनेक्शन पर IP बदलता है (रोटेशनल प्रॉक्सी), तो यह संदेह पैदा कर सकता है। GitHub के लिए स्थिर प्रॉक्सी सबसे अच्छे होते हैं - एक IP जो लंबे समय तक आपके लिए निर्धारित होता है।
- स्थिर रहवासी प्रॉक्सी - एक घरेलू IP जो अमेरिका या यूरोप से आपके लिए निर्धारित है। GitHub के लिए अधिकतम विश्वसनीयता।
- रोटेशनल प्रॉक्सी - npm/pip (पैकेज डाउनलोड) के लिए उपयुक्त है, लेकिन GitHub खाते में लॉगिन के लिए नहीं।
- एक ही GitHub खाते के लिए सीधे और प्रॉक्सी कनेक्शन को न मिलाएँ: या तो हमेशा प्रॉक्सी के माध्यम से, या कभी नहीं।
दो-कारक प्रमाणीकरण
GitHub पर 2FA सक्षम करें - यह आपके खाते की सुरक्षा करेगा भले ही कोई आपके क्रेडेंशियल्स को पकड़ ले। SMS के बजाय ऑथेंटिकेटर ऐप (Google Authenticator, Authy) का उपयोग करें - SMS ईरान से अनुपलब्ध हो सकता है या अस्थिर रूप से काम कर सकता है।
पासवर्ड के बजाय SSH कुंजी
HTTPS प्रमाणीकरण के लिए पासवर्ड के बजाय GitHub के साथ काम करने के लिए SSH कुंजी सेट करें। SSH कुंजी डिवाइस से जुड़ी होती है, न कि IP से, इसलिए SSH का उपयोग करते समय IP बदलना GitHub की सुरक्षा प्रणाली के लिए कम महत्वपूर्ण होता है।
डेवलपर्स के लिए प्रॉक्सी प्रकारों की तुलना
आइए सारांश के रूप में एक तालिका में देखें: कौन सा प्रॉक्सी प्रकार ईरानी डेवलपर के विशिष्ट कार्यों के लिए सबसे उपयुक्त है।
| कार्य | रहवासी | डेटा सेंटर | मोबाइल |
|---|---|---|---|
| GitHub (खाता, push/pull) | ✅ उत्कृष्ट | ⚠️ ब्लॉक होने का जोखिम | ✅ उत्कृष्ट |
| npm install (पैकेज स्थापना) | ✅ अच्छा | ✅ उत्कृष्ट | ✅ अच्छा |
| pip install (PyPI) | ✅ अच्छा | ✅ उत्कृष्ट | ✅ अच्छा |
| Docker Hub (छवियाँ खींचना) | ✅ अच्छा | ✅ अच्छा | ⚠️ महंगा |
| CI/CD पाइपलाइन (बड़े अनुरोध) | ⚠️ महंगा | ✅ उत्कृष्ट | ❌ अनुपयुक्त |
| कनेक्शन की गति | औसत | उच्च | औसत |
| IP ब्लॉक होने का जोखिम | कम | मध्यम | बहुत कम |
| लागत | औसत | कम | उच्च |
सिफारिश की गई रणनीति
डेवलपर के लिए अनुकूल योजना:
- GitHub के लिए - अमेरिका या जर्मनी से स्थिर रहवासी प्रॉक्सी। एक IP, हमेशा एक ही।
- npm/pip/Docker के लिए - अच्छी बैंडविड्थ के साथ डेटा सेंटर प्रॉक्सी। गति IP की प्रतिष्ठा से अधिक महत्वपूर्ण है।
- ब्राउज़र और वेब सेवाओं के लिए - वही रहवासी प्रॉक्सी या अलग।
प्रोटोकॉल: HTTP बनाम SOCKS5
अधिकांश विकास उपकरण (git, npm, pip) HTTP/HTTPS प्रॉक्सी का समर्थन करते हैं। SOCKS5 अधिक बहुपरकारी है - यह TCP स्तर पर काम करता है और किसी भी प्रोटोकॉल के लिए उपयुक्त है, जिसमें SSH शामिल है। यदि आपके प्रॉक्सी प्रदाता SOCKS5 का समर्थन करता है, तो GitHub के लिए SSH कनेक्शनों के लिए इसका उपयोग करें। HTTP ट्रैफ़िक (npm, pip) के लिए, कोई विशेष अंतर नहीं है।
निष्कर्ष और सिफारिशें
प्रतिबंध ईरानी डेवलपर्स के लिए वास्तविक बाधाएँ उत्पन्न करते हैं, लेकिन वे काम को असंभव नहीं बनाते। सही तरीके से सेट किया गया प्रॉक्सी GitHub के साथ काम करने, npm और pip के माध्यम से पैकेज स्थापित करने, Docker Hub से छवियों को खींचने की अनुमति देता है - बिना खातों को खोए और बिना निरंतर ब्लॉक के।
लेख के मुख्य निष्कर्ष:
- GitHub के साथ काम करने के लिए स्थिर रहवासी प्रॉक्सी का उपयोग करें - अमेरिका या यूरोप से एक स्थायी IP।
- पैकेज स्थापित करने के लिए (npm, pip, Composer) सस्ते डेटा सेंटर प्रॉक्सी का उपयोग करें जो अच्छी गति प्रदान करते हैं।
- उपकरणों के स्तर पर प्रॉक्सी सेट करें (
git config,npm config,pip.conf), न कि केवल सिस्टम स्तर पर। - एक ही GitHub खाते के लिए सीधे कनेक्शन और प्रॉक्सी को न मिलाएँ।
- अधिकतम सुरक्षा के लिए 2FA सक्षम करें और SSH कुंजी का उपयोग करें।
यदि आप GitHub और अन्य ब्लॉक किए गए सेवाओं के साथ निरंतर काम करने के लिए एक विश्वसनीय समाधान की तलाश कर रहे हैं, तो हम रहवासी प्रॉक्सी पर ध्यान देने की सिफारिश करते हैं - वे वास्तविक घरेलू IP पते के माध्यम से स्थिर पहुंच प्रदान करते हैं, जो GitHub और अन्य प्लेटफार्मों द्वारा प्रतिबंधित होने की संभावना बहुत कम होती है।
```