各Webブラウザの履歴を他のソフトウェアから取得しようとしたときの方法についてキーワードをまとめました(Windowsに限る)。Firefoxがめんどいよー。
Internet Explorer5.5~7
Keyword: IUrlHistory, IUrlHistoryStg
IUrlHistoryインタフェースを使ってIEの履歴にアクセスできます。
Firefox2
Keyword: Mork, history.dat
Mork形式という変態フォーマットが使用されています。履歴が記録されているファイルは%appdata%\Mozilla\Firefox\Profiles\(ランダムな値).defaultフォルダにあるhistory.dat。
各言語での実装は下記の「Morkの謎~」にリンクがあります。またWikipediaにもC++による実装のリンクがあります。Javaのも見つけたので載せておきます。動作はPerlのCPANのFile::Morkのみ確認しました。他のはマルチバイト対応してないかも。.NETによる実装は見つからなかったです……。誰か作ってー。
Firefox3
Keyword: Places, SQLite, places.sqlite
Firefox 3からはMorkに代わりSQLiteが使用されるようです。Beta1では、places.sqliteに履歴情報が含まれて居ます。SQLiteとC#で検索したらCodeZineのεπιστημηさんの記事が見つかりました。以下は参考までに。
Opera9
Keyword: global.dat
テキスト形式で一番単純です。%appdata%\Opera\Opera\profileフォルダにglobal.datがあります。UTF-8エンコードです。タイトル、URL、最終アクセス日時(1970年1月1日からの経過秒)、よくわからない値(ランクに関係してる?)の4行が入ってます。
Safari3
Keyword: History.plist, WebHistoryFileVersion
%appdata%\Apple Computer\SafariフォルダにHistory.plistがあります。Apple独自のXML形式でUTF-8エンコード。Public BetaではWebHistoryFileVersionが1と記述されています。URL、最終アクセス日時(2000年12月31日からの経過秒かな)、タイトル、訪問回数が記録されています。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>WebHistoryDates</key>
<array>
<dict>
<key></key>
<string>http://www.yahoo.com/</string>
<key>lastVisitedDate</key>
<string>218249073.0</string>
<key>title</key>
<string>Yahoo!</string>
<key>visitCount</key>
<integer>1</integer>
</dict>
</array>
<key>WebHistoryFileVersion</key>
<integer>1</integer>
</dict>
</plist>