การซ่อนคำนำหน้าการเชื่อมต่อ

ตั้งแต่ไคลเอ็นต์ Outline เวอร์ชัน 1.9.0 เป็นต้นไป คีย์การเข้าถึงจะรองรับตัวเลือก "คำนำหน้า" ซึ่ง "คำนำหน้า" คือรายการไบต์ที่ใช้เป็นไบต์แรกของ Salt ในการเชื่อมต่อ TCP ของ Shadowsocks โดยจะทำให้การเชื่อมต่อดูเหมือนเป็นโปรโตคอลที่ได้รับอนุญาตในเครือข่าย เป็นการหลีกเลี่ยงไฟร์วอลล์ที่ปฏิเสธโปรโตคอลที่ไม่รู้จัก

ทำไมจึงควรลองใช้สิ่งนี้

หากคุณสงสัยว่าผู้ใช้การใช้งาน Outline ของคุณยังคงถูกบล็อกอยู่ คุณอาจลองใช้คำนำหน้าที่แตกต่างกัน 2-3 คำ

วิธีการ

คำนำหน้าควรมีความยาวไม่เกิน 16 ไบต์ เนื่องจากการใช้คำนำหน้าที่ยาวเกินไปอาจทำให้เกิดการชนกันของ Salt ซึ่งอาจทำให้ความปลอดภัยของการเข้ารหัสลดลงและอาจทำให้การเชื่อมต่อถูกตรวจพบได้ โปรดใช้คำนำหน้าที่สั้นที่สุดเท่าที่จะทำได้เพื่อหลีกเลี่ยงการบล็อกที่คุณกำลังเผชิญอยู่

พอร์ตที่คุณใช้ควรตรงกับโปรโตคอลที่คำนำหน้าแอบอ้างอยู่ โดย IANA จะใช้รีจิสทรีหมายเลขพอร์ตโปรโตคอลการรับส่งที่จับคู่โปรโตคอลและหมายเลขพอร์ต

ตัวอย่างคำนำหน้าที่ดูคล้ายคลึงกับโปรโตคอลทั่วไปมีดังนี้

พอร์ตที่แนะนำ มีการเข้ารหัส JSON มีการเข้ารหัส URL
คำขอ HTTP 80 (http) "POST " POST%20
การตอบกลับ HTTP 80 (http) "HTTP/1.1 " HTTP%2F1.1%20
คำขอ DNS-over-TCP 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
SSH 22 (ssh), 830 (netconf-ssh), 4334 (netconf-ch-ssh), 5162 (snmpssh-trap) "SSH-2.0\r\n" SSH-2.0%0D%0A

คีย์การเข้าถึงแบบไดนามิก

หากต้องการใช้ฟีเจอร์คำนำหน้าที่มีคีย์การเข้าถึงแบบไดนามิก (ssconf://) ให้เพิ่มคีย์ "คำนำหน้า" ในออบเจ็กต์ JSON พร้อมกับค่าที่เข้ารหัส JSON ซึ่งนำเสนอคำนำหน้าที่คุณต้องการ (ดูตัวอย่างในตารางด้านบน) คุณสามารถใช้โค้ดอักขระหลีก (เช่น \u00FF) เพื่อนำเสนอจุดโค้ด Unicode ที่พิมพ์ไม่ได้ในช่วง U+0 ถึง U+FF เช่น

{
    "server": "example.com",
    "server_port": 8388,
    "password": "example",
    "method": "chacha20-ietf-poly1305",
    "prefix": "\u0005\u00DC\u005F\u00E0\u0001\u0020"
}

คีย์การเข้าถึงแบบคงที่

หากต้องการใช้คำนำหน้าที่มีคีย์การเข้าถึงแบบคงที่ (ss://) คุณจะต้องแก้ไขคีย์ที่มีอยู่ก่อนเผยแพร่ หากคุณมีคีย์การเข้าถึงแบบคงที่ที่สร้างโดย Outline Manager ให้คัดลอกคำนำหน้าแบบเข้ารหัส URL (ดูตัวอย่างในตารางด้านบน) แล้วเพิ่มลงในส่วนท้ายของคีย์การเข้าถึง ดังนี้

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

สำหรับผู้ใช้ขั้นสูง คุณสามารถใช้ฟังก์ชัน encodeURIComponent() ของเบราว์เซอร์เพื่อแปลงคำนำหน้าแบบเข้ารหัส JSON เป็นคำนำหน้าแบบเข้ารหัส URL ซึ่งทำได้โดยเปิดคอนโซลการตรวจสอบเว็บ (*นักพัฒนาซอฟต์แวร์ > คอนโซลเว็บ JavaScript *บน Chrome) แล้วพิมพ์ตามด้านล่างนี้

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

กด Enter ค่าที่สร้างขึ้นจะอยู่ในเวอร์ชัน *แบบเข้ารหัส URL* เช่น

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