Skip to content
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情况下tcp中http伪装无法转换为Clash的问题 #544

Closed
wants to merge 3 commits into from
Closed

Conversation

LittleJake
Copy link

@LittleJake LittleJake commented Sep 15, 2022

#536
本功能应该已经实现,但是判断的分支为net类型,然而不存在net类型为http的情况,将http伪装分支并入tcp内。

add tcp -> http fake type
delete non-exist net type http
make typeof tcp to http
@LittleJake LittleJake closed this by deleting the head repository Mar 14, 2023
@szkzn
Copy link

szkzn commented Jun 23, 2023

你好,大佬,没彻底修复,经测试,转换后没有读取到 原始 URL 里面的字段和值 "headerhost": "tms.dingtalk.com"
预期行为是
应该将 vmess base64 编码的 url 里面的 headerhost 的字段的值给到 headers: {Host: [tms.dingtalk.com]}}
实际转换后,把 “add”字段的服务器地址变成了 headerhost 的值
我手动测试,把 机场 vmess http tcp 里面的"headerhost": "tms.dingtalk.com", tms.dingtalk.com 替换掉 headers: {Host: [www.example.com]}} ,clash 能正常连接节点,www.example 是 add 字段的值

而预期之外的实际转换结果是,把 add 字段的值 赋予到了 (headers: {Host: [www.example.com]}}),

@LittleJake
Copy link
Author

具体可以参考这个,vmess分享链接没有官方的统一格式。

v2ray/discussion#720

V2RayN 格式、ShadowRocket 格式、Quantumult 格式各成一套体系。

@LittleJake
Copy link
Author

f377416

这里已经适配到v2rayN的vmess2的标准

分享链接格式说明(ver 2)

@szkzn
Copy link

szkzn commented Jun 23, 2023

感谢回复,是的,我刚才反复对比了不同客户端导出时的原始 vmess base64 解码后的信息,真的是太乱了

机场链接带了 headerhost 字段 和值,值与 add 的值不一致,在 v2rayNG 安卓版能使用,我把它从 v2rayNG 复制出来 URL,解码 base64 ,发现v2rayNG 直接丢弃 headerhost 字段和值的信息,导出完整配置,发现它用 Host 代替 headerhost,并将其设置为 空值 “”

在 clash 上面,clash 2023.05.19 核心上面,如果将机场的 headerhost 字段的值设置为空,或者是它里面的值,也可以连接

@szkzn
Copy link

szkzn commented Jun 23, 2023

也就是 headerhost 那个字段是机场自定义的,我看了下 clash 核心的文档,header 头里面的字段和值好像是可以自定义的

- name: "vmess-http" type: vmess server: server port: 443 uuid: uuid alterId: 32 cipher: auto # udp: true # network: http # http-opts: # # method: "GET" # # path: # # - '/' # # - '/video' # # headers: # # Connection: # # - keep-alive

越看越凌乱,这完全是没有一个统一标准,不过就这个来说,如果是自定义的部分属性,直接丢弃设置为空,机场服务端接受空值,这个兼容设计估计也是考虑到这乱七八糟的不同客户端实现最终效果的问题

那个免流机场是使用 v2board 面板,以前测试了几个也是,我抽空去看看机场面板端导出的原始 vmess base64 编码前所使用的字段

怎么感觉坑越来越多了

之前我拿你的这个pr搭了个后端 https://suc.0z.gs,我晚会看看能不能改一下,丢弃该字段的内容,设置为空,或者赋值,没学过 cpp,依葫芦画瓢试试

thx

@LittleJake
Copy link
Author

也就是 headerhost 那个字段是机场自定义的,我看了下 clash 核心的文档,header 头里面的字段和值好像是可以自定义的

- name: "vmess-http" type: vmess server: server port: 443 uuid: uuid alterId: 32 cipher: auto # udp: true # network: http # http-opts: # # method: "GET" # # path: # # - '/' # # - '/video' # # headers: # # Connection: # # - keep-alive

越看越凌乱,这完全是没有一个统一标准,不过就这个来说,如果是自定义的部分属性,直接丢弃设置为空,机场服务端接受空值,这个兼容设计估计也是考虑到这乱七八糟的不同客户端实现最终效果的问题

那个免流机场是使用 v2board 面板,以前测试了几个也是,我抽空去看看机场面板端导出的原始 vmess base64 编码前所使用的字段

怎么感觉坑越来越多了

之前我拿你的这个pr搭了个后端 https://suc.0z.gs,我晚会看看能不能改一下,丢弃该字段的内容,设置为空,或者赋值,没学过 cpp,依葫芦画瓢试试

thx

改这块还算挺简单的。8年没碰过c语言了

可以试试ClashMeta的subconverter

https://github.com/MetaCubeX/subconverter

@szkzn
Copy link

szkzn commented Jun 23, 2023

多谢,我也打算摆烂换 meta 后端了,这种局面看起来出现很久了,没有一个稍微大的社区/团队来强制实施的制定一个严格的最低标准哎,各自为战,这次测试时,与去年完全一样,没任何改善, v2board 这些大的项目服务端,与主流客户端也没做到较好的兼容,虽然基本兼容是肯定有的

也可能是我机场使用的非主流参数和配置造成兼容性的鸿沟,免流机场本来就小众,太难了太难了

非常感谢推荐了这个后端项目,我从来不知道,感觉第三方魔改后端可能也是基于这个项目的,比如肥羊、品云订阅转换
谢谢

@szkzn
Copy link

szkzn commented Jun 23, 2023

这个是机场服务端下发的原始 vmess 信息,与你发的那个 vmess2 标准比,真的是自己弄自己的,完全没想过按标准来

{
"host": "",
"path": "/?ed=2048",
"tls": "",
"verify_cert": "1",
"add": "1.1.1.1",
"port": "80",
"aid": "0",
"net": "tcp",
"headerType": "http",
"headertype": "http",
"headerhost": "tms.dingtalk.com",
"v": "2",
"type": "http",
"ps": "?? 中国四川 100M 80 tcp_http 停机卡专用 MPTCP Standard",
"remark": "?? 中国四川 100M 80 tcp_http 停机卡专用 MPTCP Standard",
"id": "12345678-0a92-2as6-5asd-384a6sc11451",
"class": "1"
}
多了一些奇奇怪怪的结构

@LittleJake
Copy link
Author

没啥办法,服务端官方也定不了一个调子,只能按自己的需求驱动了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants