Yes. That polling is more likely than not one of the roots of the problem. You have X accounts logged in concurrently, and given the above I'm guessing you don't use any kind of self-rate limiting to avoid 15-30 of those bots trying to request the confirmations at the same time if they happen to finish the 60 second loop at the same time. If you log in a bot, start that timer, then log in the next bot, then start that timer. You're only giving a few seconds of actual limiting to your requests and that's where the 429s come from. Thousands of people writing bad code like this is by its definition a DDoS because it fills valve's servers with requests to the extent that it starts missing caches, returning errors or otherwise acting strangely. Binding each bot to a new IP is going to make it work, but good luck fixing the next throttling policy valve implements because of this stupidity. Because having a new IP doesn't change the simple fact that you have bad polling code. It just means you're fooling valve's checks. And they're going to care more about their own systems functioning for their own purposes before they consider the community's projects. Eventually "hurp durp I'll just spam some more from a new IP" isn't going to matter anymore when they finally decide to enact a global captcha policy or something of the like because of exactly the same kind of abuse and rate limit bypassing you're doing. Given that browsers don't work like this and that there is a massive difference between concurrent requests to download assets and concurrent requests to download dynamic pages, that's not a very applicable statement. But okay. Let's pretend for a minute that browsers did work like what you're doing. The closest equivalent I can think of would be a site that started 1 timer X times to pull a different URL through ajax. Does starting 20 (just as an example number) near-concurrent ajax requests seem like normal browser behavior to you or insane spamming? Well, consider Steam Inventory Helper and the fact that there's now a new captcha on the pages it abused. Valve accidentally gave a useful way of sending trades as a byproduct of their new system. Mckay wrote one of the better libs implementing them. I assumed this statement was self-explanatory.