With the recent Banwave due to bots (my account was missed, which is why I created a new account to post anonymously here) I thought I would make a little post on how Bots are being detected. For those of you who know and don't care you can skip this post. Some of these are obvious, but still people ignore them.
1. Running the exact same bot non stop - obvious, no one will do a Sarkoth run for 24 hours a day 7 days a week.
2. Fast and continuously consistent run times - If your runs are the exact same time +- a few seconds all the time this will set of some red flags
3. Clicking the same pixel - if you only click in the same spot, or same small area (you have a random of +- 100 pixels), over and over your point density will be extremely consistent and easy to track.
4. Mouse moving in a straight line - nobody can move their mouse in a straight line, open a paint program and try draw a straight line, it's not possible at normal mouse movement speeds
5. Running to the same spot - if your char goes to the same spot every time you'll raise a flag
6. Doing things in the same order - if your char shoots left 2 seconds then right three seconds, then loots gems, then loots tomes, then loots rares, then loots magic, etc... the same each and every time it's obvious your running a bot.
7. Selling/repairing - if your selling empty squares, or repairing undamaged armor, and doing it each time you vendor, it's obvious your running a bot
8. Having the same program running each time you play - Some of the scripts make a random name for the app, but it's still possible to detect that Autoit or something similar is running each time you play.
9. Not looking at your gear - most scripts just sell as fast as they can, without ever "looking" at the loot
I'm sure there are less obvious things I'm missing but if the above were solved you probably would never raise a red flag.
To make a more effective bot you have to make the bot play the game not just run a series of scripts. Play the game and really watch how you play it, as you write your script make the script do the same thing you do. With that in mind here are few suggestions on addressing the above points.
1. Practice self control, only run the script a few hours at a time, and not every day. Your gonna play after supper and your favorite show is over, start the bot before supper and the hour or two your show is on, then end it and play, and if you do the same thing every day, DON'T RUN THE BOT EVERY DAY AT THE SAME TIME!
2. Make the run 50 or so time manually, record your run time. The bot should spend the same amount of time making the runs that you do, and should spend the same amount of time on each screen. You also have to throw in some random breaks, like you ran to the bathroom, like your texting with a friend, things that would take your hands off the keyboard.
3. Don't click the same pixel, pay attention to where how you click while playing and make the script do the same thing, if you hold the mouse down and move it while your char is walking your bot better do the same thing,
4. Make the mouse move in a natural manner, think bezier curves, you can't move the mouse in a straight line, it's pretty much not possible for a human to do this. You also can't hold the mouse still, it needs to jitter slightly when you think your hand is at rest. It's only about 5 lines of code to see if your mouse is moving in a straight line, I believe this gives most bots away.
5. Watch where/how you run, you probably have lots of variability in where your clicking, your bot needs to have the same.
6. This one is obvious you need to shake things up, make your movements actions much more random. vary where you shoot and which weapons. Go to town and randomize the order of stashing, salvaging, and vendoring. When stashing randomize between gems, tomes and gear, Do them different orders each time, (including gems, don't treat them as gems as a whole but as 4 individual items)
7. Obviously don't try to sell empty squares, don't repair undamaged armor, forget to repair occasionally do things you would do when actually playing.
8. Disguise the program you are running, don't have anything in the title the same when you run it, NOTHING! it's 1 line of code to get a list of running apps, you can be sure Blizz is doing it.
9. When you get gear you look at it to see if it's any good. Your bot has to hover on the gear so it can "evaluate" it, a good bot would actually see if it's better than what you have and swap it out or at least stash it. Heck even stash a random item or two.
Well I'm sure this post will get flamed but hopefully it helps result in some better bots.