Closed horsley closed 4 years ago
补充,调试已经找到了问题,从标准链接转过来 obfs param/protocal param/password 都需要b64解码
func convertDialerURL(stdSSRLink string) string {
if strings.HasPrefix(stdSSRLink, "ssr://") {
stdSSRLink = stdSSRLink[6:]
}
stdSSRLink = ssrB64Decode(stdSSRLink)
parts := strings.Split(stdSSRLink, "/?")
basicParams := strings.Split(parts[0], ":")
extraParams, _ := url.ParseQuery(parts[1])
//标准格式 server:server_port:protocol:method:obfs:password/?obfsparam=obfs_param&protoparam=protocol_param
//dailer 使用如下格式
//"ssr://rc4-md5:xxxxx@xxxxx:51954?obfs=plain&obfs_param=&protocol=origin&protocol_param="
dialerParam := make(url.Values)
dialerParam.Set("obfs", basicParams[4])
dialerParam.Set("obfs_param", ssrB64Decode(extraParams.Get("obfsparam")))
dialerParam.Set("protocol", basicParams[2])
dialerParam.Set("protocol_param", extraParams.Get("protoparam"))
return fmt.Sprintf("ssr://%s:%s@%s:%s?%s",
basicParams[3], //method
url.QueryEscape(ssrB64Decode(basicParams[5])), //pwd
basicParams[0], //svr
basicParams[1], //port
dialerParam.Encode(),
)
}
func ssrB64Decode(origin string) string {
padLen := 4 - len(origin)%4
origin += strings.Repeat("=", padLen)
d, _ := base64.URLEncoding.DecodeString(origin)
return string(d)
}
已补充,谢谢
example中的链接为非标准ssr url格式,库可以提供从标准url转换的方法
我写了这个转换方法,但是测试不通过,http get 均出现EOF,有否调试方法?
obfs param/ protocol param没有标注是否提供原值/b64值