Seaside Laboratory

Post

3DS でモバゲーを遊ぶ

スマホがないのでモバゲーには Firefox + FireMobileSimulator という環境でアクセスしているが、「3DS で使えたら寝転がって遊べるし最高じゃね?」と思い挑戦してみることに。

モバゲーは User-Agent (以下 UA) を使って端末を振り分けているので、非対応端末である 3DS (の UA) でアクセスすると拒否されてしまう。インターネットブラウザの UA は変更することができないので、Proxy をかませてリクエストを書き換えてやることにした。

一般的に Proxy といえば、Squid のようなデーモンタイプの Proxy サーバを指すが、デーモンを動かすための環境と知識が必要になるので敷居が高い。CGI 経由でアクセスする CGI Proxy というものもあるが、基本的に HTML の書き換えしか行わないので、JavaScript と CSS を多用したスマホサイトでは厳しい。

他に良いものがないか探していてたどり着いたのが Proxomitron。日頃から愛用しているのにもかかわらず、ローカルで動いているせいかすっかり存在を忘れていた。ブラウザのアドオンとは違い、特定ポートを Listen する作りなので、PC 以外の端末 (3DS) から LAN 経由でアクセスできて都合が良いというわけです。

まず、Proxomitron の設定メニューにある「アクセス」タブを開く。初期値では「この PC からのアクセスのみを許可する」となっているので、「次の範囲の IP アドレスからのアクセスを許可する」に変更。


うまくいってからアドレスの範囲を狭めるのがオススメ。

この状態で接続テストをしてみたが、なぜか失敗してしまう。「Windows ファイアウォール」でブロックされている可能性もあるので、「無効」に変更してみたが状況は変わらず。ダメ元で Proxomitron を再起動したらうまくいった。どうやら設定反映がうまくいってなかったらしい。

次は 3DS 側の設定。インターネットブラウザを起動して「Proxy の設定」を選択。「Proxy を使う」は当然チェック。「サーバー」には Proxomitron が起動している PC のローカルアドレス、「ポート」には Proxomitron で設定したポートを入力する。この状態で適当なサイトに接続してうまく表示されれば基本的な設定は完了。実際に Proxomitron を経由しているかどうかはログウィンドウで確認できる。

最低限の環境が整ったので、さっそく UA の偽装を行う。Proxomitron に以下のヘッダ用フィルタを追加。

In = FALSE
Out = TRUE
Key = "User-Agent: iPhone"
Match = "*"
Replace = "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3"

適当なスマホっぽい UA をセットする。とくにこだわりはない。ただ、Android 系だとゲーム演出用の Flash が有効になる場合があるので iPhone が無難か。この状態でモバゲーにアクセスをする。


大成功!

トップページは問題なく表示されるがログイン画面に遷移できない。Proxomitron は初期状態で SSL 非対応なので、SSL が有効になっているログイン画面にアクセスできない模様。通常のゲーム画面が SSL でないことは知っているので、ログイン Cookie さえ手に入れば何とかなる。SSL と格闘するのは面倒だったので、他のブラウザからログイン Cookie を抜き取ることにした。

まず、Firefox でスマホ偽装状態でログインして Cookie を焼いてもらい、オプション画面で焼かれた Cookie を確認する。

sp.mbga.jp ドメインに属している "SP_LOGIN_SESSION" の値をメモしておく。この値を Proxomitron から強制出力することで、ログイン認証をすり抜ける。用意したフィルタは以下の通り。

In = FALSE
Out = TRUE
Key = "Cookie:SP_LOGIN_SESSION"
Match = "*"
Replace = "SP_LOGIN_SESSION=********"

設定が終わったら、再度モバゲーにアクセスする。うまくいけば会員トップ画面が表示されるので、そこから各ゲームへジャンプ。


怪盗ロワイヤルにアクセス成功!

今回は実験が目的だったので少し面倒なやり方になったが、Proxomitron 設置 PC の IP アドレスを DHCP から固定 IP にしたり、SSL 対応ローカル Proxy に変えたりすれば、より実用的になるかも。