程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

使用python獲取浏覽器收藏夾和歷史浏覽記錄

編輯: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庫,另一個輪子;如有必要,可以了解一下。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved