ブラウザで遊ぶことができるゲームがある。Webで遊べているということは、データがブラウザに落ちてきているということだ。

だから、うまくやればデータを抜き取って保存することもできよう。

◆データ抜けないやつ

映像だけがブラウザに連携されているやつ。「クラウド版」とか書かれていたらあやしげ。

つまり、サーバーで描画された映像をこっちのモニタに移しているだけなので、その画面を録画することしかできない。ゲームのリソースをぶっこぬくことはできない。

◆超面倒くさいやつ

データが暗号化、エンコードされている場合。暗号化されていると、そのままじゃ読めなくなる。暗号化されたデータは復号という操作をすれば内容を確認できるようになる。

その複合するためのカギとなる情報もブラウザには落ちてきているわけだが、それを探すのは結構に骨の折れる作業だな。無理ではないけど。

◆抜き取る方法の考え方

▼Flash

昔よくあったやつ。これはゲームごと抜き取ることができる。

swfを抽出してやればいい。そのswfの内容を読み取るソフトウェアもある。今後なくなるから深くは説明しない。

Flash Video Downloader

Web上から消えていた場合、Wayback Machineを掘れ。URLがわからないなら無理だけど。

▼HTML

まず、ChromeだのFireFoxだののブラウザを使用されていることと思うが、「開発者ツール」というものの存在を知らねばならん。

「F12」を押すと開発者ツールが出てくる。はず。ググれ。

開発者ツールにはタブがある。重要なのは「Elements」「Sources」「Network」だな。

・Element

Elementsでは、ブラウザに諸々を描画するための要素、エレメントを確認することができる。開発者ツールを開かずとも、画面を右クリックして「検証」的なメニューをクリックすれば開けたりもする。

一番簡単なパターンでは単に画像を右クリして保存できるのだが、直でアクセスできることも少ない。だから開発者ツールが必要になる。

Elementタブでは、階層構造になっているそれぞれの要素を確認することができる。「▶」をみつけてクリックすると、開いたりする。要素にマウスカーソルを乗せると、ブラウザ上で対応する要素が青く網掛けされる。それを参考にしながら辿れ。

ちょっと難しい話になるが、探すコツとしては「img」とか「image」とか「picture」という要素(タグ)を探すか、「background」とか「background-image」というCSSプロパティを持つ要素を探せ。

見つからないこともあるからその時は諦めろ。

・Network

通信の内容を確認できる。画像を通信したらその内容が確認できるわけだ。

「XHR」「JS」「CSS」「Img」「Media」だの、通信の種類が選べると思う。画像が欲しかったら「Img」だな。音声が欲しかったら「Media」。

んで、Imgで画像が落ちてこないことがある。これはスクリプトとかElementに直接画像データが埋め込まれているパターンだ。諦めたりしろ。

「Clear」のボタンがあるはずだから、通信内容をいったん消したくなったらうまく使え。

また、Networkで落ちてきたデータの行をダブルクリックすると別タブで開いたりDownloadフォルダに落とすことができる。

・Souces

ソース。フォルダ階層が表示されるから、死ぬ気で辿れ。

▼補足:HTML

Chromeには「プラグイン(extension)」という外部ツールを導入する仕組みがある。ElementとかNetworkを掘るのがだるい人は、その辺のキーワードで「chrome plugin xxx」みたいな感じでプラグインの検索をかけてみろ。いい感じのツールもあるかもしれない。

抽出は英語で「Extract」です。あとは単純に「download」「downloader」とか「Export」とかかなぁ。

▼Unity

AssetBundleというものを手に入れればいい。これはF12でNetworkを監視してれば落ちてくるのがわかるはずだ。あるいは、Chromeのキャッシュを掘ればいい。ググれ。

・AssetBundleの見つけ方

NetworkでXHRをながめて、「assetbundle」的な文言を含んでいるやつを探せ。あるいは妙にデータサイズの大きいデータ。Chromeの開発者ツールだと検索窓があるから「asset」とか入力してみてもいいだろう。

たとえば「.dmm」という拡張子であっても、ファイル内容のプレビューに「UnityFS」という記述があったらそれはAssetBundleです。

・AssetBundleの開き方

AssetStudioというソフトウェアを使う。ダウンロードは以下から。

Releases

※とりあえず一番新しいやつ使えばいいと思うけど「Pre-release」とかのバッヂが付いているものはちょっと動作が不安定かもね。

・AssetStudio

  • 「AssetStudioGUI.exe」を起動して
  • 「File」→「Load File」で落としてきたAssetBundleを読み込んで
  • 「Asset List」タブでお目当てのエロ画像を探す。

・Asset List

  • テーブル上部の「Type」をクリックすると、リソースの種類で並べることができる。
  • クリックでAssetを選択できるんだが、Shift + Clickでまとめて選択できる。Ctrl + Clickでもいいよ。
  • 選択したAssetは、右クリックで「Export selected assets」する。

▼動画

動画がそのまま落ちてくることもある。「.webm」とか。Networkに怪しいファイルがあったら、その行をとにかくダブルクリックしろ。バイナリのデータであってもヘッダーを見れば何のファイルか判ったりもするだろう。さっきの「UnityFS」とかな。

▼Live2D

試してねぇけど行けると思う。

「moc3」拡張子がついているファイルを引っこ抜くとかAssetBundleから抜き出すとかすれば「Cubism Viewer」というので見られそう。フリーで使える。

moc3ファイルだけじゃなくて、その周辺に転がっているmthだのjsonだのpngだのも一緒に扱わないとダメだろう。

ただ、「moc」っていう昔のLive2Dで使われてたファイルタイプもあるっぽくて、以前のバージョンのCubismが必要かもな。探せ。

◆例えば持っていないキャラクターの画像が欲しい

無理と思ったほうがいい。URLが予測不能にされていたり、URLが予測可能であってもURLパラメータとかCookieに正しいトークン(あらかじめ決めた文字列みたいなもの)を詰めないとアクセスできないようになっているんじゃねぇかな大抵は。

◆データを引っこ抜かせたくない時

Webに置くな。そもそもインターネットに公開するな。Webに乗せた時点でデータは引っこ抜かれるものだ。そこで抗っても無駄。金の無駄だし時間の無駄。意味ない。割り切れ。逆に考えるんだ。「データ抜かせちゃってもいいさ」と考えるんだ。元から抜けちゃう設計にすれば全てがすんなり通るんじゃないか?前提を疑え。

お前「リソースをダウンロードさせたくないんですが」

俺「じゃあインターネットに置くのは変です」

これ。最終的にはイタチごっこなんだよ。インターネットという道具の使い方に即していないわけだから。

◆以上

わかんなかったらコメントして。あと、Unreal Engineはわからん。多分なんとかできると思うんだけど。それとか、Wasmってので作られたゲームが今後登場すると思うんだけど、その辺もやり方違ってくるだろうから要勉強ですよね。

◆結論

Fanzaはサ終おおすぎ。

課金しろって?んん…断る…!