إعدادات تطبيق "المحرّك الذكي للاتصال"

يبحث أداة الاتصال الذكية عن استراتيجية تزيل حظر نظام أسماء النطاقات وTLS لقائمة معيّنة من النطاقات التجريبية. ويستخدم هذا الإجراء إعدادًا يصف استراتيجيات متعددة لتحديد الإجراء المناسب.

ملف الإعدادات بتنسيق YAML الخاص بتطبيق "المحرّك الذكي للاتصال"

يتم ضبط إعدادات تطبيق "المحرّك الذكي للاتصال" بتنسيق YAML. يُرجى الاطّلاع على المثال أدناه:

dns:
  - system: {}
  - https:
      name: 8.8.8.8
  - https:
      name: 9.9.9.9
tls:
  - ""
  - split:2
  - tlsfrag:1

fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1

إعدادات نظام أسماء النطاقات

  • يحدِّد الحقل dns قائمة ببرامج حلّ نظام أسماء النطاقات المطلوب اختبارها.
  • يمكن أن يكون كلّ حلّ عناوين DNS من أحد الأنواع التالية:
    • system: استخدِم نظام حلّ المشاكل. حدِّد باستخدام عنصر فارغ.
    • https: استخدام برنامج تعيين مشفّر لنظام أسماء النطاقات عبر بروتوكول HTTPS
    • tls: استخدِم نظامًا لتحليل نظام أسماء النطاقات المشفَّر عبر بروتوكول أمان طبقة النقل (DoT).
    • udp: استخدِم أداة حلّ لبروتوكول UDP.
    • tcp: استخدِم برنامج حلّ مشاكل بروتوكول TCP.

برنامج حلّ معالجة نظام أسماء النطاقات عبر بروتوكول HTTPS (DoH)

https:
  name: dns.google
  address: 8.8.8.8
  • name: اسم نطاق خادم بروتوكول DoH
  • address: المضيف:المنفذ لخادم بروتوكول البحث عن الدومين (DOH) القيمة التلقائية هي name:443.

برنامج حلّ نظام أسماء النطاقات عبر بروتوكول TLS (DoT)

tls:
  name: dns.google
  address: 8.8.8.8
  • name: اسم نطاق خادم DoT.
  • address: المضيف:المنفذ لخادم DoT الإعداد التلقائي هو name:853.

برنامج تعيين بروتوكول UDP

udp:
  address: 8.8.8.8
  • address: المضيف:المنفذ الخاص بوحدة تحليل عنوان بروتوكول بيانات المستخدم (UDP)

برنامج تعيين بروتوكول TCP

tcp:
  address: 8.8.8.8
  • address: المضيف:المنفذ الخاص بحلّ عناوين TCP

إعداد بروتوكول أمان طبقة النقل

  • يحدِّد الحقل tls قائمة بعمليات نقل TLS المطلوب اختبارها.
  • كل عملية نقل TLS هي سلسلة تحدّد عملية النقل التي سيتم استخدامها.
  • على سبيل المثال، يحدّد override:host=cloudflare.net|tlsfrag:1 عملية نقل تستخدِم ميزة "إخفاء النطاق" مع Cloudflare وميزة "تقسيم بروتوكول أمان طبقة النقل". اطّلِع على مستندات الإعداد للحصول على التفاصيل.

إعداد الإجراء الاحتياطي

يتم استخدام الإعداد الاحتياطي إذا لم تتمكّن أيّ من الاستراتيجيات التي لا تستخدم الخادم الوكيل من الاتصال. على سبيل المثال، يمكنه تحديد خادم وكيل احتياطي لمحاولة اتصال المستخدم. سيكون استخدام الإعداد الاحتياطي أبطأ في البدء، لأنّه يجب أولاً أن تفشل/تنتهي مهلة استراتيجية DNS/TLS الأخرى.

يجب أن تكون سلاسل النسخ الاحتياطية:

  • سلسلة إعدادات StreamDialer صالحة كما هو محدّد في configurl
  • عنصر إعدادات Psiphon صالح كعنصر فرعي لحقل psiphon

مثال على خادم Shadowsocks

fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1

مثال على خادم SOCKS5

fallback:
  - socks5://[USERINFO]@[HOST]:[PORT]

مثال على إعدادات Psiphon

لاستخدام شبكة Psiphon، عليك إجراء ما يلي:

  1. يُرجى التواصل مع فريق Psiphon للحصول على إعدادات تتيح لك الوصول إلى شبكتهم. وقد يتطلّب ذلك إبرام عقد.
  2. أضِف إعدادات Psiphon التي تم استلامها إلى قسم fallback في إعدادات "مُعدِّل اتّصال ذكي". بما أنّ تنسيق JSON متوافق مع تنسيق YAML، يمكنك نسخ ملف إعدادات Psiphon ولصقه مباشرةً في قسم fallback، على النحو التالي:
fallback:
  - psiphon: {
      "PropagationChannelId": "FFFFFFFFFFFFFFFF",
      "SponsorId": "FFFFFFFFFFFFFFFF",
      "DisableLocalSocksProxy" : true,
      "DisableLocalHTTPProxy" : true,
      ...
    }

كيفية استخدام تطبيق "المحرّك الذكي للاتصال"

لاستخدام "أداة الاتصال الذكية"، أنشئ عنصرًا من النوع StrategyFinder وادعُ NewDialer، مع تضمين قائمة النطاقات الاختبارية وملف الإعدادات بتنسيق YAML. ستُعرِض طريقة NewDialer transport.StreamDialer يمكن استخدامه لإنشاء اتصالات باستخدام الاستراتيجية التي تم العثور عليها. على سبيل المثال:

finder := &smart.StrategyFinder{
    TestTimeout:  5 * time.Second,
    LogWriter:   os.Stdout,
    StreamDialer: &transport.TCPDialer{},
    PacketDialer: &transport.UDPDialer{},
}

configBytes := []byte(`
dns:
  - system: {}
  - https:
      name: 8.8.8.8
  - https:
      name: 9.9.9.9
tls:
  - ""
  - split:2
  - tlsfrag:1
fallback:
  - ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
`)

dialer, err := finder.NewDialer(
  context.Background(),
  []string{"www.google.com"},
  configBytes
)
if err != nil {
    // Handle error.
}

// Use dialer to create connections.

هذا مثال أساسي وقد تحتاج إلى تعديله لتلبية حالة الاستخدام المحدّدة.