たまに以前ウェブで見た情報が欲しくなることがあります.履歴に残っていればいいけど消えてしまっているかも.ウェブブラウザのアクセス履歴のタイトルとURLだけでもテキストファイルに残しておくと便利かもしれません.
履歴はHistoryファイルをsqlite3で叩くと取れるのですが,タイムスタンプがよくあるUNIX timeでもなくとても大きな値です.
$ sqlite3 ~/.config/chromium/Default/History "SELECT \"[\" || group_concat(json_object('timestamp', last_visit_time, title, url)) || \"]\" FROM urls;" | jq . | grep timestamp | sort
-n | tail -1
"timestamp": 13256542361632384,
$ date +%s
1612703645
検索するとこのようなページを見つけました.
This timestamp format is used in web browsers such as Apple Safari (WebKit), Google Chrome and Opera (Chromium/Blink). It’s a 64-bit value for microseconds since Jan 1, 1601 00:00 UTC. One microsecond is one-millionth of a second.
このTimestampはUTC 1601-01-01からのマイクロセカンド秒らしいです.試してみます.
まずはUNIX timeの1601-01-01からの秒数に10^6を掛けてUNIX timeとの差を求めます.(GNU coreutilsのdateって1970-01-01より前の時間も計算できるんだ!)
$ echo "$( date --utc --date 1601-01-01 +%s ) * 10^6" | bc
-11644473600000000
Chrome時間とUNIX timeの差を引いてUNIX timeに変換します.
$ echo "( 13256542361632384 -11644473600000000 ) / 1000000" | bc
1612068761
UNIX timeを人間が読めるように変換
$ date --date="@1612068761"
Sun 31 Jan 2021 01:52:41 PM JST
1行にまとめる
$ date --date="@`echo "(13256542361632384/10^6-11644473600)"|bc`"
Sun 31 Jan 2021 01:52:41 PM JST
逆に今の時間をChromeのtimestampに変換
$ echo "(`date +%s`+11644473600)*10^6" | bc
13257218080000000
1日前のChrome時間
$ echo "(`date -d '1day ago' +%s`+11644473600)*10^6" | bc
13257336413000000
ということで1日分Chrome/ChromiumのHistoryはこんな感じで取得できそうです.
$ sqlite3 /tmp/History "SELECT \"[\" || group_concat(json_object('timestamp', last_visit_time, title, url)) || \"]\" FROM urls WHERE last_visit_time >= $(((`date -d '1 day ago' +%s` +11644473600)*1000000));"
Note
|
該当プロファイルを利用中の場合このようなエラーになります.Error: database is locked ブラウザを終了するか,Historyファイルを適当な場所にコピーしてそちらを使います. $ cp /home/matoken/.config/google-chrome/Default/History /tmp/ |
History
ファイルは既定値ではこの辺にあります.
- Chromium
~/.config/chromium/Default/History
- Google Chrome
~/.config/google-chrome/Default/History
- Brave Brouser
/.config/BraveSoftware/Brave-Browser/Default/History
既定値以外の場合はこんな感じで検索? ~/.config
以外にもできるけどその場合はパスがわかっていると思います.
$ find ~/.config/chromium/ ~/.config/google-chrome/ ~/.config/BraveSoftware/Brave-Browser -name History -print
Operaは買収されてから使っていないのですが,古いプロファイルを見るとこの辺のようです.現在は変わっている可能性があります.
- Opera
- ~/.config/opera/History
Safariは環境がないので未確認ですがArchiveBoxのscriptを見ると既定値は恐らくこのあたりです.
- Safari
~/Library/Safari/History.db
$ dpkg-query -W bc google-chrome-stable chromium brave-browser coreutils sqlite3
bc 1.07.1-2+b2
brave-browser 1.19.92
chromium 88.0.4324.146-1
coreutils 8.32-4+b1
google-chrome-stable 88.0.4324.150-1
sqlite3 3.34.1-1
$ lsb_release -dr
Description: Debian GNU/Linux bullseye/sid
Release: unstable
$ uname -m
x86_64