|
|
|
#!/usr/bin/python
|
|
|
|
# -*- coding:utf-8 -*-
|
|
|
|
|
|
|
|
import re
|
|
|
|
from ProxyDecoder import Shadowsocks
|
|
|
|
from ProxyDecoder import ShadowsocksR
|
|
|
|
from ProxyDecoder import VMess
|
|
|
|
from ProxyDecoder import VLESS
|
|
|
|
from ProxyDecoder import Trojan
|
|
|
|
from ProxyDecoder import TrojanGo
|
|
|
|
from ProxyDecoder import Brook
|
|
|
|
|
|
|
|
def decode(url: str) -> dict or None:
|
|
|
|
"""
|
|
|
|
代理分享链接解码
|
|
|
|
|
|
|
|
链接无效:
|
|
|
|
return None
|
|
|
|
|
|
|
|
链接有效:
|
|
|
|
return {
|
|
|
|
'type': ...,
|
|
|
|
...
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
scheme = re.search(r'^([\S]+?)://([\s\S]+)$', url).group(1)
|
|
|
|
if scheme == 'ss':
|
|
|
|
return Shadowsocks.ssDecode(url, compatible = True)
|
|
|
|
elif scheme == 'ssr':
|
|
|
|
return ShadowsocksR.ssrDecode(url)
|
|
|
|
elif scheme == 'vmess':
|
|
|
|
return VMess.vmessDecode(url)
|
|
|
|
elif scheme == 'vless':
|
|
|
|
return VLESS.vlessDecode(url)
|
|
|
|
elif scheme == 'trojan':
|
|
|
|
return Trojan.trojanDecode(url)
|
|
|
|
elif scheme == 'trojan-go':
|
|
|
|
return TrojanGo.trojanGoDecode(url)
|
|
|
|
elif scheme == 'brook':
|
|
|
|
return Brook.decode(url)
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
return None
|