-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
提议制定 VMess 分享链接标准 #720
Comments
鉴于 #711 正在设计 vmess-v2, 此处 vmess:// 亦可修改为 vmess1:// |
some information can be found at: v2ray/discussion#720
有待完善的内容:uuid和query部分的大小写(个人建议大小写敏感),URIComponent所使用的字符编码(目前个人选择utf-8) |
我认为 query 部分应全部按照小驼峰命名法, 另:都 0202 年了,强制 UTF-8 是合理的 |
URI设计的时候就不是用来分享vmess的,反过来我们设计vmess分享链接的时候为什么非要死套“URI标准”不可呢? 如果跳出“URI标准”就个思想束缚,那么一楼第2点所说的json问题就不存在了。然后便于观查这点就我个人而言,除非链接没法导入不然我是不会去看链接里面有什么鬼东西的。因为分享链接和二维码一样是给机器看的,不是给人看的。最后一个防篡改问题,粗略看了下这个issue提的标准也没解决这个问题吧,同时我不认为防篡改很重要。 接着就是FOV001二楼提的IPv6和正则问题也没解决。二楼所提的正则问题应该是说,在一堆乱七八槽的文本里面尽可能多的提取出合法分享链接,而不是用正则来切分分享链接中的各项。 比如在一些用bb code的论坛里面一个链接可能会是这样的: 比如有时wordpress会很“智能”的把半角标点替换成全角标点: 比如有些好心的分享者在分享链接前加上个序号: 或者放进表格里: 但是在这些稀奇古怪的场景之下,v2rayN的“土制”分享链接都可以很容易的被提取出来。 当然v2rayN的标准也不完美,我一直想吐槽订阅格式最后套的那层Base64很多余。vmess://...每项和config.json的对应关系有点乱。不过这个分享标准设计得比较早,v2ray也在不断添内容,所以可以理解。 {
"v": "3",
"proto": "vmess/vless/socks/http/...",
"add": "hostname/ipv6",
"port": "port",
"auth": ["uuid"] or ["username", "password"] or [],
"stream":["ws", "tls", "/websocket", "www.baidu.com"] or [],
} |
你在什么时候需要 "提取" 一个链接呢 |
上面已经说了使用场景了。bbcode就是各种讨论区,wordpress就是各种博客。这些其实就是多年以前v2ray萌芽期分享服务器的地方。这些也是很难完全封锁地方。 |
相关讨论请去 v2fly |
什么时候能出确定标准呢? |
这个在v2fly中有相关的讨论没?能不能贴个链接,我想接着看下文, 感谢! |
没下文了,这个讨论3个月之后出了个 vless分享链接标准 ,现在过了一坤年,我说的那些缺点开始慢慢出现了。 vmess现在用的是 v2rayN分享链接标准 为主,其他标准的分享链接几乎没影了(我说的是公共渠道可以找到的分享)。 还有个用得比较多的是直接分享clash的yml配置文件,不过这不属于分享链接讨论范围。 |
解析分享链接的话,我试了一下,遇到了一个问题,trojan的密码是放在前面的,它的密码中不允许出现 为了避免这个问题,倒是可以对这trojan密码、kcp seed、h2 key做url encode(kcp也没人用了吧),不过这就会导致人类可读性降低,而且也许还不止这三个地方可能会用到 其实我倒是我觉得base64方案简单粗暴,而且有它的优点:那就是我并不希望我复制分享链接的时候被剪贴板获取(用了kde connect,还有mac和iPhone的剪贴板都会同步的),虽然base64 decode一下就能得到原始字符串,不过一些获取剪贴板内容的(用于广告分析的)软件真的会这样做吗?我自己感觉这些软件应该会识别原文吧?(而原文是base64的话应该不会被识别到?)😂 我觉得二维码我们人类也看不见里面的信息,但它一样能分享节点,把分享链接看作是二维码就好了,又何必知道它里面是什么内容呢,想要知道是什么内容用程序看就好了。 不过人类可读可能对调试程序比较方便吧 |
|
1. 为什么提议指定官方标准?
现有的主流
vmess://
分享链接分为以下几种:以上分享链接协议仅仅适用于自家软件的导入/导出,普通用户如需要转换则需要第三方组件,在无形之中增加了链接配置被恶意盗用的可能性。
另外,V2Ray 现已然成为一个平台化程序,我认为有必要设计一个 VMess 协议的标准分享链接格式,这对于个人用户在设备间分享 / 机场进行标准化适配 / 新客户端编写都具有更多的便利性
2. 标准格式提议
新的
vmess://
标准应当避免使用 Json 存储,同时应当避免大量使用 Base64:Json 是数据交换格式,但不应用在 URL 中,URL 标准有 Query 项目可以存储协议相关设置
Base64 的输出会导致配置项不便于观察,在此基础上,Base64 并不能防止数据篡改或因为传输原因损坏:
3. 链接格式标准
下列标准使用类 Python 语法的伪代码编写
在标准中,
bool
类型的值将遵循以下规定:true, True, Yes, On
false, False, No, Off, 0
链接格式解析样例
Update: V2Ray-core 新增了 KCP Seed,因此更新
Update: 更新
TLSServerName
为tlsServerName
Update: 新增 TCP 在 HTTP 伪装时的 host 字段
Update: 移除了
tlsAllowInsecure
项The text was updated successfully, but these errors were encountered: