sublink-worker icon indicating copy to clipboard operation
sublink-worker copied to clipboard

订阅链接转换失败

Open Atlas52306 opened this issue 9 months ago • 10 comments

问题描述

1.接口不是https的接口会转换失败 2.返回数据是text类型的数据无法被解析

Image

环境信息

  • 客户端类型(SingBox, Clash)
  • 客户端版本:解析出来的节点为空

原始节点信息:

使用适当的方式展示未进行订阅转换前的配置,注意脱敏。例如:

  • 本地上传到cdn或者服务器的文件无法读取

错误日志

没有日志,我写了一个接口测试发现http的并没有调用的接口,什么原因不得而知

复现步骤

1.服务器或者cdn上传节点信息,节点为v2ray格式 2.直接贴到项目中调用发现没有节点 3.又写了个接口获取所有节点信息并输出发现也没反应 4.又发现github上所说可以使用base64 5.接口返回base64也无反应,并且也没有调用接口 6.我又使用https也没反应 7.接口转html输出可以得到节点了

预期行为

具体原因还得您排查node不是很了解

补充信息

添加任何其他有关问题的信息

  • [ ] 我愿意提交PR来修复这个问题

  • [ ] 我提供的信息已经经过脱敏

  • [x] 我确认没有找到解决相同问题的 issue

Atlas52306 avatar Mar 07 '25 06:03 Atlas52306

你存放配置的服务器使用的是443端口吗?

7Sageer avatar Mar 07 '25 07:03 7Sageer

您配置的服务器使用的是443端口吗? 我都试过,只有443可以

Atlas52306 avatar Mar 07 '25 08:03 Atlas52306

我大概理解了,这里实际是两个问题:

  • 无法使用443以外(或者说http)的端口

    • 这个不是bug,是cloudflare worker的某种特性(参考我之前的评论)导致无法在请求时自定义端口。
  • 无法解析base64

    • 这个是之前的一次重构不小心把这个功能改没了,今天修了一下应该能用了,你可以拉取下最新版本看看行不行

7Sageer avatar Mar 07 '25 08:03 7Sageer

我大概理解了,这里实际是两个问题:

  • 无法使用443以外(或者说http)的端口

    • 这个不是bug,是cloudflare worker的某种特性(参考我之前的评论)导致无法在请求时自定义端口。
  • 无法解析base64

    • 这个是之前的一次重构不小心把这个功能改没了,今天修了一下应该能用了,你可以拉取下最新版本看看行不行

准确来说应该是三个问题 1.443的问题 2.base64的问题 3.txt文件直接解析的问题 您辛苦,我倒是没啥需求,我自己写了个转换服务丢服务器上了,但是其他同学需要呀,你试试在r2上上传一个文件(里边放v2ray的订阅信息),然后再通过项目订阅一样无法访问,这个你试试,也是无法解析

Atlas52306 avatar Mar 07 '25 08:03 Atlas52306

这个倒是没试过因为这样做的人好像确实比较少 回头我看看,感谢你的反馈

7Sageer avatar Mar 07 '25 08:03 7Sageer

我大概理解了,这里实际是两个问题:

  • 无法使用443以外(或者说http)的端口

    • 这个不是bug,是cloudflare worker的某种特性(参考我之前的评论)导致无法在请求时自定义端口。
  • 无法解析base64

    • 这个是之前的一次重构不小心把这个功能改没了,今天修了一下应该能用了,你可以拉取下最新版本看看行不行

关于第一个问题,作者有没有考虑使用Shadowfetch来支持非标准端口?根据Cloudflare的tcp bound文档,似乎只有25这种特殊的目标端口不被支持。

这么做的其他优点在于不会因为报文中的CF相关头而泄露发起请求的用户ip,并且目标也无法分辨这是否是来自cloudflare worker的请求了(除非他们完全不用cf的服务,否则worker后端请求和回源是完全分不开的,只能通过cf的asn来判定这是来自cf的请求)

@7Sageer

koast18 avatar Mar 07 '25 10:03 koast18

感谢分享,第一次看到这个实现,我大致看了一下。

但是目前有一个开源协议的问题,我们目前使用MIT协议,而这个项目使用AGPL协议,直接引入这个模块可能会导致一些协议上的冲突,导致我们降级为AGPL。我要再想想集成方式,或者有空的时候参考这个手写一个。

不过目前来看这块需求似乎不是很大,所以优先级应该比较低。

7Sageer avatar Mar 07 '25 14:03 7Sageer

我目前问题的来源是使用了勇哥的serv00一键脚本他会生成一个txt文件,在最近几次更新中我发现本项目无法解析了,其实还有一个办法就是用cf直接代理,就不需要管是否是不是80 443了。我目前就是这么做的,你可以试着整合一下

Atlas52306 avatar Mar 07 '25 16:03 Atlas52306

如果是最近产生的那么多半可以直接解决,晚点我看看

7Sageer avatar Mar 08 '25 03:03 7Sageer

我目前问题的来源是使用了勇哥的serv00一键脚本他会生成一个txt文件,在最近几次更新中我发现本项目无法解析了,其实还有一个办法就是用cf直接代理,就不需要管是否是不是80 443了。我目前就是这么做的,你可以试着整合一下

我目前在本地测试直接使用txt文件是没有问题的,那么我估计有可能还是cf worker的问题

关于代理文件,我觉得这个项目应该还是聚焦于订阅转换,这部分应该交给用户

7Sageer avatar Mar 08 '25 09:03 7Sageer