-
Private
Weird... I made a write up to help explain what an API change means (in a oversimplified way...). o.O it still hasn't appeared in this thread. 
------
Let's try this... (Explanation/write up kept getting deleted? Not sure why...)
------
So, hopefully to bring some light to what this "API HAS CHANGED!!!!!!" means. - This is an oversimplification. Though, if you're curious, at least a place to start from and dig deeper.
https://en.wikipedia.org/wiki/Applic...ming_interface
In a gist, it's a way to interact with an application programmatically - through method/function/procedure calls, in your code (the bo.
Most common/widespread form, or rather one that you might have encountered, of APIs come in the form of Web APIs. That is a webserver serving up content - provided you go to the right place.
So, let's say for instance, Niantic has a webserver with the domain "api[.]pokemongo[.]com" (made up). You can browse to it using your browser ("hxxp://api[.]pokemongo[.]com/" - fake, don't browse, it's just an example) and get some sort of response.
Now, say you wanted to get all the pokestops in New York.... An (web) API call would look something like (most likely doing a GET HTTP request, maybe POST request):
hxxp://api[.]pokemongo[.]com/v1/pokestops?city=NewYork
It will then give you back some information... say:
{
"PokeStops": [
{
"Name": "Example pokestop 1",
"Description": "Some sort of description",
"DefaultLatitude": 0.0,
"DefaultLongitude": 0.0,
},
{
"Name": "Example pokestop 2",
"Description": "Some sort of description",
"DefaultLatitude": 0.0,
"DefaultLongitude": 0.0,
}
}
Looks fimiliar, right? Yup, it's the same data-exchange language used to make up your config files - called JSON. Typically Web APIs serve back in JSON, maybe XML, maybe their own "cryptic" looking language/protocol. The nifty thing about JSON and why it's used for your config files is that it's easy for you to read and modify AND it's easy for a machine (computer, your bot) to read it, understand it, and create an object out of which it will then use with ease.
So... what does it mean that APIs have changed...? Well, could be as simple as a different pathing in the URL for instance:
hxxp://api[.]pokemongo[.]com/v2/prevent/all/bots/stopsPoke?city=NewYork
Or it could mean that that JSON you get back looks different, for instance:
{
"PS": [
{
"N": "Example pokestop 1",
"D": "Some sort of description",
"Lat": 0.0,
"Long": 0.0,
},
{
"N": "Example pokestop 2",
"D": "Some sort of description",
"Lat": 0.0,
"Long": 0.0,
}
}
It could be a combition of the two.
Seems simple right? So why would it take more than an hour to do? (Besides most people having lives or needing to eat and take breaks)
Well, besides pokestops, what else exist in the Pokemon GO? Pokemon, they too have JSON/object representations. Items, your character, your profile, the list goes on. And perhaps they're placed different in the URLs like:
hxxp://api[.]pokemongo[.]com/v2/prevent/all/bots/stopsPoke?city=NewYork
instead of what the current bots are using:
hxxp://api[.]pokemongo[.]com/v1/pokestops?city=NewYork
While the bot itself, the logic that makes it walk, makes it do things, is there and should be fine... it's no longer in synce with how Niantic chooses to represent their PokeStops, or which URL it is for them.
Of course, Niantic probably doesn't want people to bot... so they won't come out and say "HEY GUYS!!!! We changed our APIs, here are the new ones, bot away!" - so the bot devs will have to figure it out on their own - maybe through trial and error, maybe through clever ways.
Hope that made sense :P (This is oversimplified, just to help you guys understand what "API changed" means)
---
Edit:
Obfuscation, could mean various things. Typically said that there's no security from obscurity - since it's only a matter of time till someone deobfuscates whatever you're hiding and sees it in plain.
So, in terms of code (javascript for this example), we can take something like:
console.log("I play pokemon go")
Apply various obfuscation techniques (use: http://www.danstools.com/javascript-obfuscate/index.php) ... to get:
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1.0("2 3 4 5")',6,6,'log|console|I|play|pokemon|go'.split('|'),0,{}))
Both of the above bits of javascript do the exact same thing (print out "I play pokemon go"), the difference is that no sane person would be able to read (or maybe spot ...) what the second one does.
Or for instance, given the hash (MYSQL5 hash? 41 characters... weird
):
b1f2bf509a025b7cd76e1c484e2a24411c50f0612
We can use it to XOR a message, say "Hello World", using http://xor.pw (set things to ASCII, put hash in 2nd box, message in first) and get:
6231663262663530396130323562376364373665316334383465326132347c545d0f5a10315f445d 56
Which is "Hello World" xor'ed with "b1f2bf509a025b7cd76e1c484e2a24411c50f0612". Those that know the XOR key will be able to understand that giant string of gibberish (by reapplying the XOR key to the giant string), while those that don't, won't. You can also get the XOR key, knowing that the message is "Hello World".
Though this is a type of weak cipher - even simplier one would be Caesar cipher, which "shifts" letters by a certain amount of letters (so say A changes to C and B to D, and D to F, which is two "shifts").
Pair obfuscation, with "URL paths" and JSON/objects changing... and you got yourself a nightmare to reverse (or a fun puzzle, depends on how you look at things).
Again, just explaining it relatively simple concepts...
Haven't touched any of the code for any of the bots - or the API implementations they use to communicate with the official servers. (READ: I'm not a bot dev - just a dev during my day job).
Last edited by ZeroDayGhost; 08-03-2016 at 07:46 PM.
Reason: Wanted to explain what web API changed means.
-
Post Thanks / Like - 9 Thanks
-
Private
Considering Niantic doesn't make the API. Your knowledge is pretty much bullshit.
-
Private
Originally Posted by
Karneey
Considering Niantic doesn't make the API. Your knowledge is pretty much bullshit.
Me?
That was a simplified example. :| gone missing again.
-
Member
Originally Posted by
Karneey
Considering Niantic doesn't make the API. Your knowledge is pretty much bullshit.
Did you read the post or you just flaming for no reason?
Niantic seems to have canged the way that the game "speak" with the client(writing like that to help newbie to understand) so we need to wait untill someone develop a new working api.
-
Member
not sure if op is a badass 1337-h4x0r or just copied necro statement
-
Member
Originally Posted by
dermeix
not sure if op is a badass 1337-h4x0r or just copied necro statement
No need to be an "h4x0r" to understand what's going on right now.
-
Member
Originally Posted by
ZeroDayGhost
Weird... maybe a write up to help explain what an API change means (in a oversimplified way...). o.O it still hasn't appeared in this thread.

The interface/protocol between the client and the Niantic server changed. Apparently Niantic equipped the apps with the new protocol without devs noticing. So they now enforce the new way of communicating with the server that is already in the app but not yet figured out by 3rd party devs.
Originally Posted by
Karneey
Considering Niantic doesn't make the API. Your knowledge is pretty much bullshit.
That is like the most stupid sentence I've come across on this board yet. Your post is bullshit and sounds like you don't even know what an API means. Obviously OP was talking about the official API which seemingly changed.
Last edited by iFlame; 08-03-2016 at 05:14 PM.
-
Sergeant
You're all so immature I swear. Stfu and just wait and stop acting like you guys know it all. OP said what's going on. Deal with it and wait.
-
Member
for whatever reason, I cannot use pokestops. Anyone know why?
-
Private
Ok let's do this.
API is something like software hosted on Niantic server which respond to our application.
Basically you calling command in for example NecroBot something like "getToken":
1. NecroBot sends to API server your login and password
2. API is checking in account database
3. API send to NecroBot state which could be "invalid", "notactivated"(etc.) or correct and then NecroBot gets token.
4. NecroBot doing a "login" command which sents the token we got from API to the game server
5. After that in Pokemon game server our account is logged in.
Similiar proccess is for walking catching getting pokemons - actually everything in bot is working like I explained few lines up.
And Niantic changed the method for getting map objects
That's why the maps or bots are not getting any Gyms, PokeStops or Pokemons, because they can't got map objects from API.
At the end I'll show you the change at it's source. I wouldn't explain what these lines below means because trust me you wouldn't get it anyway:
POGORE1 - Pastebin.com - That's how the communication Application <---> API looked before change.
POGORE2 - Pastebin.com - And that's how it looks now - you can see completely different values.
So basically I tried to explain it to you as easy I really could.
If you got more question feel free to ask, I'll answer them.
And...
Originally Posted by
Karneey
Considering Niantic doesn't make the API. Your knowledge is pretty much bullshit.
Developers make unofficial API for doing bots and maps. Niantic have official API which source you'll never see. That's what developers are doing is recreating the official API which will never be the same as original.
EDIT: http://www.ownedcore.com/forums/poke...ml#post3515320 (POKEMON GO API CHANGE - Reason for not working bots maps) - Thanks to ZeroDayGhost - here you have explained it what means API change but on the example of unofficial API but it's good anyway.
My post is actually explaining the WAY API WORKS and it's about this change which was made today.
Last edited by Pepejson; 08-03-2016 at 05:23 PM.
-
Post Thanks / Like - 9 Thanks
-
Member
Originally Posted by
Ransu
for whatever reason, I cannot use pokestops. Anyone know why?
Read the answer below
-
Private
Originally Posted by
iFlame
The interface/protocol between the client and the Niantic server changed. Apparently Niantic equipped the apps with the new protocol without devs noticing. So they now enforce the new way of communicating with the server that is already in the app but not yet figured out by 3rd party devs.
....
Yeah, I meant to say "I made a write up to help explain...". It was an oversimplified write up, from a Web API perspective... :/ I posted it twice in this thread, now. Still hasn't showed up... wtf? Guess it was deleted... o well. So much for me contributing to the community.
-
Member
Originally Posted by
Pepejson
Yeah, give me it then. :P Just kidding don't do it
Wrote it with condition to avoid spam. I know it'll be most likely tomorrow.
I saw what you did when you edited it 15 min ago, you said your next post will be of a CLEAN bot release and use our old save and stuff, which is why you got 2 thankings there xD
Guess your attempt at the NecroBot failed so you are going to take more time.
-
Member
Thanks bro for your explanation and does this also mean the Rocket API need to be changed?
-
Member
Originally Posted by
Mich43
No need to be an "h4x0r" to understand what's going on right now.
it was ironic... all he wrote was written before
Last edited by dermeix; 08-03-2016 at 05:23 PM.