2019-05-07

檢視與備份 Chrome 的歷史資訊

最近有朋友向在下查詢,如何檢視 Chrome 的歷史資訊

在下最初使用最蠢的方法
到 Chrome 的歷史頁面,輸入 chrome://history
開啟 開發人員工具 將整個頁面結構複製成 HTML檔案備份
但 Chrome 的 History 網頁,並不會載入所有瀏覽歷史資料,需要將頁面捲動到最底才會載到更多資料,因此這個方法根本不是可行方法

見下文
要備份歷史資訊,仍然需要到 設定檔路徑 (Profile Path)
在 Chrome 網址列 輸入 chrome://version 獲得 設定檔路徑 位置

見下文
顯示為 /home/mra/.config/chromium/Default 因為在下的 家目錄 (user home)/home/mra
因此需要改成閣下的 家目錄 位置,或使用 $HOME 便可以確保是使用當前使用者的 家目錄, $HOME/.config/chromium/Default
(由於在下使用 Chromium 示範,因此 設定檔路徑 為 chromium ,使用 Chrome 或 其他 Chrome Based 瀏覽器的 設定檔路徑 會有些微分別
在 $HOME/.config/chromium/Default 中找到 History 檔案, History 是一個使用 SQLite3 建立的輕型資料庫檔案

由於在下的朋友都是使用 Linux Mint ,因此可以很簡單安裝 SQLite3 ,在 Terminal 輸入
sudo apt-get install sqlite3
或 按此安裝 sqlite3

由於 Chrome 運行時,會將 History 檔案鎖定,令 SQLite3 不能閱讀,因此需要通過 SQLite3 查看 History 的資訊時要先關閉 Chrome

見下文
要查看到資料庫的所有資料表,輸入
sqlite3 "${HOME}/.config/chromium/Default/History" ".tables"
顯示總共有 11個 資料表
  • downloads
  • downloads_slices
  • downloads_url_chains
  • keyword_search_terms
  • meta
  • segment_usage
  • segments
  • typed_url_sync_metadata
  • urls
  • visit_source
  • visits

見下文
再使用
history="${HOME}/.config/chromium/Default/History"
for table in `sqlite3 "${history}" ".tables"`; do
    sqlite3 "${history}" ".schema '${table}'"; echo '';
done
顯示資料表的結構,從而估計各資料表的用途
雖然有很多不明用途的資料表,但主要需要查看的資料表是

downloads
下載歷史,保存開始時間、結束時間、來源位置、下載方法、MIME資料、檔案大小等資料
urls
網址歷史,保存會將所有不重覆既網址,包括 ? (問題)# (井號) 不同都會保存
visits
瀏覽歷史,保存時間、長度、urls相關資料等,因此清除瀏覽歷史,仍能查找到網址歷史

見下文
要完全清空歷史,到 chrome://settings/clearBrowserData 仍不夠,需要將 History 檔案刪除才可

由於 SQLite3 使用 | (管道) 為欄位分割器,執行 SQLite 指令時加上 -separator $'\t' ,將分割器改為 tab (製表符)
便可以將 Chrome 的歷史資訊輸出成 Tab Separated Values (TSV) 格式

輸入
sqlite3 -separator $'\t' "${HOME}/.config/chromium/Default/History" "SELECT 'downloads'.'start_time', 'downloads'.'end_time', 'downloads'.'tab_url', 'downloads'.'http_method', 'downloads'.'mime_type', 'downloads'.'total_bytes' FROM 'downloads' ORDER BY 'downloads'.'start_time' ASC;" >"${HOME}/downloads-history.tsv"
匯出 下載歷史 到 家目錄

輸入
sqlite3 -separator $'\t' "${HOME}/.config/chromium/Default/History" "SELECT 'visits'.'visit_time', 'visits'.'duration', 'urls'.'url' FROM 'visits' JOIN 'urls' ON 'visits'.'url' = 'urls'.'id' ORDER BY 'visit_time' ASC;" >"${HOME}/urls-history.tsv"
匯出 瀏覽歷史 到 家目錄

除了使用指令,還可以使用 phpLiteAdmin 透過 PHP 存取 SQLite3 資料庫檔案
輸入
sudo apt-get install php php-sqlite3
或 按此安裝 phpphp-sqlite3

見下文
https://www.phpliteadmin.org/ 下載 phpLiteAdmin 穩定版,並解壓縮

見下文
然後將 phpliteadmin.php 改名為 index.php

見下文
或使用 Git 下載 最新開發版,輸入
git clone https://bitbucket.org/phpliteadmin/public.git --depth=1

見下文
到 phpLiteAdmin 的目錄,輸入
php -S 0.0.0.0:8080
起動 臨時網頁伺服器

見下文
開啟網頁並前往 http://0.0.0.0:8080
(在下建議使用無痕模式,避免不能登出都可以將整個無痕模式關閉來強制登出,而不影響閣下本身的瀏覽狀態)

見下文
登入密碼 寫在 phpliteadmin.config.sample.php
預設是 admin ,有需要亦可以修改

見下文
登入 phpLiteAdmin 後
可以建立 SQLite3 資料庫,但現在並非要建立資料庫

見下文
將 Chrome 的 History 複製到 phpLiteAdmin 目錄中
並加上 .sqlite3 的副檔名,讓 phpLiteAdmin 辨認到 SQLite3 資料庫

見下文
見下文
見下文
見下文
重新載入 phpLiteAdmin 便會列出所有 SQLite3 資料庫
例如在下剛才匯出的 downloads, urls, visits 資料表
(在下測試清空瀏覽歷史後,將 History 複製到 phpLiteAdmin 目錄
可以發現 visits 有 2筆 資料,而 urls 有 84筆 資料,證明清空歷史,仍不能刪除所有歷史資料
下載歷史不能在 chrome://history 在清空,但 chrome://settings/clearBrowserData 則可以)

見下文
見下文
選取需要匯出資料的資料表後,按 Export 頁面,選取 CSV 格式, Fields terminated by 改為 , (逗號) ,符合 Comma Separated Values (CSV) 格式
最後按 export 匯出 CSV 檔案

見下文
見下文
使用 試算表軟件 例如 LibreOffice Calc 開啟 .CSV 檔案時
將匯入的欄位都改成文字,避免長數字會變成 Exponent 寫法

見下文
見下文
如果需要自行編寫 SQL 可以到 SQL 頁面,再執行結果
但 phpLiteAdmin 暫時未能匯出自行編寫 SQL 的結果,只能用複製及貼上方式匯出
要達到這方便,仍然需要使用 SQLite3 指令

雖然將整個 Chrome 設定目錄,或使用 Google 同步都可以備份歷史資料,內容亦無法查看
而且亦不知道 Google 會備份閣下甚麼資料
其實除了 History 還有其他資料會以 SQLite3 方式保存,有需要亦可以使此方法匯出資料
將資料轉移到其他瀏覽器或工具上使用

沒有留言 :

張貼留言