Opera のcache を管理するファイル dcache4.url についての解析.
注意
この文書は,WindowsXPにWindows版の Opera9を インストールしたときの情報に基づいて作成してます.別のOS,別のバージョンの解析状況は追々.
この文書を基にして,Operaにカスタマイズその他の変更を加えて,不具合が発生しても責任は取れません.
突っ込み,感想,その他は,office@ashula.infoまで
説明
このページでは,Operaのディスクキャッシュファイル( dcache4.url )について解説しています.
「ユーザごとの設定を使う」でインストールすると,通常,%APPDATA%\Opera\Opera\profile\cache4
以下に作られます.
(%APPDATA%
は,通常Documents and Settings\user_name\Application Data
.エクスプローラの「ツール→フォルダオプション→表示→全てのファイルとフォルダを表示する」が設定されていないと見ることは出来ないです).正確な場所は opera:config#UserPrefs|CacheDirectory4の値を参照のこと.
Opera 9.5 for Windows では,移動プロファイルへの対応がなされており,キャッシュフォルダがC:\Document and Settings\user_name\Local Settings\Application Data\Opera\Opera\profile\cache4\
に変更されています.
ここにまとめた情報は主に,Opera File Formatsの公式の解説を基に作られています.ほかの資料は参考文献を参照してください.
構造
データ構造(レコード)についての概要は,binary filesを参照のこと.
dcache4.url ファイルはヘッダと訪問済みリンク情報のデータレコードからなる.
ヘッダ
ヘッダは,4つの値からなり, dcache4.url の ヘッダの4つの値はそれぞれ次のようになっている.
- file version number
0x0000 1000
- app. version number
0x0002 0000
- idtag_length
0x0001
- length_length
0x0002
なので,まとめるとファイルの先頭は以下のようになる.
0 8 16 24 32
+--------+--------+--------+--------+
| 0x00 | 0x00 | 0x10 | 0x00 |
+--------+--------+--------+--------+
| 0x00 | 0x02 | 0x00 | 0x00 |
+--------+--------+--------+--------+
| 0x00 | 0x01 | 0x00 | 0x02 |
+--------+--------+--------+--------+
本体
dcache4.url ファイルの本体は ディスクキャッシュに関する情報のレコードの集合からなる.
dcache4.url ファイルで使われる レコードのタグIDとペイロードは以下の通り.vlink4.dat等と共通の要素と,いくつかの専用の要素からなる.
タグID | ペイロードの型 | 説明 |
---|---|---|
0x01 | レコード | 個々のキャッシュファイルに関するレコード. |
0x40 | string | 次に使えるキャッシュファイルの5文字( oprXXXXX の XXXXX 部分 ). |
タグID | ペイロードの型 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
0x03 | string | 完全なURLの名前(The name of the URL, fully qualified) | ||||||||
0x04 | time_t | 最終訪問日時 | ||||||||
(0x0b | MSB_VALUE) | flag | そのURLがフォームの問い合わせ結果であるときにのみ存在 | ||||||||
0x22 | レコード | その文書に存在する 相対リンクのレコード | ||||||||
0x05 | time_t | ローカルの時間帯でのファイルの最終取得日時. | ||||||||
0x07 | uint8 |
|
||||||||
0x08 | uint32 | キャッシュしたファイルのサイズ | ||||||||
0x09 | string | キャッシュしたファイルの MIME type | ||||||||
0x0a | string | キャッシュしたファイルの文字集合 (Character set of content) | ||||||||
(0x0c | MSB_VALUE) | flag | キャッシュフォルダ以外の場所にダウンロードされたかどうか | ||||||||
0x0d | string | ファイル名 (cache files: キャッシュディレクトリに相対) | ||||||||
(0x0f | MSB_VALUE) | flag | ファイルが更新されたかどうか.更新されてたら存在. | ||||||||
0x10 | レコード | HTTP での通信に関する情報のレコード |
タグID | ペイロードの型 | 説明 |
---|---|---|
0x23 | string | 相対リンクのURL |
0x24 | time_t | 最終訪問日時 |
タグID | ペイロードの型 | 説明 |
---|---|---|
0x15 | string | HTTP date header |
0x16 | time_t | Expiry date |
0x17 | string | Last modified date |
0x18 | string | MIME type of document |
0x19 | string | Entity tag |
0x1A | string | Moved to URL (Location header) |
0x1B | string | Response line text |
0x1C | uint32 | Response code |
0x1D | string | Refresh URL |
0x1E | uint32 | Refresh delta time |
0x1F | string | Suggested file name |
0x20 | string | Content Encodings |
0x21 | string | Content Location |
0x25 | uint32(string) | タグ 0x26 と一緒に使い,最後にリソースを取得したときに使った User Agent の文字列をあらわす. |
0x26 | uint32(string) | タグ 0x25 と一緒に使い,最後にリソースを取得したときに使った User Agent の sub version をあらわす. |
(0x30 | MSB_VALUE) | flag | (予約領域) |
(0x31 | MSB_VALUE) | flag | (予約領域) |
0x3a | uint32 | (不詳) |
各レコードの名称と意味の詳細はHypertext Transfer Protocol -- HTTP/1.1を参照
構成
YAML(google://YAML)っぽい書式を使ってまとめるとファイルの構成は次のようになる.()
Opera 9.5 では,64bit への対応がされているため,time_t が 8byte(64bit)の値になってます.
header :
file version number : 0x0000 1000
app version number : 0x0002 0000
tag_id length : 0x0001
length length : 0x0002
body :
- download file record :
tag : 0x41
length : 0xLLLL
payload :
url_name :
tag : 0x03
length : 0xLLLL
payload : url # 文字列(長さ url_name record length)
last_visit :
tag : 0x04
length : 0x0004
( 9.5 : 0x0008 )
payload : 0xTTTT TTTT # time_t 型
( 9.5 : 0xTTTT TTTT TTTT TTTT ) # time_t 型
rel_url_info :
tag : 0x22
length : 0xLLLL
payload :
rel_url_name :
tag : 0x23
length : 0xLLLL
payload : url # 文字列(長さ rel_url_name record length)
rel_url_last :
tag : 0x24
length : 0x0004
( 9.5 : 0x0008 )
payload : 0xTTTT TTTT # time_t 型
( 9.5 : 0xTTTT TTTT TTTT TTTT ) # time_t 型
local_download_time :
tag : 0x05
length : 0x0004
( 9.5 : 0x0008 )
payload : 0xTTTT TTTT # time_t 型
( 9.5 : 0xTTTT TTTT TTTT TTTT ) # time_t 型
download_state :
tag : 0x07
length : 0x0001
payload : ( 0x02 | 0x04 | 0x05 ) # 2,4,5 のどれか
download_file_size :
tag : 0x08
length : 0x0004
payload : 0xLLLL LLLL
mime_type :
tag : 0x09
langth : 0xLLLL
payload : MIME-type
char_set :
tag : 0x0a
length : 0xLLLL
payload : char-set # 文字集合
file_name :
tag : 0x0d
length : 0xLLLL
payload : file name # ローカルでのファイル名
is_in_cache_folder :
tag : 0x8c # 0x0c flag
is_file_edited :
tag : 0x8d # 0x0d flag
http_com_result :
tag : 0x10
length : 0xLLLL
payload :
http_date_header :
tag : 0x15
length : 0xLLLL
payload : HTTP date header
http_expiry_date :
tag : 0x16
length : 0x0004
( 9.5 : 0x0008 )
payload : 0xTTTT TTTT # time_t 型
( 9.5 : 0xTTTT TTTT TTTT TTTT ) # time_t 型
http_last_mod_date :
tag : 0x17
length : 0xLLLL
payload : last modified date # http date format ?
http_mime_type :
tag : 0x18
length : 0xLLLL
payload : mime-type
http_entity_tag :
tag : 0x19
length : 0xLLLL
payload : ETag
http_location_header :
tag : 0x1a
length : 0xLLLL
payload : MovedToURL
http_response_line :
tag : 0x1b
length : 0xLLLL
payload : response-line-text
http_response_code :
tag : 0x1c
length : 0x0004
payload : 0xVVVV VVVV
http_refresh_url :
tag : 0x1d
length : 0xLLLL
payload : refresh-url
http_refresh_delta_time :
tag : 0x1e
length : 0x0004
payload : 0xVVVV VVVV
http_suggested_file_name :
tag : 0x1f
length : 0xLLLL
payload : suggested-file-name
http_content_encoding :
tag : 0x20
length : 0xLLLL
payload : encoding
http_content_location :
tag : 0x21
lenght : 0xLLLL
payload : location
http_user_agent :
tag : 0x25
length : 0xLLLL
payload : user-agent-string
http_user_agent_subversion :
tag : 0x26
length : 0xLLLL
payload : user-agent-subversion-string
unknown_http_com_record : # 0x3a 不詳なレコード
tag : 0x3a
length : 0x0004
payload : OxVVVV VVVV
reserved_flag_1 :
tag : 0xC0 # 0x30 予約領域
reserved_flag_2 :
tag : 0xC1 # 0x31 予約領域
参考文献
- Off
Opera File Formats, http://www.opera.com/docs/fileformats/ , opera.com
- Off_jp
Opera のファイル形式, http://jp.opera.com/docs/fileformats/ , jp.opera.com
- unofficial
Opera File Formats(私家訳), http://ashula.info/neta/opera/inis/OperaFileFormats-jp.html , t.ashula
- O4FE
Opera4 File Explorer, http://users.westelcom.com/jsegur/O4FE.HTM , Josef W. Segur
更新履歴
- 2008/01/28 : 2nd : Opera 9.5 にあわせた記述に改訂
- 2007/06/11 : 初版