はじめに
「あつまれ どうぶつの森(あつ森)」発売から4年が経ちますね。
私は発売初日からタイムトラベル無しで1年ほど遊びましたが、虫や魚を全部集めて、お店のカタログコンプした後はほぼノータッチでした。
しかし最近ある日、ふと「あつ森でBot作れないかなぁ…?」という願望(笑)ができ、APIがないか調べてみました。
そこからPythonでゲームにメッセージ送信できるGUI「ACNH_Chat_Client」というものを知り、その動作の様子や仕組みに感銘を受けて無事再燃しました\( 'ω')/
一方で、このプログラムの最終更新は4年前となっており、ソースコードを確認したところ、現在では仕様が変更された・動作しなくなったAPIも含まれていました。
そこで、このプログラムをベースに現行のバージョンでも動くようAPIを解析し、改変したプログラムを記載するとともに、苦労したところを備忘録的に今後まとめていきたいと思います。
今回はその前準備としてプロキシツールを使ったAPI解析を行います。
前提
APIを解析するにあたり、「mitmproxy」というプロキシツールを使用します。
このプロキシツールは開発者向けにPython APIが提供されていることが特徴で、pip
インストールでもセッティングできます。
ですが、今回は環境構築をする必要がないコマンドラインを使う手法で試していきます。
mitmproxyをインストールする
この記事ではiOS向けの解説となります。
Androidの場合、現状多くの端末(Android7.0>)は、Google社の方針でセキュリティが強化されたため、Root化しない限りmitmproxyは動作しません。
しかしながらAndroidエミュレータを使用する方法もあります(今後執筆予定)。
もし可能であれば、下記参考文献「mitmproxy instructions」(英語)に方法が書いてあるのでチャレンジしてみてください!
1. 以下のサイトでmitmproxyのインストーラをダウンロード、インストールを行います。
macOSの場合は「Homebrew」を使ってインストールします。
brew install mitmproxy
2. PCのIPアドレスを確認します。コマンドプロンプトから、ipconfig
と打ち込むと構成情報が色々出るのでその中の「IPv4 アドレス」をメモします。
macOSなら、ipconfig getifaddr en0
で。上手くいかなければ、en0
をen1
に変えて試してみてください。
3. PCの方で「mitmweb」を開いておきます。
4. スマートフォンのネットワーク構成を変更します。
-
iOS
「設定」>「Wi-Fi」からi
をタップし、一番下にあるHTTPプロキシの構成を
「手動」に変更します。
「サーバ」は、手順2でメモしたIPアドレス、ポートは「8080」にします。
5. スマートフォンで初回設定を行います。
-
iOS
スマートフォンで証明書をインストールします。
「 http://mitm.it/ 」と入力し、OSにあった「.pemファイル」をダウンロードします。
「設定」>「一般」>「VPNとデバイス管理」から「mitmproxy」を選択、構成プロファイルをインストールしてください。
加えて、「一般」>「情報」>「証明書信頼設定」から「ルート証明書を全面的に信頼」するのも忘れないように!
ここまでで前準備は終わりです!
Try!
1. PCで「mitmweb」を起動、スマートフォンでは「Nintendo Switch Online」を起動、必要に応じてログインをしておきます。
2. おなじみのホーム画面が出るので「あつまれ どうぶつの森」を選択します。
3. タヌポータルが起動しますが、ここで「mitmweb」を見ると、今回はあつ森関係のAPI(URLにacbaaが入っている)と通信している様子が確認できます。最後が「auth_token」で終わるAPIを確認してみましょう。
4.通信に関する詳細情報が表示されるので、上のメニューを「Request」から「Response」に切り替えます。
下にJSONが返されているので、ここのtokenがあつ森APIのトークンとなります!!
トークンの有効期限は2時間です。
もし切れた際は、ホームから入り直せば新しいトークンを入手できます。
5. 「ACNH_Chat_Client」でテストしてみます。
無事、PCで入力した「Hello World!」が送信されていますね。
ちなみにスマートフォンでメッセージを送信する際、「mitmweb」を確認すると、メッセージ送信用のAPIが用意されており、bodyに入力した文字列が格納されたJSON型で送られていることが分かります。
まとめ
お恥ずかしながらあつ森を熱心に遊んでいた頃は、プログラミングのプの字も知らなかった者です()
しかしこうしてプログラミングに興味を持ってから色々調べてみると、今まで何気なく使っていたツールがAPIで成り立っていることを知り、感慨深いものがありました。
次回また時間があれば、「ACNH_Chat_Client」の修正版を置いておきます。