شمارهگیر هوشمند استراتژیای را جستجو میکند که 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]
نمونه پیکربندی سایفون
برای استفاده از شبکه سایفون به موارد زیر نیاز دارید:
- با تیم Psiphon تماس بگیرید تا پیکربندی را به دست آورید که به شما امکان دسترسی به شبکه آنها را می دهد. این ممکن است نیاز به قرارداد داشته باشد.
- پیکربندی سایفون دریافتی را به بخش
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.
این یک مثال اساسی است و ممکن است لازم باشد برای مورد استفاده خاص شما تطبیق داده شود.