/POGOserver

:rice_ball: Pokemon GO Server Emulator

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

                              ______ _____ _____ _____                               
                              | ___ \  _  |  __ \  _  |                              
                              | |_/ / | | | |  \/ | | | ___  ___ _ ____   _____ _ __ 
                              |  __/| | | | | __| | | |/ __|/ _ \ '__\ \ / / _ \ '__|
                              | |   \ \_/ / |_\ \ \_/ /\__ \  __/ |   \ V /  __/ |   
                              \_|    \___/ \____/\___/ |___/\___|_|    \_/ \___|_|   
Stability

Getting started

Setup

Copy and rename cfg.js.example to cfg.js.

Open cfg.js and fill the following fields:

DOWNLOAD_PROVIDER: "GOOGLE";
DOWNLOAD_USERNAME: "USERNAME";
DOWNLOAD_PASSWORD: "PASSWORD";

Tunneling setup

The pokemon go app traffic has to get forwarded manually to this custom server. Download rastapasta's Pokemon Go Xposed app and follow the installation instructions here.

Database setup

To setup a database connection, open cfg.js and change the database login credentials:

MYSQL_PORT: 3306,
MYSQL_HOST_IP: "127.0.0.1",
MYSQL_DB_NAME: "pogosql",
MYSQL_USERNAME: "root",
MYSQL_PASSWORD: "",

The required database tables get generated automatically.

Proxy Setup

Newer versions of Pokemon Go application have negated the custom endpoint support of rastapasta's Pokemon Go Xposed app. But the certificate pinning bypass still appears functional.

Based on a rough dissection of rastapasta's pokemon-go-mitm for reference, an MITM proxy server, PAC generator and cert downloader have all been added.

Multiple client connection/configuration options are available:

  • (Android) Settings->Wi-Fi->[Connect]->Advanced Options->Proxy->Proxy Auto-Config http://<server_ip>:<web port>/proxy/pac
  • (Android) Settings->Wi-Fi->[Connect]->Advanced Options->Proxy->Manual: Proxy hostname <server_ip>, Proxy port: <proxy port> (May require CA cert)

In-case the client device needs the CA cert: http://<server_ip>:<web port>/proxy/ca.(pem|crt|der)

Server setup

You need at minimum Node.js version 6.x.

Open up a terminal and enter npm run boot to start the server or npm run api to start the web-api.

Docker setup

  1. Download Dockerfile, cfg.js.example and supervisord.conf from github.
  2. Place Dockerfile, cfg.js.example and supervisord.conf into the same folder. Rename cfg.js.example to cfg.js.
  3. Modify cfg.js to your requirements as described above.
  4. Create a container and run it.
  5. Open a bash prompt, enter: cd /POGOserver/ and enter npm run boot.
  6. Connect the Pokemon Go app to the server.
  7. Done.

Note: Instead of automatically mapping the ports, map them static, so they don't change after reboot.