Files
v2ray_simple/docs/url.md
e1732a364fed e788186d0a 实现按不同url格式进行初始化的特性
添加doc/url.md 解释文档
本commit修改了所有proxy的creator,以支持新的接口

	URLToDialConf(url *url.URL, iv *DialConf, format int) (*DialConf, error)

	URLToListenConf(url *url.URL, iv *ListenConf, format int) (*ListenConf, error)

这两者替代了原来的 NewClientFromUrl 以及 NewServerFromUrl

目前只是支持了vs标准格式;各个协议的原生格式等以后慢慢加。

未经过测试.
2022-10-27 11:43:44 +08:00

2.7 KiB
Raw Blame History

vs的通用url格式 ( verysimple Standard URL Format )

虽然verysimple通用url格式从一开始就存在但是却没有文档详细描述阅读proxy/creator_url.go 可以了解毕竟golang的理念是代码就是文档。。那么在这里就作为文档进行介绍。

vs的通用url格式并不遵循现存市面上的其他格式而是针对vs的架构逻辑所设计的新格式。如果你是一个vs老手则使用vs的通用url格式你会感觉得心应手。

注意要想读懂本文档需要了解url的基础知识。

https://datatracker.ietf.org/doc/html/rfc1738

https://en.wikipedia.org/wiki/URL

https://pkg.go.dev/net/url#URL

URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]

authority = [userinfo "@"] host [":" port]

举例: vlesss://a684455c-b14f-11ea-bf0d-42010aaa0003@127.0.0.1:4433?insecure=true&v=0&utls=true#myvless1

基础部分

scheme

即冒号前的部分表示proxy所使用的具体协议如 vmess, vless, ss, http, socks5, trojan

如果后加上了s就表示使用tls层比如https或者 vlesss。注意vless和trojan都必须要加s才能在公网中不被发现否则就是裸奔。任何proxy都可以加s。

userinfo

即用户信息,存储 该proxy中能 authenticate (鉴权)某个特定用户的 信息。

熟悉ssh的同学会看出差别ssh中userinfo 是不包含密码的也就是说ssh 需要 额外参数 或 步骤 来输入密码 或 等价信息 才能进行鉴权而我们这里直接将鉴权的信息也包含在userinfo中来。

在vless/vmess中 就是 uuid在socks5/http中 就是 “用户名+密码”在ss/trojan中就是 密码。

host:port

就是 主机ip和端口。主机ip也可以用 域名代替。

fragment

就是一个注释,标注 这个url 对于你来说的 特别含义。这个注释同样会被vs读取为tag用于分流。

最后就是query部分也是信息比较丰富的地方。

query

v=0, 控制该proxy协议的 版本。

fallback=:80 设置回落的地址。

network 设置 使用的传输层,如 network="udp", 如不给出则默认network为 tcp。还可以为 unix

fullcone=true设置 是否需要udp的fullcone功能。

security=aes-128-gcm 设置 vmess/ss等存在多种加密方式等proxy的 具体加密方式

adv=ws 设置使用的高级层,如不给出则没有高级层,如给出,可选 ws, grpc, quic

mux=true 是否使用内层smux

tls相关 proxy/tlsConfig.go)

insecure=true, 控制tls层是否需要严格要求 对方的真实性。

utls=true控制是否使用utls

cert=cert.pem&key=cert.key

用于设置证书名称。