เซิร์ฟเวอร์ VMess ถูกอธิบายด้วย UUID การเข้ารหัส (cipher) ที่เข้ารหัสทราฟฟิก และ การส่งผ่าน (transport) ที่ใช้นำการเชื่อมต่อ เช่น WebSocket หรือ gRPC ทั้งแบบมีและไม่มี TLS Potatso เชื่อมต่อกับเซิร์ฟเวอร์เมื่อรองรับการเข้ารหัส การส่งผ่าน และการตั้งค่า TLS ของเซิร์ฟเวอร์ ใช้ตารางด้านล่างเพื่อตรวจสอบการตั้งค่าของเซิร์ฟเวอร์ ตามที่ผู้ให้บริการแจ้งหรือในลิงก์ vmess:// ของเซิร์ฟเวอร์
คุณเพิ่มเซิร์ฟเวอร์ VMess ได้ด้วยตนเอง ด้วยลิงก์ vmess:// หรือโดยการนำเข้า:
- การสมัครรับ Clash หรือ Mihomo
- การกำหนดค่า Xray หรือ V2Ray
- การกำหนดค่า Surge
Potatso ยังไม่นำเข้าเซิร์ฟเวอร์ VMess จากการกำหนดค่า sing-box ให้ใช้ลิงก์ vmess:// ของเซิร์ฟเวอร์แทน
การเข้ารหัส (Cipher)
| การเข้ารหัส | รองรับ |
|---|---|
auto |
✅ Potatso เลือก aes-128-gcm ซึ่งอุปกรณ์ Apple ทุกเครื่องรันด้วยฮาร์ดแวร์ |
aes-128-gcm |
✅ |
chacha20-poly1305 |
✅ |
none |
✅ |
zero |
❌ |
aes-128-cfb (รุ่นเก่า) |
❌ |
none และ zero ส่งทราฟฟิกของคุณโดยไม่เข้ารหัส ใช้ none เฉพาะกับ TLS ซึ่งจะเข้ารหัสการเชื่อมต่อแทน Potatso ไม่เชื่อมต่อด้วย zero ซึ่งยังตัดการป้องกันการแก้ไขข้อมูลออกด้วย: ให้เลือกการเข้ารหัสอื่นบนเซิร์ฟเวอร์ของคุณ
alterId
Potatso ใช้การยืนยันตัวตนของ VMess แบบปัจจุบันเสมอ ซึ่งเหมือนกับ alterId 0 เซิร์ฟเวอร์ที่ผู้ใช้ยังมี alterId มากกว่า 0 ก็ยอมรับเช่นกัน คุณจึงปล่อยเซิร์ฟเวอร์ไว้ตามเดิมได้ Potatso ไม่รองรับการยืนยันตัวตนแบบเก่าที่ใช้เฉพาะ alterId มากกว่า 0 ซึ่งเซิร์ฟเวอร์เลิกใช้ตั้งแต่ปี 2022
การส่งผ่าน
| การส่งผ่าน | net / type ของลิงก์ |
รองรับ | ทดสอบกับ |
|---|---|---|---|
| ไม่มี (TCP ธรรมดา) | tcp หรือไม่ระบุ |
✅ ทั้งแบบมีและไม่มี TLS | Xray, sing-box, V2Ray |
| WebSocket | ws |
✅ ทั้งแบบมีและไม่มี TLS และ early data | Xray, sing-box, V2Ray |
| gRPC | grpc |
✅ ทั้งแบบมีและไม่มี TLS | Xray, sing-box, V2Ray |
| HTTP/2 | h2 หรือ http |
✅ เมื่อมี TLS | sing-box, V2Ray |
| HTTP Upgrade | httpupgrade |
✅ ทั้งแบบมีและไม่มี TLS | Xray, sing-box |
| TCP ที่มีส่วนหัว HTTP | tcp กับ type=http |
❌ | |
| XHTTP | xhttp |
❌ | |
| mKCP, QUIC | kcp, quic |
❌ |
ทุกการส่งผ่านที่รองรับใช้ได้กับ UDP Potatso ไม่นำเข้าเซิร์ฟเวอร์ที่ใช้การส่งผ่านที่ไม่รองรับ
early data ของ WebSocket ส่งไบต์แรกของการเชื่อมต่อไปพร้อมกับ WebSocket handshake ช่วยประหยัดหนึ่งรอบ ตั้งด้วย ?ed=2048 ที่ท้ายเส้นทางของลิงก์ หรือ max-early-data ในการสมัครรับ Clash
Xray ไม่มี HTTP/2 อีกต่อไป: เซิร์ฟเวอร์ Xray ที่เคยใช้ HTTP/2 ตอนนี้ใช้ XHTTP ซึ่ง Potatso ยังไม่รองรับ
TLS
| การตั้งค่า | คีย์ของ Clash | ฟิลด์ของลิงก์ | รองรับ |
|---|---|---|---|
| ชื่อเซิร์ฟเวอร์ (SNI) | servername |
sni |
✅ หากไม่ระบุ Potatso ใช้ที่อยู่ของเซิร์ฟเวอร์ |
| ALPN | alpn |
alpn |
✅ หากไม่ระบุ Potatso ส่ง http/1.1 สำหรับ WebSocket และ h2 สำหรับ gRPC และ HTTP/2 |
| ข้ามการตรวจสอบใบรับรอง | skip-cert-verify |
allowInsecure |
✅ |
| ลายนิ้วมือเบราว์เซอร์ | client-fingerprint |
fp |
✅ chrome, firefox, safari, ios, android, edge และ random ชื่ออื่นจะเชื่อมต่อด้วย handshake เริ่มต้น |
| การปักหมุดใบรับรอง | fingerprint |
pcs |
❌ |
| REALITY | reality-opts |
security=reality |
❌ |
| Encrypted Client Hello (ECH) | ech-opts |
ech |
❌ |
| ใบรับรอง CA ที่กำหนดเอง | ❌ |
การปิดการตรวจสอบใบรับรองทำให้ใครก็ตามที่อยู่ระหว่างคุณกับเซิร์ฟเวอร์อ่านทราฟฟิกของคุณได้ Potatso ไม่เชื่อมต่อกับเซิร์ฟเวอร์ VMess ที่ต้องใช้ REALITY, ECH หรือการปักหมุดใบรับรอง เพราะการเชื่อมต่อโดยไม่มีสิ่งเหล่านั้นจะไม่ให้การป้องกันที่เซิร์ฟเวอร์ต้องการ ใช้ VLESS หรือ Trojan สำหรับ REALITY
ลายนิ้วมือเบราว์เซอร์ทำให้ TLS handshake ของการเชื่อมต่อดูเหมือนของเบราว์เซอร์นั้น ไม่เปลี่ยนสิ่งที่เซิร์ฟเวอร์ต้องรองรับ
UDP
UDP ปิดไว้โดยค่าเริ่มต้นสำหรับเซิร์ฟเวอร์ VMess เปิด UDP Relay ในการตั้งค่าของเซิร์ฟเวอร์ หรือตั้ง udp: true ในการสมัครรับ Clash
Potatso ส่งแต่ละโฟลว์ UDP ผ่านการเชื่อมต่อ VMess ของตัวเอง ซึ่งเซิร์ฟเวอร์ VMess ทุกตัวรับได้ ไม่รองรับการเข้ารหัส XUDP และ PacketAddr (packetEncoding ในลิงก์, packet-encoding หรือ xudp ในการสมัครรับ Clash) ซึ่งนำหลายโฟลว์ UDP ผ่านการเชื่อมต่อเดียว: เซิร์ฟเวอร์ที่ตั้งค่าไว้เช่นนั้นยังใช้งานได้ และ Potatso จะแจ้งตอนนำเข้าว่าใช้ UDP แบบของตัวเองแทน แอปที่ต้องใช้ NAT แบบ full-cone เช่นเกมบางเกม อาจใช้งานไม่ได้
เมื่อเปิดการมัลติเพล็กซ์ UDP จะผ่านการเชื่อมต่อที่ใช้ร่วมกันแทน
การมัลติเพล็กซ์
Potatso รันหลายการเชื่อมต่อผ่านการเชื่อมต่อ VMess เดียวได้ ซึ่งตั้งด้วย smux ในการสมัครรับ Clash:
| โปรโตคอล | protocol ของ smux |
เซิร์ฟเวอร์ |
|---|---|---|
| Mux.Cool | muxcool |
Xray, V2Ray และ sing-box โดยไม่ต้องตั้งค่าฝั่งเซิร์ฟเวอร์ |
| sing-mux | h2mux, smux, yamux |
sing-box ที่เปิดการมัลติเพล็กซ์ไว้ |
ใช้ได้ทั้ง TCP และ UDP Mux.Cool ปิดทั้งสองทิศทางของการเชื่อมต่อพร้อมกัน ดังนั้นแอปที่หยุดส่งแล้วรอคำตอบควรใช้เซิร์ฟเวอร์ที่ไม่มีการมัลติเพล็กซ์
ตัวเลือกของคำขอ
ไคลเอนต์ VMess เลือกตัวเลือกบางอย่างสำหรับแต่ละการเชื่อมต่อ และเซิร์ฟเวอร์ทุกตัวยอมรับทุกตัวเลือกเหล่านั้น Potatso ส่งทราฟฟิกเป็นชังก์ที่เข้ารหัสเสมอและทำเครื่องหมายจุดสิ้นสุดของการอัปโหลดแต่ละครั้ง และไม่ตั้งตัวเลือกอื่น:
| ตัวเลือก | คีย์ของ Clash | Potatso |
|---|---|---|
| Chunk stream | เปิดเสมอ | |
| Chunk masking | ปิด | |
| Global padding | global-padding |
ปิด Potatso เตือนเมื่อคุณนำเข้าเซิร์ฟเวอร์ที่ตั้งค่านี้ |
| Authenticated length | authenticated-length |
ปิด Potatso เตือนเมื่อคุณนำเข้าเซิร์ฟเวอร์ที่ตั้งค่านี้ |
Chunk masking และ global padding ซ่อนขนาดของแต่ละชังก์จากผู้ที่คอยสังเกต หากไม่มีสิ่งเหล่านี้ ทราฟฟิกของคุณก็ยังอ่านไม่ได้ แต่จดจำรูปแบบได้ง่ายขึ้น
การอัปโหลดขนาดใหญ่
การเชื่อมต่อ VMess หนึ่งครั้งอัปโหลดได้ประมาณ 1 GiB VMess นับลำดับชังก์ที่เข้ารหัสด้วยตัวนับที่หมดลงหลังจากนั้น และการทำต่อจะทำให้การเข้ารหัสอ่อนลง Potatso จึงปิดการเชื่อมต่อแทน การดาวน์โหลดไม่มีขีดจำกัด สำหรับการอัปโหลดที่ใหญ่กว่า 1 GiB ในหนึ่งการเชื่อมต่อ ให้ใช้เซิร์ฟเวอร์ VLESS หรือ Trojan
การรองรับฟีเจอร์
| ฟีเจอร์ | รองรับ |
|---|---|
การยืนยันตัวตนแบบ AEAD (alterId 0) |
✅ |
การยืนยันตัวตน MD5 รุ่นเก่า (alterId มากกว่า 0) |
❌ เซิร์ฟเวอร์ที่มี alterId มากกว่า 0 ยอมรับการยืนยันตัวตนแบบ AEAD |
การเข้ารหัส aes-128-gcm, chacha20-poly1305, none, auto |
✅ |
การเข้ารหัส zero และ aes-128-cfb รุ่นเก่า |
❌ |
| Chunk stream, ตัวบอกจุดสิ้นสุดการอัปโหลด | ✅ |
| Chunk masking, global padding, authenticated length | ❌ เซิร์ฟเวอร์ยอมรับการเชื่อมต่อที่ไม่มีสิ่งเหล่านี้ |
| UDP | ✅ หนึ่งการเชื่อมต่อต่อโฟลว์ |
| การอัปโหลดเกินประมาณ 1 GiB ในหนึ่งการเชื่อมต่อ | ❌ ดูการอัปโหลดขนาดใหญ่ |
| XUDP, PacketAddr | ❌ |
| Mux.Cool | ✅ TCP และ UDP |
| sing-mux (h2mux, smux, yamux) | ✅ TCP และ UDP |
| การส่งผ่าน | ดูการส่งผ่าน |
| TLS | ดู TLS |
| ลิงก์แชร์ของ v2rayN (เวอร์ชัน 2) | ✅ |
| ลิงก์แชร์ของ Xray | ✅ |
| ลิงก์แชร์ของ Shadowrocket | นำเข้าเท่านั้น |
ลิงก์ vmess://
ลิงก์ vmess:// เก็บเซิร์ฟเวอร์ทั้งตัวไว้ในบรรทัดเดียว Potatso นำเข้าสามรูปแบบและแชร์สองรูปแบบแรก
รูปแบบ v2rayN ซึ่งพบบ่อยที่สุด เป็นอ็อบเจ็กต์ JSON ที่เข้ารหัสด้วย Base64:
vmess://base64({"v":"2","ps":"name","add":"host","port":"443","id":"uuid",…})| ฟิลด์ | คำอธิบาย |
|---|---|
v |
เวอร์ชันของรูปแบบ 2 |
ps |
ไม่บังคับ ชื่อของเซิร์ฟเวอร์ใน Potatso |
add |
ที่อยู่เซิร์ฟเวอร์ |
port |
พอร์ตเซิร์ฟเวอร์ |
id |
UUID |
aid |
alterId ดู alterId |
scy |
การเข้ารหัส หากไม่ระบุคือ auto |
net |
การส่งผ่าน: tcp, ws, grpc, h2 หรือ httpupgrade |
type |
none หรือ http สำหรับส่วนหัว HTTP ของ TCP ซึ่ง Potatso ไม่รองรับ |
host |
ส่วนหัว Host สำหรับ WebSocket, HTTP/2 และ HTTP Upgrade |
path |
เส้นทางสำหรับ WebSocket, HTTP/2 และ HTTP Upgrade หรือชื่อบริการสำหรับ gRPC เส้นทาง WebSocket ลงท้ายด้วย ?ed=2048 เพื่อใช้ early data ได้ |
tls |
tls เพื่อใช้ TLS หรือเว้นว่าง |
sni, alpn, fp |
ชื่อเซิร์ฟเวอร์ รายการ ALPN และลายนิ้วมือเบราว์เซอร์ของ TLS |
รูปแบบ Xray เป็น URL โดยมีการเข้ารหัสใน encryption และการตั้งค่าการส่งผ่านและ TLS เป็นพารามิเตอร์ของ query:
vmess://uuid@host:port?type=ws&security=tls&sni=…&host=…&path=…&encryption=auto#name| พารามิเตอร์ | คำอธิบาย |
|---|---|
type |
การส่งผ่าน |
encryption |
การเข้ารหัส หากไม่ระบุคือ auto |
security |
tls หรือ none |
sni, alpn, fp |
ชื่อเซิร์ฟเวอร์ รายการ ALPN และลายนิ้วมือเบราว์เซอร์ของ TLS |
host, path |
ส่วนหัว Host และเส้นทาง เหมือนในรูปแบบ v2rayN |
serviceName |
ชื่อบริการ gRPC |
ed |
early data ของ WebSocket เป็นไบต์ |
Potatso ยังนำเข้ารูปแบบของ Shadowrocket คือ vmess://base64(cipher:uuid@host:port)?remarks=…&obfs=websocket&…
ตัวอย่าง
แต่ละตัวอย่างแสดงลิงก์ที่จะนำเข้า UUID คือ b831381d-6324-4d53-ad4f-8cda48b30811
WebSocket กับ TLS และ early data ผ่าน cdn.example.com พร้อมลายนิ้วมือ Chrome:
vmess://eyJ2IjoiMiIsInBzIjoiV1MgVExTIiwiYWRkIjoidm1lc3MuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiJiODMxMzgxZC02MzI0LTRkNTMtYWQ0Zi04Y2RhNDhiMzA4MTEiLCJhaWQiOiIwIiwic2N5IjoiYXV0byIsIm5ldCI6IndzIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiY2RuLmV4YW1wbGUuY29tIiwicGF0aCI6Ii9yYXk/ZWQ9MjA0OCIsInRscyI6InRscyIsInNuaSI6ImNkbi5leGFtcGxlLmNvbSIsImFscG4iOiJodHRwLzEuMSIsImZwIjoiY2hyb21lIn0=gRPC กับ TLS และ aes-128-gcm ชื่อบริการ vmess-grpc:
vmess://eyJ2IjoiMiIsInBzIjoiZ1JQQyIsImFkZCI6InZtZXNzLmV4YW1wbGUuY29tIiwicG9ydCI6IjQ0MyIsImlkIjoiYjgzMTM4MWQtNjMyNC00ZDUzLWFkNGYtOGNkYTQ4YjMwODExIiwiYWlkIjoiMCIsInNjeSI6ImFlcy0xMjgtZ2NtIiwibmV0IjoiZ3JwYyIsInBhdGgiOiJ2bWVzcy1ncnBjIiwidGxzIjoidGxzIiwic25pIjoidm1lc3MuZXhhbXBsZS5jb20ifQ==TCP ธรรมดากับ chacha20-poly1305 ในรูปแบบ Xray:
vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:8080?type=tcp&encryption=chacha20-poly1305#Plain%20TCPHTTP Upgrade กับ TLS ในรูปแบบ Xray:
vmess://b831381d-6324-4d53-ad4f-8cda48b30811@vmess.example.com:443?type=httpupgrade&security=tls&sni=cdn.example.com&host=cdn.example.com&path=%2Fupgrade&encryption=auto#HTTP%20Upgradeในการสมัครรับ Clash
proxies:
- name: VMess WS
type: vmess
server: vmess.example.com
port: 443
uuid: b831381d-6324-4d53-ad4f-8cda48b30811
alterId: 0
cipher: auto
udp: true
tls: true
servername: cdn.example.com
network: ws
ws-opts:
path: /ray
headers:
Host: cdn.example.com
max-early-data: 2048
early-data-header-name: Sec-WebSocket-Protocol