socket.io有奇怪的时间戳格式(?)

时间:2016-12-14 11:39:17

标签: socket.io timestamp url-parameters data-formats

我看到对包含参数t的socket.io的请求与LZywzeV,LZz5lk7等类似。

到目前为止,我发现的所有示例都使用了基于秒或毫秒的UNIX时间戳。

有没有人见过像这样的时间戳格式? (它不是base64编码的。)

2 个答案:

答案 0 :(得分:2)

我今天开始寻找一个使用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

答案 1 :(得分:0)

致@jeremoquai: 很简单,就是反转算法的问题:

def yeast(d):
  r=""
  while d!=0:
    r='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'[d&63]+r
    d>>=6
  return r

所以,如果你运行

yeast(1481712065055)

它返回 LZywzeV