I was on my way to being an eve trillionaire once. I hacked the game client to make a network of market arbitrage bots. They had human reflexes and took frequent breaks, ate, slept, even took vacations. I had a quarter trillion isk in assets and cash by the time I was detected and banned. OracleOfJita was my main account. Eve is a pretty crazy game with an insane learning curve. Thanks to being a python veneer over a bunch of network services, it's also very amenable to automation.
Some of the hacks on the eve client you would not believe they were very impressive and who knows what some of these alliances are running now
Now EvE servers (as all MMOs should) log every request from the client but this little hack went for 6 months without it being caught. They used the internal web-server in eve to stream a copy of their display to a website. This is 2005 maybe a little later. I guess now adays this is not that impressive and stuff but 2005 it was so useful.
The idea was that we could have one 'page' where we would collect the feeds from different scouts. It worked
CCP banned the developer once they caught it, they were rather reasonable, if he wanted to reinstate his account they wanted copy of his code. They then told him what rules it broke and even recommended how he can make changes to his code to stop the violation. They were really rather good about it.
The line was at the time that you could modify the client as long as you did not modify the way it handles data between the server and the client.
I did something similar thing with Python and Guild Wars 2, probably not as advanced though. It would place buy orders for under priced wood logs which were brought very quickly, and then sold them when the market price fluctuated higher.
Fifa Ultimate Team is easily gameable as well, the web frontend uses a surprisingly well made API which makes it super simple to automate trading of cards. It was interesting to see how the PS3 and XBox economies differed (a lot).
Python is surprisingly awesome for such tasks I find.
Python still lets you get working code faster than anything else; it tends to be less maintainable in the long term / large codebases than something with a stronger compile-time type system, but with this kind of small bot you're likely to completely rewrite it as the API changes rather than wanting to maintain and add features to a codebase.
This has been my experience with python. When I was younger I wanted the fast out iteration times and speed of coding. Now that I work on a large python project I really miss having a compiler. Go offers a great tradeoff with fast iteration time and good speed of coding while scaling to large teams and codebases well. I actually find the iteration time faster than python because the tests run so much faster.
If you don't mind my asking, how did you go about mankind this? How did you go about unearthing the API?
This type of tinkering seems like something I'd REALLY enjoy playing with! But I've no idea how to get started. I'm just a back end developer who lives tinkering but doesn't quite have the expertise.
If the website has an API, just use it directly. If not...
Load up the website in question, open your browser's debug tools' network tab, and perform each action that you'd like to be able to programatically do. Record the destination host/path, request type, and all the params that can be sent to it. Then, implement a function in your language of choice for each action that you want to be able to do (some actions require multiple requests).
Package up the functions into a class/library/whatever and extract out common functionality. Then post it on HN for lots of karma and feedback.
For a simple starter task, create an account on http://www.nationstates.net and write a bot which logs in each day and randomly picks a choice for each decision you are asked to make for your country.
Even easier way to log requests is to use something to man-in-the-middle your own connection, like MITMProxy (which, coincidentally, is written in Python).
I've used it a lot to unearth APIs and make programs that utilize them.
In Guild Wars 2's case, there's a significant portion of the API made available to the public, including the trading post. https://wiki.guildwars2.com/wiki/API:Main
I don't believe this includes "write" operations like buying or selling, but since the in-game trading post communicates through the same web-based, it probably wouldn't be too much of a stretch to piece it together.
I attached a small DLL at runtime which just called pyeval with a little bootstrap REPL running over a socket. Then I'd connect to it and use pythons introspection abilities to poke around the internal services and their methods. It took some tinkering, but I have no reversing or hacking experience, so it wasn't that hard.
back in 2007 I did something similar on Travian[0], but my bot was made for taking game decisions. The game mechanics was send attacks, gather resources, and develop cities .. the bot was playing so automated that I lost the interest in the game itself, and stopped playing
At the end I was probably close to 10% of market volume, by number of trades, in Jita. No way to hide that. There were also players speculating on the forums that I was a bot.
The requests were pretty opaque, so I reversed the service object APIs instead. There was no documentation, but with some experimenting I figured out how to call them. Python inspect helped a lot.
A PLEX goes for $17 purchased from CCP directly in bulk and ~850M isk (isk = game currency) in the game. So if you have 1 trillion isk / 850M isk, that's 1176 PLEX (which have the utility of giving you 1 month free playtime, redeemable any time in game), and it's theoretically $19,992. Re: cashing it out: Maybe... but good luck finding a buyer at anything like $20k
I was planning to, I had a site setup for buying blackmarket isk and an untraceable distribution plan. I was still growing by 10% a day so even conservatively that could have been a six figure income, assuming sufficient market demand.