कनेक्शन प्रीफ़िक्स के तौर पर इस्तेमाल होने वाले यूआरएल

Outline Client के 1.9.0 वर्शन के बाद से, ऐक्सेस कुंजियों में "प्रीफ़िक्स" विकल्प का इस्तेमाल किया जा सकता है. "prefix" बाइट की एक सूची है. इसका इस्तेमाल Shadowsocks कनेक्शन के salt के पहले बाइट के तौर पर किया जाता है. इससे कनेक्शन, नेटवर्क में इस्तेमाल किए जा सकने वाले प्रोटोकॉल की तरह दिखता है. साथ ही, यह उन फ़ायरवॉल को भी गच्चा दे सकता है जो ऐसे प्रोटोकॉल को अस्वीकार करते हैं जिन्हें वे पहचान नहीं पाते.

मुझे इस सुविधा का इस्तेमाल कब करना चाहिए?

अगर आपको लगता है कि Outline के उपयोगकर्ताओं को अब भी ब्लॉक किया जा रहा है, तो कुछ अलग-अलग प्रीफ़िक्स इस्तेमाल करके देखें.

निर्देश

उपसर्ग 16 बाइट से ज़्यादा लंबा नहीं होना चाहिए. लंबे प्रीफ़िक्स की वजह से, साल्ट में टकराव हो सकता है. इससे एन्क्रिप्शन की सुरक्षा कमज़ोर हो सकती है और कनेक्शन का पता चल सकता है. ब्लॉक की गई वेबसाइट को ऐक्सेस करने के लिए, सबसे छोटे प्रीफ़िक्स का इस्तेमाल करें.

आपने जिस पोर्ट का इस्तेमाल किया है वह उस प्रोटोकॉल से मेल खाना चाहिए जिसका इस्तेमाल आपके प्रीफ़िक्स में किया गया है. IANA, ट्रांसपोर्ट प्रोटोकॉल पोर्ट नंबर रजिस्ट्री को बनाए रखता है. यह प्रोटोकॉल और पोर्ट नंबर को मैप करती है.

असरदार टीसीपी प्रीफ़िक्स के कुछ उदाहरण यहां दिए गए हैं. ये सामान्य प्रोटोकॉल की तरह दिखते हैं:

सुझाया गया पोर्ट YAML-कोड में बदला गया कोड में बदला गया यूआरएल
एचटीटीपी अनुरोध 80 (http) "POST " POST%20
एचटीटीपी रिस्पॉन्स 80 (http) "HTTP/1.1 " HTTP%2F1.1%20
डीएनएस-ओवर-टीसीपी अनुरोध 53 (dns) "\u0005\u00DC\u005F\u00E0\u0001\u0020" %05%C3%9C_%C3%A0%01%20
TLS ClientHello 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0016\u0003\u0001\u0000\u00a8\u0001\u0001" %16%03%01%00%C2%A8%01%01
TLS ऐप्लिकेशन डेटा 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0013\u0003\u0003\u003F" %13%03%03%3F
TLS ServerHello 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) "\u0016\u0003\u0003\u0040\u0000\u0002" %16%03%03%40%00%02
एसएसएच 22 (ssh), 830 (netconf-ssh), 4334 (netconf-ch-ssh), 5162 (snmpssh-trap) "SSH-2.0\r\n" SSH-2.0%0D%0A

असरदार यूडीपी प्रीफ़िक्स के कुछ उदाहरण, जो सामान्य प्रोटोकॉल की तरह दिखते हैं:

सुझाया गया पोर्ट YAML-कोड में बदला गया
डीएनएस अनुरोध 53 (dns) "\u006b\u007b\u0001\u0020" (ध्यान दें: पहले दो बाइट को रैंडमाइज़ करें)
डीएनएस रिस्पॉन्स 53 (dns) "\u006b\u007b\u0081\u00a0\u0000\u0001" (ध्यान दें: पहले दो बाइट को रैंडमाइज़ करें)
QUIC क्लाइंट की शुरुआती कुकी 443 (https) "\u00cd\u0000\u0000\u0000\u0001"

डाइनैमिक ऐक्सेस कुंजियां

डाइनैमिक ऐक्सेस कुंजियों (ssconf://) के साथ प्रीफ़िक्स सुविधा का इस्तेमाल करने के लिए, YAML ऑब्जेक्ट में "prefix" कुंजी जोड़ें. साथ ही, YAML-encoded वैल्यू जोड़ें. यह वैल्यू, उस प्रीफ़िक्स को दिखाती है जिसका आपको इस्तेमाल करना है_ (ऊपर दी गई टेबल में उदाहरण देखें)_. U+0 से U+FF रेंज में, प्रिंट न किए जा सकने वाले यूनिकोड कोडपॉइंट को दिखाने के लिए, एस्केप कोड (जैसे कि \u00FF) का इस्तेमाल किया जा सकता है. उदाहरण के लिए:

transport:
  $type: tcpudp
  tcp:
    <<: &shared
      $type: shadowsocks
      endpoint: 147.182.248.224:20478
      secret: cqXYJ2BtMyNHneQHjpIXyg
      cipher: chacha20-ietf-poly1305
    prefix: "\u0013\u0003\u0003\u003F"
  udp:
    <<: *shared
    prefix: "\u006b\u007b\u0001\u0020"

स्टैटिक ऐक्सेस कुंजियां

स्टैटिक ऐक्सेस कुंजियों (ss://) के साथ प्रीफ़िक्स इस्तेमाल करने के लिए, आपको कुंजी को शेयर करने से पहले उसमें बदलाव करना होगा. अगर आपके पास Outline Manager से जनरेट किया गया स्टैटिक ऐक्सेस कोड है, तो अपने प्रीफ़िक्स का यूआरएल-कोड में बदला गया वर्शन लें. इसके उदाहरण ऊपर दी गई टेबल में देखें. इसके बाद, इसे ऐक्सेस कोड के आखिर में इस तरह जोड़ें:

ss://Z34nthataITHiTNIHTohithITHbVBqQ1o3bkk@127.0.0.1:33142/?outline=1&prefix=<your url-encoded prefix goes here>

यूआरएल फ़ॉर्मैट में मौजूद प्रीफ़िक्स, सिर्फ़ टीसीपी कनेक्शन के लिए काम करते हैं.

अनुभवी उपयोगकर्ता, अपने ब्राउज़र के encodeURIComponent() फ़ंक्शन का इस्तेमाल करके, JSON-encoded प्रीफ़िक्स को URL-encoded प्रीफ़िक्स में बदल सकते हैं. इसके लिए, वेब इंस्पेक्टर कंसोल खोलें (*Chrome पर डेवलपर > Javascript Web Console *), और यह टाइप करें:

encodeURIComponent("<your json-encoded prefix goes here>")

enter दबाएं. जनरेट की गई वैल्यू, *यूआरएल-कोड में बदले गए *वर्शन में होगी. उदाहरण के लिए:

encodeURIComponent("\u0016\u0003\u0001\u0000\u00a8\u0001\u0001")
'%16%03%01%00%C2%A8%01%01'