ChromeのMedia Historyについて
🐣🎄IPFactory Advent Calendar 2020 - Qiita 19日目の記事です🎄🐣
はじめに
こんにちは、iria_piyo🐣です。
今回は、Chrome86から追加されたMedia History
というアーティファクトに関するメモを書きました。
環境
OS : Windows10 20H2
ブラウザ : Google Chrome バージョン 87.0.4280.88
Media Historyとは
Chrome86から追加されたChromeのアーティファクトで、YouTubeやTwitterなどの動画や、音楽ストリーミングサイトなどの履歴が残っています。
ファイル形式はSQLiteデータベースで、%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\Media History
というパスに格納されています。
今回の記事で、Media History
の解析に使用したツールは、DB Browser for SQLiteです。
Media History
のテーブル
Media History
には、下記のテーブルがあります。
kaleidoscopeData
テーブルmediaFeed
テーブルmediaFeedItem
テーブルmeta
テーブルsqlite_sequence
origin
テーブルplayback
テーブルplaybackSession
テーブルmediaImage
テーブルsessionImage
テーブル
今回は、下記の5つのテーブルについて説明していきます。
origin
テーブルplayback
テーブルplaybackSession
テーブルmediaImage
テーブルsessionImage
テーブル
origin
テーブル
このテーブルには、動画再生の履歴や、音楽再生の履歴が残ったオリジンの一覧と最後にそのオリジンでメディアを視聴した時間、総視聴時間などが記録されています。
origin.last_updated_time_s
対象のオリジンで最後にメディアを視聴した時間が記録されています。(単位は秒)
origin.last_updated_time_s
は、1601/1/1 0:00 UTC
から経過した秒数を値として持っています。
図1のTwitterの13249550040
は、2020/11/11 06:34:00 UTC
になります。
WebKit/Chrome Timestamp Converterを利用して変換する場合は、秒からマイクロ秒に変換して、入力する必要があります。
origin.aggregate_watchtime_audio_video_s
playback.watch_time_s
をオリジンごとに合計した時間が記録されています。
playback
テーブル
このテーブルには、アクセスしたURLの動画の視聴時間、ビデオやオーディオの有無、最終視聴時間などが記録されています。
playback.watch_time_s
対象のURLの視聴時間が記録されています。
この値の合計が、origin.aggregate_watchtime_audio_video_s
に記録されるようです。
例として、Twitterのorigin.aggregate_watchtime_audio_video_s
とplayback.watch_time_s
の合計を比較してみます。
Twitterのorigin.aggregate_watchtime_audio_video_s
を見てみると、値が258
となっています。(図3参照)
Twitterのplayback.watch_time_s
を見てみると、4+25+3+87+24+115=258
になりました。
playback.has_video
ビデオの有無が記録されるようです。
playback.has_audio
オーディオの有無が記録されるようです。
playback.last_updated_time_s
最後に対象URLを視聴した時間が記録されるようです。
playbackSession
テーブル
このテーブルには、URL情報や、メディアの総時間、タイトル、メディアの再生位置などを記録しているようです。playback
テーブルと違い、URLの重複はないものと思われます。
playbackSession.duration_ms
メディアの総時間が記録されています。(単位はミリ秒)
図5のid:915
の動画の場合、playbackSession.duration_ms
が118381
となっており、動画の総時間は01:58
であることを意味しています。
playbackSession.position_ms
メディアをどこまで再生したかが記録されています。(単位はミリ秒)
図5のid:915
の動画の場合、playbackSession.position_ms
が40187
となっており、動画が0:40
まで再生されたことがわかります。
playbackSession.last_updated_time_s
最後にメディアを視聴した時間が記録されています。
playbackSession.title
動画のタイトルが記録されています。
playbackSession.artist
YouTubeの場合は、チャンネル名が記録されていました。 サイトによっては、値が入っていないものもありました。
mediaImage
テーブル
このテーブルには、動画のサムネイルのURLが記録されていました。 今のところ、YouTubeのサムネイルしか確認できていません。(図5参照)
sessionImage
テーブル
このテーブルには、mediaImage
テーブルに記録されているサムネイルの画像サイズが記録されていました。
Google翻訳の音声読み上げ機能もメディアの痕跡として残る
図8のようにGoogleで英単語を検索し、Google翻訳の音声読み上げ機能を使って、その音声を再生してみました。
すると、playback
テーブルに検索した際のURLが記録されました。しかしながら、playbackSession
テーブルには、何も残っていませんでした。(図9参照)
このように、playback
テーブルに存在するURLが、playbackSession
テーブルには存在しないケースがいくつかありました。playbackSession
テーブルに記録される条件については、今後検証していきたいと思いました。