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

بروكسي لـ GitHub من إيران: كيف يمكن للمطورين تحت العقوبات الحفاظ على الوصول إلى الكود

يقوم GitHub بحظر الوصول من إيران بسبب عقوبات الولايات المتحدة - لكن المطورين يجدون حلولاً فعالة. نستعرض البروكسيات التي تعمل بالفعل وكيفية إعدادها في Git وVS Code والطرفية.

📅٦ ربيع الأول ١٤٤٨ هـ
```html

حظر GitHub الوصول للمستخدمين من إيران في عام 2019 بناءً على طلب OFAC - الهيئة الأمريكية التي تراقب الامتثال للعقوبات. منذ ذلك الحين، يواجه المطورون الإيرانيون نفس الصورة: المستودعات غير متاحة، ولا تتم عمليات الدفع والسحب، وقد يتم تجميد الحساب في أي لحظة. ومع ذلك، لا تتوقف الأعمال - تواصل الفرق الالتزام، والنشر، والمشاركة في مشاريع المصدر المفتوح. في هذه المقالة، نناقش ما يعمل فعلاً في عامي 2024-2025، وما هي البروكسي المناسبة لـ GitHub، وكيفية إعدادها بشكل صحيح دون فقدان السرعة.

لماذا يحظر GitHub إيران: العقوبات والتنفيذ الفني

في يوليو 2019، بدأ GitHub في تقييد الوصول للمستخدمين من إيران، القرم، كوبا، سوريا وكوريا الشمالية. السبب هو متطلبات OFAC (مكتب مراقبة الأصول الأجنبية) في إطار التشريعات العقابية الأمريكية. يجب على Microsoft، التي تمتلك GitHub منذ عام 2018، الامتثال لهذه القيود كشركة أمريكية.

من الناحية الفنية، تعمل الحظر على عدة مستويات:

  • الحظر الجغرافي حسب IP: يقوم GitHub بتحديد الدولة حسب عنوان IP ويقوم بحظر الطلبات من النطاقات الإيرانية (كتل AS المملوكة لمزودي الخدمة الإيرانيين).
  • تجميد الحسابات: يمكن أن يتم تحويل الحسابات المسجلة من IP الإيراني أو التي تشير إلى إيران في الملف الشخصي إلى وضع القراءة فقط أو تجميدها بالكامل.
  • حظر المستودعات الخاصة: المستودعات العامة متاحة جزئيًا للقراءة، ولكن الخاصة مغلقة بالكامل.
  • قيود GitHub Actions وPackages: خطوط CI/CD وسجلات الحزم غير متاحة أيضًا من المناطق المحظورة.

ومع ذلك، صرح GitHub عدة مرات بأنه يعارض هذه القيود ويضغط من أجل تخفيفها لدى المنظمين. في عام 2019، حصلت الشركة على إذن لتوفير وصول مجاني إلى المستودعات العامة للمطورين الإيرانيين، ولكن لم يتم رفع الحظر بالكامل.

⚠️ من المهم أن نفهم: الحظر يستهدف المنظمات والهياكل الحكومية الخاضعة للعقوبات، وليس المطورين الأفراد. يعمل معظم المبرمجين الإيرانيين في فرق دولية ولا يخضعون للعقوبات شخصيًا - لكن النظام تقنيًا يحظر الجميع حسب IP.

لهذا السبب، يكمن حل المشكلة في تغيير عنوان IP - هذه هي الطريقة الوحيدة لتجاوز الحظر الجغرافي تقنيًا. دعونا نستعرض الأدوات المناسبة لذلك.

ما الذي يعمل فعلاً: بروكسي، VPN وطرق الالتفاف

يستخدم المطورون الإيرانيون عدة طرق. لكل منها مزايا وعيوب - دعونا نناقشها بصدق، بدون تسويق.

1. بروكسي سكنية

البروكسي السكنية تستخدم عناوين IP حقيقية لمستخدمين منزليين من دول أخرى - ألمانيا، هولندا، الولايات المتحدة، تركيا. من وجهة نظر GitHub، يبدو هذا الطلب كأنه من مستخدم عادي من دولة مسموح بها. هذه هي الخيار الأكثر موثوقية للعمل المستمر: خطر الحد الأدنى من حظر البروكسي نفسه، واستقرار عالٍ.

العيب هو أن السرعة أقل من بروكسي مراكز البيانات، والتكلفة أعلى. بالنسبة لعمليات Git (push/pull/clone) عادةً ما يكون هذا غير حرج: المستودعات بحجم ميغابايت، وليس غيغابايت.

2. بروكسي مراكز البيانات

تعمل بروكسي مراكز البيانات بشكل أسرع وتكلفتها أقل. مناسبة لاستنساخ مستودعات كبيرة، تنزيل العناصر، والعمل مع واجهة برمجة تطبيقات GitHub. ومع ذلك، من السهل تحديد عناوين IP لمراكز البيانات كبروكسي - تم إدراج بعض النطاقات بالفعل في قوائم الحظر الخاصة بـ GitHub. نوصي باستخدام بروكسي مراكز البيانات من المواقع الأوروبية (DE، NL، FR) - فهي نادرًا ما تقع تحت الفلاتر.

3. VPN

VPN - هي الأداة الأكثر شعبية بين المستخدمين الإيرانيين. تعمل على مستوى نظام التشغيل بالكامل، ولا تتطلب إعدادًا في كل تطبيق على حدة. العيوب: تم حظر العديد من خوادم VPN بالفعل من قبل GitHub (خاصة المجانية الشائعة)، السرعة غير مستقرة، وعند انقطاع الاتصال، قد يتسرب المرور عبر IP الإيراني.

4. Tor

يعمل Tor من الناحية الفنية، لكن GitHub يقوم بنشاط بحظر العقد النهائية لـ Tor. السرعة منخفضة للغاية - قد يستغرق استنساخ مستودع صغير ساعات. سيكون مناسبًا للوصول العرضي إلى واجهة الويب، لكن ليس للتطوير المنتظم.

5. أنفاق SSH عبر خادم في دولة أخرى

إذا كان لديك VPS في أوروبا أو الولايات المتحدة، يمكنك إنشاء بروكسي SOCKS5 عبر نفق SSH. هذا موثوق تقنيًا ومجاني (عند وجود الخادم)، لكنه يتطلب معرفة أساسية بلينكس. لمزيد من التفاصيل حول الإعداد - في القسم الخاص بـ Git.

استنتاج حول الأدوات:

للعمل اليومي مع GitHub، فإن الربط المثالي هو: بروكسي سكنية أو مراكز البيانات + إعداد في Git على مستوى التكوين. هذا يوفر الاستقرار دون التأثير على جميع حركة المرور في النظام.

ما هي أنواع البروكسي المناسبة لـ GitHub: جدول المقارنة

دعونا نستعرض جميع الخيارات في جدول واحد، لتسهيل الاختيار حسب وضعك:

النوع السرعة الموثوقية خطر حظر GitHub أفضل استخدام لـ
بروكسي سكنية متوسطة عالية حد أدنى العمل اليومي، push/pull، واجهة الويب
بروكسي مراكز البيانات عالية متوسطة متوسط استنساخ مستودعات كبيرة، واجهة برمجة تطبيقات GitHub، CI/CD
بروكسي موبايل متوسطة عالية جدًا منخفضة جدًا العمل مع الحساب إذا كان بالفعل تحت الشك
VPN (مدفوع) متوسطة متوسطة متوسط الوصول العام إلى الإنترنت + GitHub
نفق SSH (VPS خاص) عالية عالية منخفضة المطورون الذين لديهم VPS في أوروبا/الولايات المتحدة
Tor منخفضة جدًا منخفضة مرتفعة لا نوصي باستخدامها للعمل مع Git

إذا كان حسابك قد تلقى تحذيرات بالفعل أو تم تجميده مؤقتًا، يجب أن تفكر في استخدام بروكسي موبايل - فهي تستخدم IP من شركات الهاتف المحمول، والتي نادرًا ما يتم حظرها من قبل GitHub، حيث أن هناك آلاف المستخدمين خلف كل IP موبايل.

كيفية إعداد البروكسي في Git، terminal و IDE: دليل خطوة بخطوة

الميزة الرئيسية لإعداد البروكسي في Git (وليس على مستوى النظام أو VPN) هي أنك تتحكم في حركة المرور التي تمر عبر البروكسي. تظل الطلبات المحلية مباشرة، فقط حركة مرور GitHub يتم توجيهها عبر IP الخارجي.

إعداد بروكسي HTTPS في Git (عالميًا)

افتح terminal ونفذ الأوامر التالية، مع استبدال HOST و PORT ببيانات البروكسي الخاصة بك:

# لبروكسي HTTP/HTTPS:
git config --global http.proxy http://HOST:PORT

# لبروكسي SOCKS5 (موصى به):
git config --global http.proxy socks5://HOST:PORT

# إذا كان البروكسي يتطلب مصادقة (اسم المستخدم + كلمة المرور):
git config --global http.proxy socks5://USERNAME:PASSWORD@HOST:PORT

# تطبيق فقط على github.com (لا تلمس المستودعات الأخرى):
git config --global http.https://github.com.proxy socks5://HOST:PORT

الأمر الأخير هو الأكثر فائدة: فهو يطبق البروكسي فقط على الطلبات إلى github.com، دون التأثير على GitLab أو Bitbucket أو المستودعات الداخلية للشركة.

التحقق من الإعداد

# عرض إعدادات البروكسي الحالية في Git:
git config --global --list | grep proxy

# اختبار الاتصال بـ GitHub عبر البروكسي:
git ls-remote https://github.com/github/gitignore HEAD

إذا أعاد الأمر ls-remote هاش الالتزام - فإن البروكسي يعمل. إذا كانت هناك خطأ Connection refused أو Could not resolve host - تحقق من صحة HOST و PORT.

إيقاف البروكسي (عندما لا يكون مطلوبًا)

# إزالة البروكسي العالمي:
git config --global --unset http.proxy

# إزالة البروكسي فقط لـ github.com:
git config --global --unset http.https://github.com.proxy

الإعداد في VS Code

يستخدم VS Code إعدادات البروكسي النظامية لـ terminal المدمج والإضافات. إذا قمت بإعداد البروكسي في Git عبر terminal، فإن terminal المدمج في VS Code سيأخذ هذه الإعدادات تلقائيًا. لإعداد بروكسي HTTP في المحرر نفسه (على سبيل المثال، لتثبيت الإضافات)، افتح:

File → Preferences → Settings → البحث عن "proxy" → أدخل عنوان البروكسي في حقل http.proxy.

الإعداد عبر نفق SSH (إذا كان لديك VPS خاص)

إذا كان لديك VPS في أوروبا أو الولايات المتحدة، يمكنك إنشاء بروكسي SOCKS5 محلي عبر SSH بأمر واحد:

# إنشاء بروكسي SOCKS5 على المنفذ المحلي 1080 عبر SSH:
ssh -D 1080 -C -N user@your-vps-ip

# ثم في Git، حدد هذا البروكسي المحلي:
git config --global http.proxy socks5://127.0.0.1:1080

يفتح العلم -D 1080 بروكسي SOCKS5 على المنفذ 1080، -C يشغل الضغط، -N يخبر SSH بعدم تنفيذ الأوامر - فقط الحفاظ على النفق.

SSH vs HTTPS: ما الذي يعمل بشكل أفضل عبر البروكسي لـ GitHub

هذا أحد الأسئلة الأكثر شيوعًا: أي بروتوكول يجب استخدامه للعمل مع GitHub عبر البروكسي - SSH (المنفذ 22 أو 443) أو HTTPS (المنفذ 443)؟

HTTPS عبر البروكسي

من السهل توجيه اتصالات HTTPS عبر البروكسي - تعمل الأوامر git config http.proxy التي ناقشناها أعلاه بشكل خاص لـ HTTPS. العيب: عند كل push/pull، يطلب Git اسم المستخدم وكلمة المرور (أو رمز الوصول الشخصي). الحل هو حفظ الرمز في مخزن الاعتماد:

# تفعيل حفظ الرمز في keychain النظامي:
git config --global credential.helper store

# بعد أول push ناجح، سيتم حفظ الرمز تلقائيًا

SSH عبر البروكسي (ProxyCommand)

لا يمكن توجيه اتصالات SSH عبر http.proxy القياسي في Git - تحتاج إلى إعداد منفصل في ~/.ssh/config. أضف الكتلة التالية:

Host github.com
    HostName ssh.github.com
    User git
    Port 443
    ProxyCommand nc -X 5 -x HOST:PORT %h %p

هنا ssh.github.com:443 هو نقطة نهاية SSH خاصة بـ GitHub، تعمل على المنفذ 443 (HTTPS)، مما يساعد على تجاوز الحظر على المنفذ 22. nc -X 5 يستخدم بروكسي SOCKS5.

يمكنك التحقق من اتصال SSH باستخدام الأمر:

ssh -T [email protected]
# الرد المتوقع: مرحبًا username! لقد تم التحقق من هويتك بنجاح...

توصية:

بالنسبة لمعظم المطورين، من الأسهل إعداد HTTPS + بروكسي SOCKS5 في تكوين Git. يتطلب SSH عبر ProxyCommand تثبيت أداة netcat وإعدادًا أكثر تعقيدًا قليلاً، ولكنه يوفر راحة العمل مع مفاتيح SSH دون إدخال الرمز.

المخاطر على الحساب وكيفية تقليلها

استخدام البروكسي لـ GitHub ليس مجرد مهمة تقنية، ولكنه أيضًا مسألة أمان الحساب. يمكن أن يؤدي الإعداد غير الصحيح إلى جذب الانتباه إلى الحساب أو خلق مشاكل جديدة.

الخطر 1: تغيير IP المستمر

إذا كنت تستخدم بروكسي دوار (يتغير IP مع كل طلب أو كل بضع دقائق)، يمكن أن يسجل GitHub نشاطًا مشبوهًا: يقوم حساب واحد بتسجيل الدخول من عشرات IP المختلفة في فترة قصيرة. هذه إشارة للتحقق من الأمان وإمكانية الحظر.

الحل: استخدم بروكسي ثابت (sticky) مع IP ثابت أو بروكسي جلسات مع وقت جلسة طويل (من 24 ساعة). بالنسبة لـ GitHub، لا تحتاج إلى التدوير - تحتاج إلى الاستقرار.

الخطر 2: استخدام IP مراكز البيانات المحظورة

تم إدراج بعض نطاقات IP لمزودي الاستضافة الشائعة (AWS، DigitalOcean، Vultr) بالفعل في قوائم الحظر أو تثير اهتمامًا متزايدًا. لا يقوم GitHub بحظرها مباشرة، ولكن يمكن أن يطلب تحققًا إضافيًا.

الحل: اختر مراكز البيانات الأوروبية (DE، NL، CH) - فهي نادرًا ما تقع في قوائم الحظر. قبل الاستخدام المستمر، تحقق من IP عبر ipinfo.io أو scamalytics.com.

الخطر 3: البيانات الإيرانية في الملف الشخصي

إذا كان ملفك الشخصي على GitHub يشير إلى إيران (في حقل الموقع)، فمن المرجح أن يقع الحساب تحت القيود بغض النظر عن IP. هذا لا يعني أنه يجب إخفاء الأصل - لكن يجب أن نفهم أن هذه عامل إضافي.

الخطر 4: العمل مع مستودعات تنظيمية

إذا كانت منظمتك على GitHub مسجلة كشركة إيرانية أو لديها مدراء إيرانيون، فقد تكون القيود أكثر صرامة - تصل إلى تجميد المنظمة بالكامل. في هذه الحالة، يساعد البروكسي للحساب الشخصي، لكنه لا يحل المشكلة على مستوى المنظمة.

ماذا تفعل إذا تم تجميد الحساب بالفعل

يوفر GitHub عملية رسمية لفك تجميد الحساب للمطورين الأفراد. اكتب إلى [email protected] مع شرح الوضع. في الرسالة، اذكر:

  • أنك مطور فردي، غير مرتبط بالمنظمات الخاضعة للعقوبات
  • أن نشاطك هو تطوير البرمجيات مفتوحة المصدر أو التجارية
  • روابط لمستودعاتك العامة ونشاطك

بناءً على تجربة المجتمع، يقوم GitHub باستعادة الوصول لمعظم المطورين الأفراد في غضون 1-4 أسابيع.

قائمة التحقق: تحقق سريع من إعداد البروكسي لـ GitHub

استخدم هذه القائمة للتأكد من أن كل شيء تم إعداده بشكل صحيح قبل البدء في العمل:

✅ قبل الإعداد

  • احصل على بيانات البروكسي: HOST، PORT، النوع (HTTP/SOCKS5)، اسم المستخدم/كلمة المرور
  • تحقق من IP البروكسي على ipinfo.io - يجب أن تكون الدولة غير إيران
  • تأكد من أن IP ليس في قائمة الحظر: تحقق على scamalytics.com
  • اختر IP ثابت (ليس دوار) للعمل المستمر

✅ إعداد Git

  • تم تنفيذ الأمر git config --global http.proxy
  • تم تطبيق البروكسي فقط على github.com (ليس عالميًا) - إذا كان هناك حاجة لإعداد دقيق
  • تم إعداد credential.helper لتخزين الرمز (لـ HTTPS)
  • بالنسبة لـ SSH: تمت إضافة كتلة في ~/.ssh/config مع ProxyCommand

✅ التحقق من العمل

  • يرجع الأمر git ls-remote https://github.com/github/gitignore HEAD هاش
  • يرجع الأمر ssh -T [email protected] تحية (لـ SSH)
  • تمت عملية الدفع إلى مستودع الاختبار بنجاح
  • لا توجد أخطاء 403 Forbidden أو Repository access blocked

✅ أمان الحساب

  • يتم استخدام IP ثابت (ليس دوار)
  • تم تفعيل المصادقة الثنائية على حساب GitHub
  • تم إعداد رمز الوصول الشخصي بأقل الحقوق المطلوبة (فقط repo)
  • لدى الرمز تاريخ انتهاء (ليس دائمًا)

الخاتمة

القيود العقابية لـ GitHub هي واقع غير مريح للمطورين الإيرانيين، لكنها ليست طريقًا مسدودًا. الحل التقني موجود ويعمل: البروكسي مع IP خارجي مع الإعداد الصحيح لـ Git يسمح بإجراء تطوير كامل - دفع الالتزامات، استنساخ المستودعات، العمل مع GitHub Actions والمشاركة في مشاريع المصدر المفتوح.

الاستنتاجات الرئيسية من المقال:

  • لعمل يومي، اختر بروكسي سكنية أو مراكز بيانات ثابتة من أوروبا - IP مستقر بدون تدوير.
  • قم بإعداد البروكسي في تكوين Git، وليس على مستوى النظام - هذا يوفر تحكمًا دقيقًا دون التأثير على جميع حركة المرور.
  • إذا كان الحساب بالفعل تحت الشك - استخدم IP موبايل، فهي نادرًا ما تقع تحت الحظر.
  • إذا تم تجميد الحساب - اكتب إلى [email protected]، يقوم GitHub باستعادة الوصول للمطورين الأفراد.
  • استخدم SSH عبر المنفذ 443 (ssh.github.com) - هذا يتجاوز معظم الحظر على مستوى المزود.

إذا كنت تبحث عن حل موثوق للعمل المستمر مع GitHub، نوصي بالنظر في البروكسي السكنية - فهي تستخدم IP حقيقي لمستخدمين منزليين من دول مسموح بها، وتجذب الحد الأدنى من انتباه أنظمة الحماية وتوفر اتصالًا مستقرًا لعمليات Git. بالنسبة للمهام ذات الحمل العالي (استنساخ مستودعات كبيرة، خطوط CI/CD)، ستكون بروكسي مراكز البيانات بديلاً جيدًا - فهي أسرع وأكثر اقتصادية عند العمل مع كميات كبيرة من البيانات.

```