Cracking Credit Generation
Spoofing the reading of articles!
There exist sites that reward the reading of articles with credits - traditionally only useful on the site itself for mainly bragging rights, though sometimes redeamable for perks and such. For users these credits accrue naturally, but for those that are time limited it takes an effort to collect these credits.
After being requested to automate the collection of these credits - to which I took up the challenge confidently - I started off by opening up the Network tab of my browsers developer tools during a number of real article readings, which after a number of variences in styles lead me to these rules for credits accruation :
- Article must have not been visited before
- Must remain on the page for at least two minutes
- Must scroll through at least half of the page
With this, and the fact that the articles in question were sequential in nature - as in the next one could be reached from a previous one - it was straightforward to write a userscript that would automate this for me.
As it could be obvious to anyone looking at the logs for this user there was some form of automation, I took a few steps to humanize it's behavior, first by padding out the two minutes on each page and randomizing it. Additionally I didn't click any links that weren't actually visible at the moment, and scrolled the page at a human-appropriate rate, calculating the number and size of scrolls needed to get to the end of the page in the randomly generated time it should take to complete the reading.
With that, I was able to leave the script running on a tab, watching the credits increment until the daily limit was reached, at which point the script halted as no new credits were being accrued.
While the actual code for the script might not be impressive, attempting to determine the rules of a black box system is always a challenge, one that despite the success of my script I can never truly know if I got it fully correct, but I got it correct enough for the development of my script, which is all that mattered!