Fiddlerを使って艦これの戦闘シーンをトラップ(敷波撃沈編)

FiddlerCoreを使ってブラウザアプリをトラップする(前哨戦) – Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/5050

の続きで、昨日の晩3時間ぐらいやってました。メモ的にやったことを書くと、

  • IE10 の開発ツールを使って、サーバーアクセスをロギング
  • Fiddler を使ってロギング
  • FiddlerCore を使って自作ツールでロギング
  • Network Monitor を使ってロギング

って感じです。Fiddler自体は、「実践Fiddler」英語版をPDFで買ってチェック。

目的は、戦闘シーンを時系列でキャプチャできないかな?と思ったところです。艦娘の獲得シーンの画面キャプチャもそうなのですが、それぞれの戦闘シーンを記録しておくと、なんとなく感情移入がしやすいというか、ボードゲームの海戦シミュレーションをやったことがある方(って何時の話か?)は分かると思いますが、記録から映像が浮かぶってやつです。いくつかハッキングもどきもできそうな感じ(艦娘の画像取得とか)ですが、それはまた別の話(注意、悪用しないように)。

戦闘シーンをIEの開発ツールで「ネットワーク キャプチャ」をするとこんな風に取れます。battle で始まって、*.swf が艦娘の画像で、*.mp3 が艦娘の音声、最後に battleresult で戦闘結果がでます。battle と battleresult は JSON なので、艦船情報と戦闘の結果(HPとか大破とか)が取れそうです。リアルタイムに戦闘シーンが取れると思ったのですが…

image

で、これを fiddlerCore でキャプチャすれば言い訳ですから、IEのFiddlerで試してみます。

image

これを見るとわかるのですが、battle と battleresult の間がほとんど通信していませよね。あれ?変だなと思って IE のほうを見れば、ステータスが 304 な訳です。なるほど、HTTPステータス・コード – CyberLibrarian を見ればわかる通り、自前のキャシュを当てにせよ、ってわけですね。で、ここまで知っていたので、じゃあ、Fiddler って 304 を無視するんですかね?と思って調べていったのが私の間違いです。

実際、Fiddler には 304 を無視するカスタムルールがついているのですが、良く分からんけど、google への 304 はキャプチャできているけど、艦これの 304 はキャプチャできない。謎だー、ってことで、あれこれと fiddlerCore の CONFIG を探したりあれこれと調べました。

image

調べたおかげで、fiddler を使いこなせるかな、ぐらいにはなったのですが、まあ目的は「艦これの戦闘シーンのキャプチャ」なので、さて、どうするかというところ。

代案として、「IE でキャッシュを効かない」ようにして、毎回取るようにすれば、常に 200 になるから大丈夫とか、送信するときのヘッダを no-cache にしてしまえば…という誘惑もあるのですが、それはそれでサーバーに負担を掛けるし、第一毎度サーバーに取りに行ったのではスムースな戦闘シーンがダメになりそうですよね。

image

ちなみに、IE のオプションでキャッシュを使わないようにして試したのですが、Flash の場合は別ものみたいです。この「自動的に確認する」が曲者で、どのくらいの時間でサーバーに問い合わせをするのかが微妙なのです…というのに気付いたのは、実は後からで、ここで私が思い込んでいたのは、

  • 304 なのだから、毎度サーバーに If-Modified-Since で問い合わせをしているのだろう。

と想像したのが間違い。あれこれ2時間ほど network monitor を使って出た結論は、

  • IE の場合、If-Modified-Since を付けていても「自動的に確認する」にしておくと、時間内であれば IE 内でしれっと 304 を返す。

ってことです。詳細な動きは Fiddler PowerToy – 第 2 部: HTTP パフォーマンス あたりに書いてあります。クライアントアプリで Web API を使う時に高速化できるテクニック(逆に、最新データを取得するときに使うテクニック)としては常套手段みたいです。

そんな訳で、リアルタイムに戦闘シーンは取れなそうですね。IEを適当にフックすれば、サーバー問い合わせをしない 304 も取れそうな気がするのですが、ちょっとそれは大袈裟だし。どうせならば、ストア版のIEに艦これを出して、スナップ表示でリアルタイム実況なるものを考えていたのですが、ちょっと無理っぽい。バトル結果と艦娘一覧ぐらいが無難ですかね。

そんな訳で、出撃を何度も繰り返して経験値を貯めつつ、戦闘ログを取っていたわけで…駆逐艦敷波の憂き目に orz うっかり、大破の後、継続して出撃しておりました。

Amazon.co.jp: 聯合艦隊軍艦銘銘伝―全860余隻の栄光と悲劇: 片桐 大自: 本 によれば、名前は「万葉集」巻十一の「うぢ川のせぜのしきなみしくしくに」から。最後は海南東方において、米潜水艦「グローラー」の雷撃により撃沈、だそうです。敷波 (吹雪型駆逐艦) – Wikipedia もあわせて、無駄な知識をため込むのOKかと。

image

英霊として復活すべく、現在、鎮守府海域を探索中…。

カテゴリー: 開発 パーマリンク