socket.io 具有奇怪的时间戳格式 (?)
socket.io with strange timestamp format (?)
我看到对 socket.io 的请求包含参数 t,类似于 LZywzeV、LZz5lk7 和类似的。
到目前为止我发现的所有示例都使用基于秒或毫秒的 UNIX 时间戳。
有人见过这样的时间戳格式吗? (它不是 base64 编码的)。
我今天开始寻找一个使用 Socket.io 的网站,遇到了同样的问题,试图寻找协议定义是没有用的。
我认为这种格式叫做 yeast
TBH,真的不知道为什么人们会发明这种东西而不是使用
base64(timestamp.getBytes())
改为伪代码。
Python中酵母解码算法如下:
from datetime import datetime
a='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'
b={a[i]: i for i in range(len(a))}
c=0
for d in "LZywzeV":
c=c*64+b[d]
print(c)
print(datetime.fromtimestamp(c/1000))
该代码的输出是:
1481712065055
2016-12-14 07:41:05
致@jeremoquai:
很简单,就是反转算法的问题:
def yeast(d):
r=""
while d!=0:
r='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'[d&63]+r
d>>=6
return r
所以,如果你 运行
yeast(1481712065055)
它returns LZywzeV
我看到对 socket.io 的请求包含参数 t,类似于 LZywzeV、LZz5lk7 和类似的。
到目前为止我发现的所有示例都使用基于秒或毫秒的 UNIX 时间戳。
有人见过这样的时间戳格式吗? (它不是 base64 编码的)。
我今天开始寻找一个使用 Socket.io 的网站,遇到了同样的问题,试图寻找协议定义是没有用的。
我认为这种格式叫做 yeast
TBH,真的不知道为什么人们会发明这种东西而不是使用
base64(timestamp.getBytes())
改为伪代码。
Python中酵母解码算法如下:
from datetime import datetime
a='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'
b={a[i]: i for i in range(len(a))}
c=0
for d in "LZywzeV":
c=c*64+b[d]
print(c)
print(datetime.fromtimestamp(c/1000))
该代码的输出是:
1481712065055
2016-12-14 07:41:05
致@jeremoquai: 很简单,就是反转算法的问题:
def yeast(d):
r=""
while d!=0:
r='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'[d&63]+r
d>>=6
return r
所以,如果你 运行
yeast(1481712065055)
它returns LZywzeV