【簡易版】Windowsだけでsplatnet2statinkを使ってスプラトゥーン2の戦績をstat.inkに自動で登録する【導入/利用編】

前回紹介した、stat.inkを使うのに必要なツール「splatnet2statink」の導入と使い方を紹介。

スプラトゥーン2の戦績をWeb上に登録できるサービス「stat.ink」が便利
スプラトゥーン2を買って以来ダラダラと遊んでるんですが、「stat.ink」という便利なWebサービスを使っているプレイヤーが少ないようなので紹介。 stats.inkとは スプラトゥーン2は、[...]

Cookie生成に関する注意事項

導入手順に入る前に説明しておくと、splatnet2statinkで戦績データを取得するさいには、NSOアプリが行なっているように任天堂のサーバーにアクセスし、NSOが取得しているのと同じデータを取得してます。

splatnet2statinkでNSOにログインするには、「iksm_session」と呼ばれるcookieが必要になります。現在のsplatnet2statinkでは、そのcookieの自動生成機能が実装されていますが、それを利用する上で注意が必要です。

ということで、以下がsplatnet2statinkのNSOログイン情報の生成についての注意。

githubの注意書きを読んで、内容とリスクを理解した上で、残りのセットアップ手順を続行してください。以下に簡単ですが意訳しておきます。

現在のNSOでは、セキュリティ強化のため、cookieを生成するにはメッセージ認証コード(fトークン)が必要になっています。このfトークンの生成が難読化されていてスクリプト内で生成するのは困難であるため、AndroidサーバーでNSOアプリをエミュレートしてfトークンを生成するという回避手法が考案されました。

この回避手法におけるfトークンの生成では、任天堂がリクエストの信頼性を検証するためにハッシュ値も必要となります。このハッシュ計算のアルゴリズムはNSOアプリ内で行われていますが、そのアルゴリズムをスクリプト内に実装するなどして公開してしまうのは問題がある(任天堂から公開停止を通達される恐れがある)ため、開発者のeli fessler氏はハッシュ値を生成する小さなAPIを作り、これをAndroidサーバーと組み合わせてfトークンを生成し、iksm_sessionのcookie取得に使っています。

このため、splatnet2statinkを利用する上では、任天堂のものではない「2つのサーバー」にデータを送信することになります。

eli fessler氏の本件に関する個人情報に関する方針は以下の通り。

「ユーザーの識別情報(ユーザー名とパスワードのような)がAPIサーバーに送信されることはなく、APIサーバーが吐き出すハッシュ値も記録されたり保存されたりすることはなく、意味のある情報は含まれません。そのため、送信または保存されたデータから、どのアカウント/ユーザーがリクエストを実行したかを識別したり、ユーザーに関する識別情報を表示したり、アカウントにアクセスしたりするといったことはできません。詳細はAPIドキュメントのWikiページを参照してください」

ということで、上で書いてある内容も全然意味がわからねぇという場合は、使うのはやめたほうが良いです。

splatnet2statinkの導入手順

前置きが長くなりましたが、以下が導入手順。作者が書いている通りインストール方法として簡易版なので、Python環境やらが整っている場合は、従来通りスクリプトで導入したほうがいいと思います(Windows版のバイナリにアップデートを確認する機能があるのか不明だったりするので)。

なお、以下は全てWindows 10上で使う場合の話です。Macはターミナルで同じような作業をすれば良いんじゃないでしょうか。

まず導入前に必要なものは、Windows 10の動いているPC、ニンテンドーアカウント、stat.inkのアカウント。用意できたら、最初にgithubで公開されているパッケージをダウンロードする。

ダウンロードしてきたzipファイルを任意の場所に展開する。今回は分かりやすいようにUserフォルダのMy Documentsフォルダの下に「splatnet2statink-v1.4.2-Windows」フォルダとして展開してます。

展開したら、この後に必要になるのでファイルパスをコピーして控える。

スタートメニューを開いて「powershell」を入力&検索、Windows PowerShellを起動する。

PowerShellが起動したら、先程コピーしておいたファイルパスをコピペ(Ctrl+Vも使えますが右クリックでもペーストされる)。先程控えたパスはディレクトリ名まで(C:\Users\ユーザー名\Documents\splatnet2statink-v1.4.2-Windows)なので、最後に「\splatnet2statink.exe」を加えて、「C:\Users\ユーザー名\Documents\splatnet2statink-v1.4.2-Windows\splatnet2statink.exe」としてsplatnet2statink.exeを実行(Enterを押す)する。

この時、PowerShellから「.exeを実行したいなら~\.\splatnet2statink.exeにして許可しろ」的な警告を受けたら(多分受ける)、指示に従って「C:\Users\ユーザー名\Documents\splatnet2statink-v1.4.2-Windows\.\splatnet2statink.exe」としてもう一度実行する。

起動したら、stat.inkと連携するためのAPIキーを要求されるので、stat.inkからAPIキーをコピペする。

ちなみに、この初回起動時にsplatnet2statink.exeのあるフォルダにconfig.txtが生成されて、設定した情報が保存される。

Enterを押すとロケールの選択を迫られるので、「ja-JP」を入力してEnterする。

URLが表示されるので、コピーしてWebブラウザに貼り付けて移動。

ニンテンドーアカウントへログインする。

連携アカウントの選択画面になったら、連携したアカウントの「この人にする」ボタンを右クリックして、リンク先のURLをコピーする。

PowerShellに戻って、paste it blow:のあとにさっきコピーしたURLをコピペしてEnter。

config.txtに情報が保存され、cookieの生成処理が走ってNSOからデータを引っ張れるようになる。最新何戦の戦績をstat.inkに登録するか訊かれるので、0から50まで好きな数字を入れてEnterすると、stat.inkへアップロードが始まる。

指定した戦績の登録が終わったら勝手にsplatnet2statink.exeは終了するので、それまで放置して、終了したのを確認したらPowerShellも閉じる。

導入と初回セットアップは以上です。

splatnet2statinkの使い方

んで普段使うにはどーすんのって話ですが、普段使う時もPowerShellで「C:\Users\ユーザー名\Documents\splatnet2statink-v1.4.2-Windows\splatnet2statink.exe」を叩いて使います。

ただし、引数を渡してやらないと動作モードを選べないので、目的別に引数を渡して起動してやる。ちなみに引数の前には半角スペースを挟んでやる必要がある。

まず1つ目の引数が「-M 任意の秒数」で、定期的にデータを取りに行ってstat.ink未登録の戦績があったら勝手に登録してくれるモニタリングモード。「\splatnet2statink.exe -M 300」のようにすれば、5分(300秒)毎にデータを確認してくれる。モニタリングを終了したいときはCtlr+Cで終了する。

監視間隔は300がデフォルトで、数字を入れなくてもよし。というか極端に短い秒数なんかにすると任天堂からbotが大量アクセスしてると思われてブロックされそうなので、下手に弄らなくて良い。ガチマの制限時間が5分である以上、それ以下にする意味もないので。

2つめが「-r」で、これはstat.inkに最新50戦に未登録の戦績があるか確認して、もしあればstat.inkに登録してくれる。

3つ目が「-s」で、これは戦績結果で自分以外のプレイヤー名前を匿名化して、stat.inkにその情報を送らないというもの。

4つ目は「-t」ですが検証用の引数なので説明は割愛。

5つ目が「--salmon」で、サーモンランのバイト結果を取得/stat.inkに登録してくれる。

普段使う時は、まずスプラトゥーン2でバトルする前にPowerShellで「C:\Users\ユーザー名\Documents\splatnet2statink-v1.4.2-Windows\splatnet2statink.exe -M -r」で起動して、未登録戦績をアップロードしつつ、監視モードで起動させておくと、そのままガチマに潜るなりリグマするなりナワバリを荒らすなりすれば、勝手に戦績がアップロードされます。

バイトのときは1戦ごとに監視する意味もないので、splatnet2statink.exe --salmon -rで、1,200のノルマ達成とか、バイトを終えるときに一括して登録しておけばOKかと。

ちなみに、PowerShellは過去に入力したコマンドをカーソルキー上下で呼び出せるので、毎回フルパスと引数を叩かなくてもカーソルキー上を数回押してEnterでサッと使えます。

ということで、stat.inkとsplatnet2statinkの紹介でした。みんなも使おう。

シェアする

スポンサーリンク