others-ssr订阅解析

others-ssr订阅解析


前篇


SSR 协议解析

  • 示例:

    1
    ssr://YXF1b2g4eGkubm9kZWRhdGEubmV0OjYwMjI6YXV0aF9hZXMxMjhfbWQ1OmNoYWNoYTIwLWlldGY6dGxzMS4yX3RpY2tldF9hdXRoOlpHa3hOVkJXLz9vYmZzcGFyYW09TkdRd01EVXlOVEU0TlRRdWQzZDNMbWR2ZGk1b2F3JnByb3RvcGFyYW09TWpVeE9EVTBPbFZLYVZkU2JRJnJlbWFya3M9VEdGeVoyVWc2YWFaNXJpdk1qSWdMU0J1WmlCOElFbEZVRXdnZkNEbGdJM25qb2M2TVM0NCZncm91cD01clczNkxHYTVybS0
  • ssr:// 后面的

    1
    YXF1b2g4eGkubm9kZWRhdGEubmV0OjYwMjI6YXV0aF9hZXMxMjhfbWQ1OmNoYWNoYTIwLWlldGY6dGxzMS4yX3RpY2tldF9hdXRoOlpHa3hOVkJXLz9vYmZzcGFyYW09TkdRd01EVXlOVEU0TlRRdWQzZDNMbWR2ZGk1b2F3JnByb3RvcGFyYW09TWpVeE9EVTBPbFZLYVZkU2JRJnJlbWFya3M9VEdGeVoyVWc2YWFaNXJpdk1qSWdMU0J1WmlCOElFbEZVRXdnZkNEbGdJM25qb2M2TVM0NCZncm91cD01clczNkxHYTVybS0

    是 base64 编码过的, 需要进行 base64 解码, 得到

    1
    aquoh8xi.nodedata.net:6022:auth_aes128_md5:chacha20-ietf:tls1.2_ticket_auth:ZGkxNVBW/?obfsparam=NGQwMDUyNTE4NTQud3d3Lmdvdi5oaw&protoparam=MjUxODU0OlVKaVdSbQ&remarks=TGFyZ2Ug6aaZ5rivMjIgLSBuZiB8IElFUEwgfCDlgI3njoc6MS44&group=5rW36LGa5rm-
  • /? 前面的 ZGkxNVBW 是 base64 编码过的, 需要进行 base64 解码, 得到

    1
    di15PV
  • /? 后面的

    1
    obfsparam=NGQwMDUyNTE4NTQud3d3Lmdvdi5oaw&protoparam=MjUxODU0OlVKaVdSbQ&remarks=TGFyZ2Ug6aaZ5rivMjIgLSBuZiB8IElFUEwgfCDlgI3njoc6MS44&group=5rW36LGa5rm-

    键值对参数的 值 都是 base64 编码过的, 需要进行 base64 解码, 得到

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        obfsparam: 4d005251854.www.gov.hk
    protoparam: 251854:UJiWRm
    pwd: di15PV
    remarks: Large 香港22 - nf | IEPL | 倍率:1.8
    group: 海豚湾



    ---

    #### 客户端唯一 id 计算

    - 在客户端配置表可以看到一个 id 字段

    ```json
    {
    "configs" : [
    {
    "id" : "8DA7CB257B36F2A1982B75AC2DCED559",
    },
    }

    这个字段是通过这几个属性值计算出来的

    1
    2
    3
    4
    5
    6
    7
    ins.ip = "aaa.bbb.com"
    ins.port = "123"
    ins.password = "123"
    ins.proto = "3242"
    ins.protoparam = "3242"
    ins.obfs = "123"
    ins.obfsparam = "123"

    当这几个属性值完全相同时, id 计算出来的结果相同 (没看源码, 实际测试出来的), 客户端只会显示第一个


踩坑

base64 编解码问题
  • 解码 的时候, 需要尾部补齐 =, 在 编码 的时候, 需要尾部去掉 =

分组问题
  • 一个订阅只会分到一个组里, 即使服务器下发的有多个 组, 客户端只会去第一个节点的 组名 作为 分组名, 成功特使也是取 第一个组名 显示


客户端排序显示问题
  • 琢磨不透, 只能那第一个节点来改备注了 (这里调了好久才发现)