स्मार्ट डायलर, टेस्ट डोमेन की दी गई सूची के लिए, डीएनएस और टीएलएस को अनब्लॉक करने वाली रणनीति खोजता है. इसमें एक कॉन्फ़िगरेशन होता है, जिसमें कई रणनीतियों के बारे में जानकारी होती है.
स्मार्ट डायलर के लिए 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
फ़ील्ड में, जांच के लिए डीएनएस रिज़ॉल्वर की सूची दी जाती है.- हर डीएनएस रिज़ॉल्वर, इनमें से किसी एक तरह का हो सकता है:
system
: सिस्टम रिज़ॉल्वर का इस्तेमाल करें. खाली ऑब्जेक्ट की मदद से बताएं.https
: एन्क्रिप्ट (सुरक्षित) किए गए डीएनएस-ओवर-एचटीटीपीएस (डीएनएसओएच) रिज़ॉल्वर का इस्तेमाल करें.tls
: एन्क्रिप्ट किए गए डीएनएस ओवर टीएलएस (DoT) रिज़ॉल्वर का इस्तेमाल करें.udp
: यूडीपी रिज़ॉल्वर का इस्तेमाल करें.tcp
: टीसीपी रिज़ॉल्वर का इस्तेमाल करें.
डीएनएस-ओवर-एचटीटीपीएस रिज़ॉल्वर (डीएचओ)
https:
name: dns.google
address: 8.8.8.8
name
: DoH सर्वर का डोमेन नेम.address
: DoH सर्वर का होस्ट:पोर्ट. डिफ़ॉल्ट रूप से,name
:443 पर सेट होता है.
डीएनएस-ओवर-टीएलएस रिज़ॉल्वर (DoT)
tls:
name: dns.google
address: 8.8.8.8
name
: DoT सर्वर का डोमेन नेम.address
: DoT सर्वर का होस्ट:पोर्ट. डिफ़ॉल्ट रूप से,name
:853 पर सेट होता है.
यूडीपी रिज़ॉल्वर
udp:
address: 8.8.8.8
address
: यूडीपी रिज़ॉल्वर का होस्ट:पोर्ट.
टीसीपी रिज़ॉल्वर
tcp:
address: 8.8.8.8
address
: टीसीपी रिज़ॉल्वर का होस्ट:पोर्ट.
TLS कॉन्फ़िगरेशन
tls
फ़ील्ड में, टेस्ट करने के लिए TLS ट्रांसपोर्ट की सूची दी जाती है.- हर टीएलएस ट्रांसपोर्ट एक स्ट्रिंग होती है, जो इस्तेमाल किए जाने वाले ट्रांसपोर्ट के बारे में बताती है.
- उदाहरण के लिए,
override:host=cloudflare.net|tlsfrag:1
एक ऐसे ट्रांसपोर्ट के बारे में बताता है जो Cloudflare और TLS फ़्रैगमेंटेशन के साथ डोमेन फ़्रोंटिंग का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, कॉन्फ़िगरेशन दस्तावेज़ देखें.
फ़ॉलबैक कॉन्फ़िगरेशन
अगर कोई भी प्रॉक्सी-लेस रणनीति कनेक्ट नहीं हो पाती है, तो फ़ॉलबैक कॉन्फ़िगरेशन का इस्तेमाल किया जाता है. उदाहरण के लिए, यह उपयोगकर्ता के कनेक्शन को आज़माने के लिए, बैकअप प्रॉक्सी सर्वर तय कर सकता है. फ़ॉलबैक का इस्तेमाल करने पर, कनेक्ट होने में ज़्यादा समय लगेगा. ऐसा इसलिए, क्योंकि पहले अन्य डीएनएस/TLS रणनीतियों को काम न करने या टाइम आउट होने का इंतज़ार करना होगा.
फ़ॉलबैक स्ट्रिंग इस तरह की होनी चाहिए:
configurl
में बताई गई मान्यStreamDialer
कॉन्फ़िगरेशन स्ट्रिंग.psiphon
फ़ील्ड के चाइल्ड के तौर पर, मान्य Psiphon कॉन्फ़िगरेशन ऑब्जेक्ट.
Shadowsocks सर्वर का उदाहरण
fallback:
- ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTprSzdEdHQ0MkJLOE9hRjBKYjdpWGFK@1.2.3.4:9999/?outline=1
SOCKS5 सर्वर का उदाहरण
fallback:
- socks5://[USERINFO]@[HOST]:[PORT]
Psiphon कॉन्फ़िगरेशन का उदाहरण
Psiphon नेटवर्क का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:
- Psiphon की टीम से संपर्क करके, ऐसा कॉन्फ़िगरेशन पाएं जिससे आपको उनके नेटवर्क का ऐक्सेस मिल सके. इसके लिए, कानूनी समझौते की ज़रूरत पड़ सकती है.
- 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.
यह एक बुनियादी उदाहरण है. इसे अपने इस्तेमाल के उदाहरण के हिसाब से बदलना पड़ सकता है.