تنظیمات شماره گیر هوشمند

شماره‌گیر هوشمند استراتژی‌ای را جستجو می‌کند که DNS و TLS را برای لیست معینی از دامنه‌های آزمایشی باز می‌کند. برای انتخاب به پیکربندی نیاز دارد که چندین استراتژی را توصیف کند.

پیکربندی YAML برای شماره گیر هوشمند

پیکربندی که Smart Dialer می گیرد در قالب 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 لیستی از حل کننده های DNS را برای آزمایش مشخص می کند.
  • هر حل‌کننده DNS می‌تواند یکی از انواع زیر باشد:
    • system : از سیستم حل کننده استفاده کنید. با یک شی خالی مشخص کنید.
    • https : از یک DNS رمزگذاری شده روی حل‌کننده HTTPS (DoH) استفاده کنید.
    • tls : از یک DNS رمزگذاری شده روی حل‌کننده TLS (DoT) استفاده کنید.
    • udp : از یک حل کننده UDP استفاده کنید.
    • tcp : از یک حل کننده TCP استفاده کنید.

حل‌کننده DNS-over-HTTPS (DoH)

https:
  name: dns.google
  address: 8.8.8.8
  • name : نام دامنه سرور DoH.
  • address : میزبان:پورت سرور DoH. پیش‌فرض name : 443.

حل‌کننده DNS-over-TLS (DoT)

tls:
  name: dns.google
  address: 8.8.8.8
  • name : نام دامنه سرور DoT.
  • address : میزبان:پورت سرور DoT. پیش فرض های name گذاری: 853.

UDP Resolver

udp:
  address: 8.8.8.8
  • address : میزبان:پورت حل‌کننده UDP.

حل کننده TCP

tcp:
  address: 8.8.8.8
  • address : میزبان:پورت حل‌کننده TCP.

پیکربندی TLS

  • فیلد tls فهرستی از انتقال‌های TLS برای آزمایش را مشخص می‌کند.
  • هر انتقال TLS رشته ای است که حمل و نقل مورد استفاده را مشخص می کند.
  • برای مثال، override:host=cloudflare.net|tlsfrag:1 انتقالی را مشخص می کند که از جلوبندی دامنه با تکه تکه شدن Cloudflare و TLS استفاده می کند. برای جزئیات به مستندات پیکربندی مراجعه کنید.

پیکربندی بازگشتی

اگر هیچ یک از استراتژی‌های بدون پروکسی قادر به اتصال نباشند، از پیکربندی بازگشتی استفاده می‌شود. به عنوان مثال می تواند یک سرور پروکسی پشتیبان را برای تلاش برای اتصال کاربر مشخص کند. استفاده از یک بازگشت به عقب برای شروع کندتر خواهد بود، زیرا ابتدا سایر استراتژی های DNS/TLS باید از کار بیفتند/تایم پایان دهند.

رشته های بازگشتی باید:

  • یک رشته پیکربندی StreamDialer معتبر همانطور که در configurl تعریف شده است.
  • یک شیء پیکربندی معتبر سایفون به عنوان فرزند یک فیلد psiphon .

مثال سرور Shadowsocks

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

مثال سرور SOCKS5

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

نمونه پیکربندی سایفون

برای استفاده از شبکه سایفون به موارد زیر نیاز دارید:

  1. با تیم Psiphon تماس بگیرید تا پیکربندی را به دست آورید که به شما امکان دسترسی به شبکه آنها را می دهد. این ممکن است نیاز به قرارداد داشته باشد.
  2. پیکربندی سایفون دریافتی را به بخش fallback پیکربندی Smart Dialer خود اضافه کنید. از آنجایی که JSON با YAML سازگار است، می‌توانید پیکربندی سایفون خود را مستقیماً در بخش fallback مانند زیر کپی و جای‌گذاری کنید:
fallback:
  - psiphon: {
      "PropagationChannelId": "FFFFFFFFFFFFFFFF",
      "SponsorId": "FFFFFFFFFFFFFFFF",
      "DisableLocalSocksProxy" : true,
      "DisableLocalHTTPProxy" : true,
      ...
    }

نحوه استفاده از شماره گیر هوشمند

برای استفاده از Smart Dialer، یک شی 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.

این یک مثال اساسی است و ممکن است لازم باشد برای مورد استفاده خاص شما تطبیق داده شود.