写点什么

使用 python 获取浏览器收藏夹和历史浏览记录,然后可以...

作者:技能实验室
  • 2022 年 8 月 04 日
  • 本文字数:2036 字

    阅读完需:约 7 分钟

使用python获取浏览器收藏夹和历史浏览记录,然后可以...

在电脑上浏览个网页,都要用到浏览器,当你打开网页的那一刻,浏览器就会记录你的浏览信息,这些信息可能就是你的信息泄露的根源。下面看看如何使用 python 获取一下历史浏览记录;


以 chrome 浏览器为例:

找到浏览器数据存放位置

数据存放位置一般都是固定的,基本都在以下位置


C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default


如果在这个位置没有找到,可以打开 chrome 浏览器,在地址栏输入


chrome://version


在个人资料路径后面就是数据存放位置;


进入在文件夹,在其中查找文件:


Bookmarks 存放收藏书签 History 存放历史浏览记录

获取书签

Bookmarks 是保存了书签信息,数据以一个 json 文件格式保存,所以获取书签信息直接使用 python 读取文件即可


def getBookmarks():    marks = ''    with open(bookmarks,'r',encoding='utf-8') as f:        marks = json.loads(f.read())    for name, item in marks['roots'].items():        print('收藏夹名称:',name)        child = item['children']        for c in child:            print(c['type'])  #folder,url            print(c['name'])
复制代码


在书签文件中;


bookmark_bar 书签栏 other 其他书签 .synced 移动设备书签

获取历史浏览记录

Histroy 文件是一个 sqlite3 数据库;获取其中数据需要使用 sqlite3 库;


使用数据库可视化工具打开数据库,在里面找到 urls 表,你所有的历史浏览记录都会保存在这个表中


python 要连接数据库,获取数据,就需要使用 python 中的 sqlite3;sqlite3 是 Python 自带的库,不需要额外安装模块,操作简单。


首先定义数据库路径,将路径传入 sqlite3.connect()方法中,先连接上数据库;然后获取 curosr 游标,通过执行 sql 查询语句,获取表中数据;


具体代码可以参考如下:


def get_history():        conn = sqlite3.connect(history) #连数据库        cursor = conn.cursor() #获取游标        cursor = conn.execute("SELECT id,url,title,visit_count,last_visit_time  from urls order by last_visit_time desc ")        rows = []        for _id, url, title, visit_count, last_visit_time in cursor:            row = {}            row['id'] = _id            row['url'] = url            row['title'] = title            row['visit_count'] = visit_count            row['last_visit_time'] = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(last_visit_time/1000000 -11644473600 )) if last_visit_time > 0 else 0            rows.append(row)        return rows
复制代码


需要备注的是:

一:


last_visit_time 表示的 url 的最近访问时间;单位是微妙 换算成秒的时候,要除以 10^6;last_visit_time 的起始值是 1601 年 1 月 1 日 0 时 0 分 0 秒,正常计算机的计算时间 0 秒是待办 1970 年,所以要减去 11644473600,获取可以换成时间的秒数;操作过程中发现,次属性可能为 0.需做条件判断;


二:


当我们浏览器在运行过程中数据库会被加锁无法打开,所以在脚本运行前需要去 kill 掉浏览器的进程,杀 chrome 进程的命令 taskkill /f /t /im chrome.exe


所以再获取历史记录前需要执行杀进程命令:


kill_cmd = 'taskkill /f /t /im chrome.exe'os.system(kill_cmd) #杀进程result = get_history()
复制代码



已有的轮子

python 中有一个优秀的库,可以实现历史记录的获取,


browserhistory

安装 browserhistory

安装方式有很多种,推荐使用 pip;


pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。


安装 pip:


  • 安装 python; 这个是必须安装的;

  • 下载 pip:

  • 官网地址:https://pypi.org/project/pip/#downloads; 下载完毕后,解压

  • 打开命令行窗口,进入到 pip 解压后的目录;执行代码

  • python3 setup.py install

    进行安装,安装完成后,将 pip 加入到系统环境变量中

  • 验证打开命令行窗口,输入 pip list 或者 pip3 list


  • 安装 browserhistory:打开命令行窗口,输入执行以下代码,并回车

  • pip install browserhistory

  • 等待提示安装成功既可;

代码实现:

安装完成 browserhistory 后,只需要导入,然后使用很少的代码就能实现上面的功能;


    import browserhistory    dc = browserhistory.get_browserhistory()    print(dc.keys()) #浏览器 chrome firefox    print(dc['chrome'][0])
复制代码


四行代码就能搞定;


使用 browserhistory 获取记录很简单,而且这个库整个源码只有区区不到 200 行,就可以轻松的获取谷歌,火狐,safari 这三种浏览器的历史浏览记录,而且支持,mac, linux, windows 三种平台。学习一下源码,学会并掌握,对技术是一种很大的能力提升;

查看源码后,你会发现,其库里面不只有获取方法,还提供了保存历史记录到硬盘的功能函数;需要用到 pandas 库,另一个轮子;如有必要,可以了解一下。


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.07.26 加入

还未添加个人简介

评论

发布
暂无评论
使用python获取浏览器收藏夹和历史浏览记录,然后可以..._签约计划第三季_技能实验室_InfoQ写作社区