يواجه المطورون الإيرانيون بانتظام قيودًا صارمة: يقوم GitHub بحظر الحسابات، ولا يتم تثبيت حزم npm، ويعطي PyPI خطأ في الاتصال. كل هذا هو نتيجة للعقوبات التي تقطع دولًا كاملة عن البنية التحتية الأساسية للتطوير. إذا كنت تعمل من إيران أو توظف متخصصين إيرانيين، ستوفر لك هذه المقالة حلاً محددًا - بدون مياه ونظريات.
ما الذي يتم حظره ولماذا
تشمل العقوبات الأمريكية ضد إيران خدمات التكنولوجيا، وليس فقط العمليات المالية. الشركات التي تقع تحت الولاية القضائية الأمريكية (وهي تقريبًا كل مجموعة تطوير حديثة) ملزمة بتقييد الوصول للمستخدمين من الدول الخاضعة للعقوبات. نتيجة لذلك، يواجه المطورون الإيرانيون المشاكل التالية:
- GitHub - يحظر الحسابات، تصبح المستودعات غير متاحة، لا تعمل الإجراءات، ولا يعمل 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 وغيرها)، يتم رفض الطلب تلقائيًا حتى قبل التحقق من الحساب. لهذا السبب، فإن استخدام VPN أو بروكسي مع IP من دولة أخرى ليس مجرد مناورة التفافية، بل هو الطريقة الوحيدة الفعالة للوصول إلى بنية التطوير.
من المهم أن نفهم:
تعمل البروكسي و VPN على حل المشكلة على مستويات مختلفة. تقوم VPN بإعادة توجيه كل حركة المرور في النظام - وهذا مناسب للمتصفح، ولكنه غير مناسب لأدوات سطر الأوامر (git، npm، pip)، حيث تحتاج إلى إعداد دقيق. تسمح البروكسي بإعداد تجاوز العقوبات فقط لأداة معينة، دون التأثير على حركة المرور الأخرى.
أي نوع من البروكسي مناسب للتطوير
بالنسبة لمهام المطور - العمل مع المستودعات، تثبيت الحزم، CI/CD - تعتبر استقرار الاتصال، السرعة، ونقاء IP مهمة. دعونا نستعرض ثلاثة أنواع رئيسية من البروكسي وكيف تناسب سيناريوهات معينة.
بروكسي سكنية
البروكسي السكنية تستخدم عناوين IP حقيقية لمستخدمين منزليين من دول مختلفة. بالنسبة لـ GitHub، هذا أمر حاسم: تقوم المنصة بتحليل ليس فقط الموقع الجغرافي لـ IP، ولكن أيضًا سمعته. IP من مركز بيانات يثير الشكوك، بينما يتم اعتبار IP المنزلي الأمريكي أو الأوروبي كمستخدم عادي. تعتبر البروكسي السكنية الخيار الأكثر موثوقية للعمل مع حسابات GitHub بشكل دائم.
بروكسي مراكز البيانات
بروكسي مراكز البيانات - سريعة ورخيصة. إنها مناسبة جدًا لتثبيت الحزم عبر npm و pip: لا تتحقق PyPI و npmjs.com من سمعة IP بشكل صارم كما هو الحال مع GitHub. إذا كنت بحاجة فقط لتنزيل الاعتمادات في خط أنابيب CI/CD، فإن بروكسي مركز البيانات ستنجز المهمة وستكون أرخص.
بروكسي موبايل
بروكسي موبايل تستخدم IP لمشغلي الهواتف المحمولة (4G/5G). هذا هو النوع الأكثر "نقاءً" من IP من حيث أنظمة مكافحة الاحتيال: خلف كل IP موبايل يوجد آلاف المستخدمين الحقيقيين، لذا فإن حظره ليس مربحًا. تعتبر بروكسي الموبايل ذات صلة إذا كنت قد واجهت بالفعل مشاكل في حظر حساب GitHub الخاص بك وترغب في تقليل خطر الحظر مرة أخرى إلى الحد الأدنى.
إعداد البروكسي لـ GitHub
يستخدم GitHub بروتوكولين للعمل مع المستودعات: HTTPS و SSH. يتم إعداد البروكسي لكل منهما بشكل مختلف. دعونا نستعرض كلا الخيارين.
بروكسي لـ git عبر HTTPS
هذه هي الطريقة الأكثر شيوعًا للعمل مع GitHub. يتم الإعداد من خلال تكوين git. افتح الطرفية ونفذ:
# إعداد بروكسي HTTP لـ git (استبدل 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
بروكسي لـ git عبر SSH
يعمل الاتصال SSH مع GitHub عبر المنفذ 22 (أو 443 كبديل). يتم استخدام أداة nc (netcat) أو connect لتمرير حركة مرور SSH عبر البروكسي. قم بتحرير ملف ~/.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، يمكنك استخدام connect.exe بدلاً من nc أو إعداد ProxyCommand عبر PuTTY. على 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 daemon:
# 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 عبر واجهة المستخدم الرسومية: الإعدادات → الموارد → البروكسي.
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
استخدام البروكسي يحل مشكلة الوصول، لكنه يخلق مشكلة جديدة: إذا قمت بتسجيل الدخول إلى GitHub من عناوين IP مختلفة (اليوم من إيران، وغدًا عبر بروكسي أمريكي، وبعد غد عبر بروكسي أوروبي)، قد تقوم نظام أمان GitHub بحظر الحساب كحساب مشبوه. إليك كيفية تجنب ذلك.
قاعدة ثبات IP
استخدم نفس خادم البروكسي للعمل مع GitHub. إذا كان مزود البروكسي الخاص بك يغير IP مع كل اتصال (بروكسي دوار)، فقد يثير ذلك الشكوك. بالنسبة لـ GitHub، تعتبر البروكسي الثابتة هي الأنسب - IP واحد، دائمًا نفس الشيء.
- بروكسي سكنية ثابتة - IP منزلي واحد من الولايات المتحدة أو أوروبا، مثبت لك. أقصى موثوقية لـ GitHub.
- بروكسي دوار - مناسب لـ npm/pip (تحميل الحزم)، ولكن ليس لتسجيل الدخول إلى حساب GitHub.
- لا تخلط بين الاتصال المباشر والبروكسي: إما دائمًا عبر البروكسي، أو أبدًا.
المصادقة الثنائية
قم بتمكين 2FA على GitHub - ستحمي حسابك حتى إذا قام شخص ما باعتراض بيانات اعتمادك. استخدم تطبيق مصادقة (مثل Google Authenticator أو Authy) بدلاً من الرسائل النصية القصيرة - قد تكون الرسائل النصية القصيرة غير متاحة من إيران أو تعمل بشكل غير موثوق.
مفاتيح SSH بدلاً من كلمات المرور
قم بإعداد مفاتيح SSH للعمل مع GitHub بدلاً من مصادقة HTTPS بكلمة المرور. ترتبط مفاتيح SSH بالجهاز، وليس بـ IP، لذا فإن تغيير IP عند استخدام SSH أقل أهمية بالنسبة لنظام أمان GitHub.
مقارنة أنواع البروكسي للمطورين
دعونا نلخص في شكل جدول: أي نوع من البروكسي يناسب مهام المطور الإيراني بشكل أفضل.
| المهمة | سكنية | مركز البيانات | موبايل |
|---|---|---|---|
| GitHub (حساب، دفع/سحب) | ✅ ممتاز | ⚠️ خطر الحظر | ✅ ممتاز |
| 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، استخدمه للاتصالات SSH مع GitHub. بالنسبة لحركة مرور 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 وغيرها من المنصات.
```