argius note

プログラミング関連

Firefox3の履歴などの情報を抽出

パソコンを複数台使っていると、Webの履歴が分散してしまいます。ブックマークとかしておけば良さそうですが、見たときはあまり重要じゃないと思って後でやっぱり...みたいなことが、今までほんの偶にありました。
それならブラウザを介さずに履歴を見るために、履歴をエクスポートするのが簡単な方法かな、と思いつきました。
では、私が使っているFirefox3で履歴のエクスポートをするにはどうすれば良いのかな?と調べてみたら、そういえばSQLiteのデータベースで管理しているみたいだ、ってのを思い出したので、それらしきファイル(=サイズが大きいもの)を覗いてみました。


Firefox3の履歴などのデータはSQLiteのデータとして格納されており、WindowsXPのデフォルトでは以下のディレクトリ

C:\Documents and Settings\{ユーザ名}\Application Data\Mozilla\Firefox\Profiles\{英数字}.default
({}で囲んだ部分は利用者ごとに異なります)

の"places.sqlite"に入っています。
Firefoxが起動中だと直接開けないので、他の場所にコピーしてから作業。ここでは"C:\places.sqlite"とします。
JDBCであれば、SQLiteJDBCドライバ*1を使って、

Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\places.sqlite");

のようにして接続。
"MOZ_PLACES"というテーブルに履歴が登録されているのがわかります。
Firefox3の「よく見るページ」という機能でランキングされる候補は、おそらくこのデータベースの"visit_count"(訪問回数)と"frequency"(頻度)から算出されていると推測されます。
そしてファイルの上限(今16MBくらいなのでこれが上限?)を超えたら"last_visit_date"(最後に訪問した日)の値が古い方から消されていくんでしょうか?(いや、足りなくなったら4MB単位くらいで増えていくのかも...)
他にも"MOZ_BOOKMARKS"などのテーブルがあるので、何かに使えるかもしれませんね。

*1:http://www.zentus.com/sqlitejdbc/などからダウンロードしてください。