يوضّح هذا الدليل كيفية استخدام أدوات سطر الأوامر في حزمة تطوير البرامج (SDK) الخاصة بتطبيق Outline لفهم التشويش على الشبكة وتجنُّبه من منظور بعيد. ستتعرّف على كيفية استخدام أدوات حزمة تطوير البرامج (SDK) لقياس التشويش الشبكي واختبار استراتيجيات التحايل وتحليل النتائج. سيركّز هذا الدليل على أدوات resolve
وfetch
وhttp2transport
.
بدء استخدام أدوات Outline SDK
يمكنك بدء استخدام أدوات Outline SDK مباشرةً من سطر الأوامر.
حلّ مشكلة نظام أسماء النطاقات
تتيح لك الأداة resolve
إجراء عمليات بحث في نظام أسماء النطاقات باستخدام برنامج تعيين محدّد.
لحلّ سجلّ A الخاص بنطاق:
go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type A 1.2.3.4.nip.io
لحلّ سجلّ CNAME، اتّبِع الخطوات التالية:
go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type CNAME www.google.com
جلب صفحة ويب
يمكن استخدام أداة fetch
لاسترداد محتوى صفحة ويب.
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest https://example.com
يمكنه أيضًا فرض استخدام QUIC في الاتصال.
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -proto=h3 https://www.youtube.com
استخدام خادم وكيل محلي
تنشئ أداة http2transport
خادم وكيل محليًا لتوجيه الزيارات من خلاله.
لبدء وكيل محلي باستخدام نقل Shadowsocks، اتّبِع الخطوات التالية:
go run github.com/Jigsaw-Code/outline-sdk/x/tools/http2transport@latest -localAddr 127.0.0.1:8080 -transport "ss://{your_shadowsocks_credentials}"
يمكنك بعد ذلك استخدام هذا الخادم الوكيل مع أدوات أخرى، مثل curl:
curl -p -x http://127.0.0.1:8080 https://ipinfo.io
تحديد استراتيجيات التحايل
تتيح حزمة تطوير البرامج (SDK) الخاصة بـ Outline تحديد استراتيجيات مختلفة للتحايل يمكن دمجها لتجاوز أشكال مختلفة من التشويش على الشبكة. يمكنك الاطّلاع على مواصفات هذه الاستراتيجيات في مستندات Go.
استراتيجيات قابلة للتعديل
يمكن الجمع بين هذه الاستراتيجيات لإنشاء تقنيات تحايل أكثر فعالية.
- معالجة نظام أسماء النطاقات عبر بروتوكول HTTPS باستخدام تجزئة بروتوكول أمان طبقة النقل (TLS):
doh:name=cloudflare-dns.com&address=cloudflare.net:443 | tlsfrag:1
- SOCKS5-over-TLS مع إخفاء هوية النطاق:
tls:sni=decoy.example.com&certname=[HOST] | socks5:[HOST]:[PORT]
- توجيه متعدد المسارات باستخدام Shadowsocks:
ss://[USERINFO1]@[HOST1]:[PORT1] | ss://[USERINFO2]@[HOST2]:[PORT2] | ss://[USERINFO3]@[HOST3]:[PORT3]
الوصول عن بُعد والقياس
لقياس تداخل الشبكة كما يتم رصده في مناطق مختلفة، يمكنك استخدام خوادم وكيل بعيدة. يمكنك العثور على خوادم وكيلة بعيدة أو إنشاؤها للاتصال بها.
خيارات الوصول عن بُعد
باستخدام أداة fetch
، يمكنك اختبار الاتصالات عن بُعد بطرق مختلفة.
خادم Outline
الاتصال عن بُعد بخادم Outline عادي باستخدام نقل Shadowsocks
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "ss://{remote_shadowsocks_credentials}" https://ipinfo.io | jq
SOCKS5 عبر SSH
إنشاء وكيل SOCKS5 باستخدام نفق SSH
ssh -D 127.0.0.1:1080 -C -N $USER@$HOST:$PORT
الاتصال بهذا النفق باستخدام fetch
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "socks5://localhost:1080" https://ipinfo.io | jq
دراسة حالة: تجاوز الحظر المفروض على YouTube في إيران
في ما يلي مثال عملي على رصد التداخل في الشبكة وتجاوزه.
اكتشاف الكتلة
عند محاولة جلب صفحة YouTube الرئيسية من خلال خادم وكيل إيراني، تنتهي مهلة الطلب، ما يشير إلى الحظر.
export TRANSPORT="ss://{remote_shadowsocks_credentials}"
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)" https://www.youtube.com
يتعذّر تنفيذ هذا الأمر بسبب انتهاء المهلة.
التجاوز باستخدام تجزئة بروتوكول أمان طبقة النقل (TLS)
من خلال إضافة تجزئة TLS إلى النقل، يمكننا تجاوز هذا الحظر.
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)|tlsfrag:1" https://www.youtube.com | grep -oe '<title>.*</title>'
يستردّ هذا الأمر بنجاح عنوان صفحة YouTube الرئيسية، وهو
<title>YouTube</title>
.
التجاوز باستخدام تجزئة TLS وDNS-over-HTTPS
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|tlsfrag:1|doh:name=cloudflare-dns.com&address=www.cloudflare.net" https://www.youtube.com | grep -oe '<title>.*</title>'
يؤدي ذلك أيضًا إلى عرض القيمة <title>YouTube</title>
بنجاح.
تجاوز القيود باستخدام خادم Outline
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|ss://<your_shadowsocks_credentials>" https://www.youtube.com | grep -oe '<title>.*</title>'
ويعرض هذا الإجراء أيضًا القيمة <title>YouTube</title>
.
المزيد من التحليلات والمراجع
للمناقشات والأسئلة، يُرجى الانتقال إلى مجموعة مناقشة حزمة تطوير البرامج (SDK) الخاصة بخدمة Outline.