订阅链接转换失败
问题描述
1.接口不是https的接口会转换失败 2.返回数据是text类型的数据无法被解析
环境信息
- 客户端类型(SingBox, Clash)
- 客户端版本:解析出来的节点为空
原始节点信息:
使用适当的方式展示未进行订阅转换前的配置,注意脱敏。例如:
- 本地上传到cdn或者服务器的文件无法读取
错误日志
没有日志,我写了一个接口测试发现http的并没有调用的接口,什么原因不得而知
复现步骤
1.服务器或者cdn上传节点信息,节点为v2ray格式 2.直接贴到项目中调用发现没有节点 3.又写了个接口获取所有节点信息并输出发现也没反应 4.又发现github上所说可以使用base64 5.接口返回base64也无反应,并且也没有调用接口 6.我又使用https也没反应 7.接口转html输出可以得到节点了
预期行为
具体原因还得您排查node不是很了解
补充信息
添加任何其他有关问题的信息
-
[ ] 我愿意提交PR来修复这个问题
-
[ ] 我提供的信息已经经过脱敏
-
[x] 我确认没有找到解决相同问题的 issue
你存放配置的服务器使用的是443端口吗?
您配置的服务器使用的是443端口吗? 我都试过,只有443可以
我大概理解了,这里实际是两个问题:
-
无法使用443以外(或者说http)的端口
- 这个不是bug,是cloudflare worker的某种特性(参考我之前的评论)导致无法在请求时自定义端口。
-
无法解析base64
- 这个是之前的一次重构不小心把这个功能改没了,今天修了一下应该能用了,你可以拉取下最新版本看看行不行
我大概理解了,这里实际是两个问题:
无法使用443以外(或者说http)的端口
- 这个不是bug,是cloudflare worker的某种特性(参考我之前的评论)导致无法在请求时自定义端口。
无法解析base64
- 这个是之前的一次重构不小心把这个功能改没了,今天修了一下应该能用了,你可以拉取下最新版本看看行不行
准确来说应该是三个问题 1.443的问题 2.base64的问题 3.txt文件直接解析的问题 您辛苦,我倒是没啥需求,我自己写了个转换服务丢服务器上了,但是其他同学需要呀,你试试在r2上上传一个文件(里边放v2ray的订阅信息),然后再通过项目订阅一样无法访问,这个你试试,也是无法解析
这个倒是没试过因为这样做的人好像确实比较少 回头我看看,感谢你的反馈
我大概理解了,这里实际是两个问题:
无法使用443以外(或者说http)的端口
- 这个不是bug,是cloudflare worker的某种特性(参考我之前的评论)导致无法在请求时自定义端口。
无法解析base64
- 这个是之前的一次重构不小心把这个功能改没了,今天修了一下应该能用了,你可以拉取下最新版本看看行不行
关于第一个问题,作者有没有考虑使用Shadowfetch来支持非标准端口?根据Cloudflare的tcp bound文档,似乎只有25这种特殊的目标端口不被支持。
这么做的其他优点在于不会因为报文中的CF相关头而泄露发起请求的用户ip,并且目标也无法分辨这是否是来自cloudflare worker的请求了(除非他们完全不用cf的服务,否则worker后端请求和回源是完全分不开的,只能通过cf的asn来判定这是来自cf的请求)
@7Sageer
感谢分享,第一次看到这个实现,我大致看了一下。
但是目前有一个开源协议的问题,我们目前使用MIT协议,而这个项目使用AGPL协议,直接引入这个模块可能会导致一些协议上的冲突,导致我们降级为AGPL。我要再想想集成方式,或者有空的时候参考这个手写一个。
不过目前来看这块需求似乎不是很大,所以优先级应该比较低。
我目前问题的来源是使用了勇哥的serv00一键脚本他会生成一个txt文件,在最近几次更新中我发现本项目无法解析了,其实还有一个办法就是用cf直接代理,就不需要管是否是不是80 443了。我目前就是这么做的,你可以试着整合一下
如果是最近产生的那么多半可以直接解决,晚点我看看
我目前问题的来源是使用了勇哥的serv00一键脚本他会生成一个txt文件,在最近几次更新中我发现本项目无法解析了,其实还有一个办法就是用cf直接代理,就不需要管是否是不是80 443了。我目前就是这么做的,你可以试着整合一下
我目前在本地测试直接使用txt文件是没有问题的,那么我估计有可能还是cf worker的问题
关于代理文件,我觉得这个项目应该还是聚焦于订阅转换,这部分应该交给用户