360浏览器采用的是Chrome开源内核。两个浏览器的数据库文件结构一样。
参考文献:www.doc88.com/p-6971366976640.html 杨雪 靳慧云 《Chrome 浏览器历史记录提取与分析》
1、历史记录的提取
sqlite是一款基于磁盘的轻量级关系型数据库管理系统,。浏览器中 Chrome、Firefox、Safari等常用浏览器均使用sqlite存储及管理用户的web访问行为。
Chrome浏览器历史记录数据存储在名为History的sqlite数据库文件中。
- 数据库表urls存储用户访问的URL,
- visits 存储用户每次web浏览的属性,
- keyword_search_terms 存储用户检索过的关键字。
URLS表结构
visits 表结构
keyword_search_terms 表结构
时间数据的处理
由于Chrome浏览器在sqlite中存储的时间是以1601-01-01 00:00:00 为起始时间点的微妙计数,与Unix时间戳存在时间间隔。因此研究人员输入时间后,需要先把该时间转换为Unix时间戳,再通过时间间隔补偿得到与Chrome浏览器历史记录相匹配的时间戳格式,从而筛选出对应的记录。
此处进行时间转换的具体代码为:
datetime(datetime(visite_time/1000000)+(strftime('%s','1601-01-01')),'unixe-poch','localtime')
举例:
DOS的时间基准是1980年1月1日,
Unix的时间基准是1970年1月1日上午12 点,
Linux的时间基准是1970年1月1日凌晨0点。
Windows的时间基准是1601年1月1日。
时间转换:
1秒(s) = 1000毫秒(ms)
1毫秒(ms) = 1000微秒(us)
1微秒(us) = 1000纳秒(ns)
1 纳秒(ns) = 1000皮秒(ps)
#!/usr/bin/env python3 #-*- coding:utf-8 -*- ''' Administrator 2018/10/17 ''' import time ''' -- 13181125268490285 微秒 -- select datetime('now') -- 2018-10-17 03:07:55 -- select datetime('now','localtime') -- 2018-10-17 11:07:23 -- 13181125268490285 微秒 Chrome时间戳 -- 13181125268.490285 秒 Chrome时间戳 -- 11644473600 间隔 -- 13181125268490-11644473600 拿到的是Unix时间戳 -- 先转换为时间元组''' time_c=13181125268490285/1000000-11644473600 print(time_c) print(time.strftime("%Y-%m-%d %X",time.gmtime(time_c)))