vernesong / OpenClash

A Clash Client For OpenWrt
MIT License
17.1k stars 3.13k forks source link

[Bug] SSR链接无法订阅,显示语法错误 #2661

Closed MaoSuSu closed 1 year ago

MaoSuSu commented 2 years ago

Verify Steps

OpenClash Version

v0.45.51-beta

Bug on Environment

Lean

Bug on Platform

Linux-armv8

To Reproduce

在订阅中填入SSR的订阅地址

Describe the Bug

SSR链接无法订阅,显示语法错误,链接可正常访问,同一个订阅链接在早期几个版本都无此问题

OpenClash Log

OpenClash Config

No response

Expected Behavior

希望作者大大可以早些修复,谢谢!

Screenshots

uTools_1661609750723
vernesong commented 2 years ago

请提供详细的报错位置实际信息

MaoSuSu commented 2 years ago

请提供详细的报错位置实际信息

报错位置: “配置文件订阅”下填写订阅链接并更新订阅

uTools_1661905423397 (红框标注的位置就是出错的第207列)

具体情况: 填写的链接是在第三方网站将SSR订阅转Clash,这个链接在过去的Openclash版本中和其他Clash客户端中是可以正常订阅的,估计是最新版的Openclash在支持SSR的protocol_param那块有些问题,我换用纯Clash订阅链接是可以正常下载并启动Openclash的

vernesong commented 2 years ago

你加个引号

MaoSuSu commented 2 years ago

你加个引号

抱歉,现在才看到消息 我试过了,加上引号没有作用,openclash启动的时候会自动修改配置文件,修改后引号就被去除了,也许大大可以为修改后的配置文件参数都默认加上引号?

vernesong commented 2 years ago

!!str 15978:
MaoSuSu commented 2 years ago

!!str

image

不起作用诶

MaoSuSu commented 2 years ago

!!str 15978:

今天我重新测试了一下,发现配置文件校验失败可能是软件本身的问题,问题都是出现在内核启动前,目前mipsle soft的openclash v0.45.51-beta没有这个问题,出现问题的是armv8的v0.45.51-beta,不知道是不是大大在编译多版本openclash的时候有所疏漏?

prunes81485216 commented 2 years ago

同样的问题,现在依旧存在哦

prunes81485216 commented 2 years ago

楼主是怎么解决问题的能提供一下思路吗?我是大雕的360V6固件,订阅一直有问题,同样的转换链接其他客户端都可以使用

MaoSuSu commented 2 years ago

楼主是怎么解决问题的能提供一下思路吗?我是大雕的360V6固件,订阅一直有问题,同样的转换链接其他客户端都可以使用

我是大雕的闭源ax6,问题还没有解决,只能等作者在下个版本修复了

prunes81485216 commented 2 years ago

楼主是怎么解决问题的能提供一下思路吗?我是大雕的360V6固件,订阅一直有问题,同样的转换链接其他客户端都可以使用

我是大雕的闭源ax6,问题还没有解决,只能等作者在下个版本修复了

那就是一模一样的固件,4460闭源,我是10.1的固件

MaoSuSu commented 2 years ago

楼主是怎么解决问题的能提供一下思路吗?我是大雕的360V6固件,订阅一直有问题,同样的转换链接其他客户端都可以使用

我是大雕的闭源ax6,问题还没有解决,只能等作者在下个版本修复了

那就是一模一样的固件,4460闭源,我是10.1的固件

你是用的大雕的群里的固件吗?方便指个路加个群吗?

MashiroX1 commented 1 year ago

你加个引号

openclash v0.45.59-beta,armv8,无线路由器同楼上红米AX6,OpenWrt R22.5.25 / LuCI Master (git-22.116.38781-d0638e7),内核版本4.4.60。 ssr节点的protocol-param的内容必须加单引号,才能通过openclash启动前的配置文件检查。 Clash for Windows、Clash for Android、ShellClash都没有这个要求,证明这不是Clash内核必须的要求。openclash的检查过于严苛了。 希望修复这个bug。 谢谢。

MaoSuSu commented 1 year ago

在这写一个临时的解决方案: 前往openwrt目录-->usr/share/openclash.sh

在文件的66行()下可以加入这个语句:sed -i "s/你的protocol-param中的参数/'&'/g" $CFG_FILE 这样即可实现ssr的自动订阅下载而无需手动修改配置文件

image

还有个个人自认为更加完善的sed语句:sed -i "s/protocol-param: ([^,]+),/protocol-param: '\1',/g" $CFG_FILE 该语句在测试环境下可完美为所有protocol-param参数加上引号,但实际在openwrt中不起作用,原因不明

此次是针对配置文件进行修改,以达到ssr订阅通过的目的,并未对ruby yaml语法检测强度进行变动,故为临时解决方案

vernesong commented 1 year ago

事实上我这边并不会报错,可以尝试升级ruby版本 image

prunes81485216 commented 1 year ago

事实上我这边并不会报错,可以尝试升级ruby版本 image

3.1.2-1这个版本去哪更新?我的目前是3.1.2

MaoSuSu commented 1 year ago

事实上我这边并不会报错,可以尝试升级ruby版本 image

实测,在ruby版本一致的前提下,这个问题目前只出现在内核4.4上,在5.4、5.10、5.15的openwrt上也都未出现问题,不知内核版本会不会影响ruby yaml的检查方式?

vernesong commented 1 year ago

行吧,你这闭源固件我估计也没办法自己去解决,我看看用sed处理下

prunes81485216 commented 1 year ago

行吧,你这闭源固件我估计也没办法自己去解决,我看看用sed处理下

期待大佬的更新!现在手动加引号也算还行的解决方案了。

prunes81485216 commented 1 year ago

感谢大佬!!!