Ever been banned? Banned even using the most premium of scripts? Banned while only botting for a couple hours? Well, I have a theory as to how JaGex is distinguishing humans from bots apart from injection. Before I go further, let me brief you on something most programmers know and most others don't.
Let's say you're cutting maple logs at Seers. The moment that tree is cut down, I have a feeling JaGex takes note of the time that action was completed as such:
21:59:46: Your tree was cut down. (completed action)
JaGex may also take note of the time you begin your next action and what it does.
Then you click on the next tree available, or in this case, the same tree after it respawns:
22:00:16 Player begins cutting another tree. (new action initiated)
We find that the difference in time the action was complete and the next action was initiated is 30 seconds (21:59:46 + 00:00:30 = 22:00:16).
Imagine doing this for hundreds of hours and that difference between completed action and next action is ALWAYS 30 seconds. Pretty predictable and bot-like, wouldn't you say?
To counter this, most programmers would know to wait a random duration after the completed action before starting the next one. The code in bot scripts have something along the lines of "Sleep(1-6);". What this entails is the bot to wait anywhere from 1 second to 6 seconds before starting the next action.
In theory, this would make it harder for JaGex to spot a pattern; however, it's just as easy to spot a bot-like pattern.
Throw a 6 sided dice 100 times. What's the probability that 1 was rolled? It'll be roughly the same as 2, 3, 4, 5, and 6 (~0.17 x 100 = ~17% chance for a number to be rolled)
As expected because rolling a dice should be random. The probability of each face of that dice should be the same as the next face of that dice. Nonetheless, human behavior is not nearly as related to the randomness of throwing a dice.
Humans are inclined to lean a particular way. So when it comes to time between completing tasks and beginning another, it's not going to look like the graph of 100 dice rolls. It may look more like this:
All while the graph of a bot might look like this:
I'm not much of a programmer myself, but this theory does have some merit to it. If you can add to this, please do so below. If you think this is a bad theory, please let me know why. Also, let me know what you think JaGex does to distinguish humans from bots.
What's the fix? How do you program "human behavior" into code? That's difficult; however, there may be an easy, temporary solution. Random numbers in the Java code currently are thrown through a Math method called a random number generator. Perhaps we could roll 2 dice instead of one and get something that looks a little more human-like: