週末はいつも晴れ

社会人3年目の日記です。プログラミングとか旅行とかラーメン。

ポケモンGO iPhone 歩行自動化(idevicelocation, 脱獄なし)

※すべて自己責任のもと実施のこと
※ちなみに私はやり過ぎてストライク1を食らっています。

結構ハードルが高いですが、ポケモンGoの歩行自動化方法を紹介します。

はじめに

前提条件

流れ

  1. XCodeとhomebrewのインストール
  2. ideviceloationのインストール
  3. 歩行自動化

XCodeとhomebrewのインストール

最も簡単です。以下等を参考にインストールしてください。
qiita.com
XCodeでは空のアプリケーションを作成する等で、usbケーブル接続中のiPhoneにアクセスできる状態にしておく必要があります(結構重要)。

idevicelocationのインストール

少し大変です。以下等を参考にインストールします。
以下のリンクだけでは情報が足りないので、後日補足説明を加えます。
qiita.com

歩行自動化

idevicelocationの使い方

idevicelocationはusbケーブルを通して接続されたiOSバイス(iPhone等)の位置情報を変更することができます。
idevicelocationには以下の2つの情報を渡す必要があります。

位置情報は【ポケモンGO】みんポケ等で決めてあげてください。
iOSバイスのIDは`idevice_id`というコマンドで取得します。

$ idevice_id -l

上記のコマンドでは接続されているすべてのiOSバイスの一覧が表示されます。
通常は1台しか接続しないと思いますので、上記のコマンドをそのままidevicelocationにわたすことにします。

$ idevicelocation 経度座標 緯度座標 -u $(idevice_id -l)

これによってポケモンGoを含むGPSを使用するアプリケーションすべてにおいて、
位置座標が変更されていることが確認できます。

変更後は位置座標が固定されてしまいます。
元の状態に戻すには、以下のコマンドを使用します。

$ idevicelocation -s -u $(idevice_id -l)

pythonスクリプト

歩行を自動化するには、連続的に位置情報をidevicelocationで与え続ける必要があります。
書きかけ

注意事項

テレポートによるソフトBAN

瞬時に座標が変更されると、以下のように一定時間の間ポケストップが回せなくなり、ポケモンが一投目で逃げるソフトBANが発生します。
高速移動ペナルティ(ソフトBAN)対策 – PokemonGO Hacks
このため、座標を現実的な速度で移動させる等の工夫が必要になります。

移動速度

私のTry & Errorでは、2.6m/sあたりを境に歩行距離がカウントされなくなり、卵が孵化しなくなりました。
また、10m/sあたりを境にポケストップを回せなくなりました。

その他

さらにgotchaやauto catchのようなデバイスを使うと、
歩行だけでなくポケモン収集やアイテム収集も自動化されます。