웹 서버 Apache와 Nginx는 방문자에게 mod_unique_id/userid 모듈을 사용하여 uniqid 쿠키를 제공 할 수 있습니다. 이러한 cookie looks like은 base64 문자열로 인코딩 된 4 개의 uint32 값입니다. 두 번째 바이트는 쿠키가 발행 된 타임 스탬프입니다.apache/niginx 사용자 ID 쿠키의 날짜 추출
날짜와 시간을 추출하고 싶습니다.
from base64 import b64decode
from datetime import datetime
import shlex, gzip, glob
from struct import unpack
import pandas as pd
import numpy as np
def get_data() -> pd.DataFrame:
filenames = glob.glob('data/user_cookie/stat-*.gz')
for filename in filenames:
print(filename)
f = gzip.open(filename, 'rt')
for row in f.readlines():
parts = shlex.split(row)
useragent, raw_cookie = parts[9], parts[16]
if raw_cookie == '-':
raw_visit_date = parts[3][1:]
# this is a first visit
visit_date = datetime.strptime(raw_visit_date,
'%d/%b/%Y:%H:%M:%S')
else:
visit_date = datetime.fromtimestamp(unpack('IIII',
b64decode(raw_cookie))[1])
print(useragent, visit_date)
if __name__ == '__main__':
get_data()
이 줄은 특히 "인공"입니다. 모든 코드를 더 "파이썬적이고"더 빠르게 만드는 방법은 무엇입니까?
datetime.fromtimestamp(unpack('IIII', b64decode(raw_cookie))[1])