47
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Chromeの閲覧履歴をエクスポートする(Windows, Mac対応)

Last updated at Posted at 2019-04-05

はじめに

インターネットブラウザの閲覧履歴を見返していると自分の人生を振り返ってるみたいで楽しいですよね。
私の場合はChromeの履歴が2013年からのものが残っていましたが、
それ以前はIEやFireFoxなどを使っていたので残念ながら残っていませんでした。

他のブラウザについては以下の記事でまとめています。

  • Microsoft Edge

  • Apple Safari

OS毎の履歴データの保存場所

履歴データは以下のディレクトリにあります

// Windowsの場合
~\AppData\Local\Google\Chrome\User Data\Default\

// Macの場合
~/Library/Application\ Support/Google/Chrome/Default/

この中にHistoryというファイルがあるので、それがChromeの履歴データになります

sqlite3のインストール

履歴データの閲覧には、sqlite3が必要です。
まだインストールされていない方は、以下の記事を参考にインストールしてください。

履歴データの中身を確認

それでは以下のように進めていきます

// Windowsの場合
> cd '~\AppData\Local\Google\Chrome\User Data\Default\'

// Macの場合
> cd ~/Library/Application\ Support/Google/Chrome/Default/

// sqliteの中に入る
> sqlite3 History

// テーブル一覧の表示
sqlite> .tables

Historyの中には以下のようなテーブルがあります

テーブル名
downloads
download_url_chains
meta
urls
keyword_search_terms
segments
segment_usage
visits
visit_source

今回は訪問時間も欲しいのでurlsvisitsを結合して使います
urlsvisitsの構造は以下のようになっています

urls visits
id id
url url
title visit_time
visit_count from_visit
typed_count transition
last_visit_time segment_id
hidden visit_duration
favicon_id

履歴データを抽出してみる

今回はcsv形式で出力しますが、他にも以下のようなものもあるそうです

mode 説明
csv カンマ区切りで出力
column カラム毎に左揃えで出力
html HTMLのTABLE形式で出力
insert INSERT文として出力
line 各カラム毎に行を分けて出力
list 区切り文字でカラムを区切り1行で出力(デフォルト)
tabs タブ区切りで出力
tcl TCLのlist形式で出力

それでは実際に出力していきます
visit_timeがUNIXタイムもどき(1601/01/01 0:00 からのマイクロ秒)になっているので一般的な形式に変換しています

// .mode [モード名] でモード指定
sqlite> .mode csv

// .output [ファイル名].csv でファイル名指定
// 今回はユーザーのホームディレクトリに保存
sqlite> .output ~/result.csv

// ヘッダーをつける
sqlite> .headers on

// 抽出
sqlite> select urls.id, datetime(visits.visit_time/1000000-11644473600,'unixepoch','localtime') as visit_time, urls.title, urls.url from visits left join urls on visits.url = urls.id order by visits.id desc;

抽出で使用したSQLの内容は以下のようになっています

select 
 urls.id,
 datetime(visits.visit_time/1000000-11644473600,'unixepoch','localtime') as visit_time, 
 urls.title, 
 urls.url 
from visits 
left join urls 
 on visits.url = urls.id 
order by visits.id desc;

sqliteを抜けるとホームディレクトリにresult.csvというファイルができています。

もしError: database is lockedと出たら一度Google Chromeを終了してから、もう一度試す、
もしくは、Historyファイルを別名でコピーしたものに対して実施してみてください。

以上です。

47
39
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?