socket.io со странным форматом отметки времени (?)

Я вижу запросы к socket.io, содержащие параметр t, чтобы они походили на LZywzeV, LZz5lk7 и подобные.

Все примеры, которые я нашел до сих пор, использовали метки времени UNIX, основанные на секундах или миллисекундах.

Кто-нибудь когда-нибудь видел такой формат меток времени? (Он не закодирован в base64).

2 ответа

Решение

Я начал искать сайт, который использует Socket.io сегодня, и получил ту же проблему, пытаясь найти определение протокола, было бесполезно.

Я понял, что этот формат называется дрожжами

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

to @jeremoquai: Это просто, нужно инвертировать алгоритм:

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

так, если вы бежите

      yeast(1481712065055)

он возвращает LZywzeV

Другие вопросы по тегам