This repository has been archived by the owner on Mar 17, 2024. It is now read-only.
命令行模式、url链接 功能的设计 #163
e1732a364fed
started this conversation in
Ideas
Replies: 1 comment
-
实现方面,代表proxy特性的接口是proxy.ServerCreator 以及 ClientCreator,过去的方法是,单独给出一个 NewClientFromURL 方法。 新的办法是,一种 这是一定程度的解耦合,会少许降低效率,不过优点更多。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
命令行模式、url链接以及第三方配置 。
写此文,是在 22年10月26日。目的,是分析当前url分享链接的现状,规范vs标准url链接,以及人性化地 设计 vs中关于 url 的相关功能。
vs中url的现状
命令行模式实际上是vs的前辈v2simple 以及 vs设计之初 的重要理念,就是使用非常简单的配置来拉近工具与用户的距离。
不过随着vs功能不断地增强,逐渐转向了标准模式,设计者一直无暇顾及命令行模式。
还有就是,命令行模式使用的url属于vs自己定义的“通用”url,而不是 每个协议自己定义的url,虽然相似,但是却无法分享到其他客户端,也是一个问题。
为了便于推广,上策是快速兼容各个协议所定义的url格式,这样可让新手快速配置好客户端。然后进阶阶段则可以自行学习vs的标准url格式。
另外,url更容易被转换成二维码,分享给客户端更方便。
设计
-nu (native url format)
vs添加一个 -nu 参数,如果不指出,则默认 程序 生成/使用 的url格式是 vs的 通用格式 ;如果 给出了 -nu,则生成/使用的是 协议定义的 url格式。
-gcu (generate client url)
verysimple -gcu xxxx.toml
, 这个命令可以将一个 toml文件的所有listen 逐条 转化成 对应的客户端的 dial 的 url各种“官方” url格式的现状
首先要明确,目前市面上所有其他种类的 url分享链接,都是用在客户端上的。而 vs中所定义的url链接,既可以用于客户端,也可以用于服务端配置。
然后,要明确,url官方标准,分为 “协议官方” 与 “app官方” 两大类。彼此不互通。
vmess/vless 协议官方url
vmess的官方url分享链接的现状是比较落后而且复杂的。
在v2fly社区,只是停留在草案阶段,见 v2ray/discussion#720 ,而且不美观
也有人问过大佬 关于 “通用url格式”,即类似vs的url格式,但是被大佬否决
v2fly/v2ray-core#774
而在xray社区,定义比较好,同时包括vless和vmess,在 XTLS/Xray-core#716
所以本作认定 xray定义的 url格式为 vmess/vless 的官方格式,而且该格式不仅限于v2ray协议族,还可以定义trojan。不过因为在vmess,v2rayN的格式更流行,所以本作只在vless中应用此格式。
然而不可否认的是,xray所定义的格式依然 不如vs的标准模式科学。比如 “type”是什么?含义很不清晰,而且 "http" 代表的是 "http2", 很怪。
举例:
trojan
trojan (即trojan-gfw,原始trojan)
https://github.com/trojan-gfw/trojan-url
举例:
trojan://[email protected]:443
trojan-go
https://p4gefau1t.github.io/trojan-go/developer/url/
举例:
trojan-go://[email protected]/?sni=microsoft.com&type=ws&host=youtube.com&path=%2Fgo&encryption=ss%3Baes-256-gcm%3Afuckgfw
ss (shadowsocks)
https://github.com/shadowsocks/shadowsocks-org/wiki/SIP002-URI-Scheme
举例:
app官方url以及其他配置格式
V2RayN 格式
也是v2rayNG 的格式,毕竟设计者都是 2dust
https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2)
即 vmess://Base64编码的json格式服务器数据, 所以还是要基于一种定义好的json格式。显然无法直接用手写出来,不便于理解。
不过这种分享格式较为通用,因为v2rayN是流行的windows客户端,v2rayNG是流行的安卓客户端。所以该格式可以认为是vmess的约定俗成的官方url格式
ShadowRocket 格式
ShadowRocket 应该是可以读取V2rayN的 格式,但是它再分享出的二维码 的实际内容却比较怪,它是把前半部分userinfo的部分用base64转换了,然后其他部分是明文的url的query,内容也不太一样,比如标签叫 remarks 等等。
Quantumult 格式
其实这个不是url,但是作为参考放在这里。
参考 https://github.com/crossutility/Quantumult-X/blob/master/sample.conf
举例:
Clash配置格式
参考
https://github.com/Dreamacro/clash/wiki/Configuration
clash使用yaml作为配置格式
vs标准url格式 ( verysimple Standard URL Format )
正式的vs标准url格式的定义在 url.md.
Beta Was this translation helpful? Give feedback.
All reactions