Auto-clicker Detection
The detection of non-human automated software interactions is a task that many game companies take seriously to ensure fair play among all users.
Recently, a friend approached me to create a non-detectable auto-clicker—software that clicks at a specified location every “X” milliseconds. This post does not endorse the use of auto-clickers or any software that performs unauthorized interactions within a game. Instead, it prompted me to consider: “If I were a developer at a game company, what detection methods would I employ to distinguish between human and automated interactions?”
This question sparked several weeks of research and development in this area. While the project was limited due to time constraints, I believe that machine learning could have significantly enhanced the detection algorithm if given more time. A well-formed noise function could be generated through supervised learning against the auto-clicker.
The Requirements
The game I targeted (for purely research purposes) allows users to click the same spot repeatedly for hours to perform productive tasks. This creates an opportunity for a simple auto-clicker to be developed. However, coding one that mimics human behavior is more complex.
Results
There is still significant room for improvement, as this project was primarily for fun and research. The following graphs compare real human clicking data with the data recorded from the auto-clicker attempting to mimic human behavior.
Real human data, mapping time between average clicks over time for 50 seconds
Auto-clicker data, mapping time between average clicks over time for 50 seconds
Detection Methods
Time Between Clicks
To mimic realistic variations in the time between clicks, I utilized 1D Perlin Noise to fluctuate the average time over a long-term trend, combined with a small variation calculated by a non-deterministic random generator.
Breaks
Random breaks were incorporated to simulate human behavior, as no human would click indefinitely.
Click Hold Time
An often-overlooked factor in auto-clicker design is the duration a mouse click is held down. This can vary and also uses a non-deterministic random generator. However, depending on the game’s software, precision may be limited to 16ms (60 FPS), making this factor less critical.
Source code
The source code can be found here.