程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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