在下最初使用最蠢的方法
到 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或 按此安裝 php 及 php-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 方式保存,有需要亦可以使此方法匯出資料
將資料轉移到其他瀏覽器或工具上使用
沒有留言 :
張貼留言