العودة إلى المدونة

بروكسي للمطورين الإيرانيين: كيفية الوصول إلى GitHub وnpm وPyPI تحت العقوبات في عام 2024

يواجه المطورون الإيرانيون حظر GitHub وnpm وPyPI بسبب العقوبات. نوضح كيفية تجاوز القيود عبر البروكسي ومواصلة العمل دون انقطاع.

📅٢٥ محرم ١٤٤٨ هـ
```html

يواجه المطورون الإيرانيون بانتظام قيودًا صارمة: يقوم 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 منخفض متوسط منخفض جدًا
التكلفة متوسطة منخفضة مرتفعة

استراتيجية موصى بها

المخطط الأمثل للمطور:

  1. لـ GitHub - بروكسي سكنية ثابتة من الولايات المتحدة أو ألمانيا. IP واحد، دائمًا نفس الشيء.
  2. لـ npm/pip/Docker - بروكسي مركز بيانات بسعة جيدة. السرعة أهم من سمعة IP.
  3. للمتصفح والخدمات عبر الإنترنت - نفس البروكسي السكنية أو بروكسي منفصل.

البروتوكولات: 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 وغيرها من المنصات.

```