top of page

Bypassing Anti-Automation Controls

Application Security

profile_edited.jpg

Alex Vaida

4 September 2026

In Brief

How threat actors are bypassing anti-automation controls to perform bulk or quick purchases.

Threat actors typically look for cost effective ways to bypass controls, with the rise in AI, automation has a much lower barrier to entry. This combined with other bypasses makes it easier for threat actors to subvert these controls. 

Protecting against automated attacks.

Understanding your business requirements and customer base is key to ensure the correct signals are used to defend against anti-automation attacks. 

​Rotation Economics: How Scalpers Beat "One Per Customer" 
robot.jpg

​

Automation has become, and continues to present, an issue for e-commerce businesses. In the context of highly desired items, where demand exceeds supply, bots have a significant advantage over humans and legitimate customers. They can locate and purchase inventory in seconds and often allow the operators to resell at a significant markup. The impact to online retailers ranges from increased infrastructure costs, customers being locked out, and support teams flooded with complaints.
 

Anti-bot practices are an industry-wide challenge, where the key problem is monitoring and identifying the correct signals which can attribute a stream of activities and events to a threat actor's identity. A signal is any piece of data that can be used to distinguish one customer from another, such as: email address, IP address, payment card, amongst others.

​This post approaches the problem from the offensive side, discussing why the signals which retailers lean on are the cheapest to rotate, what defeating anti-bot defences looks like in practice and why the cost of forging a signal is crucial in designing an anti-bot strategy. 

Rotation Economics
money-signal.jpg

Each signal has an attached cost to rotate that varies in terms of effort to implement and impact on the overall effectiveness of the automation. 

binoculars.jpg

A mature anti-fraud system will aim to correlate signals across the monitored activity and assign an increased weight to the signals with a higher cost of rotation. 

Signal

Rotation Mechanism

Cost to

rotate

Ties to real identity

Public IP Address

Residential proxy pools, mobile network rotation 

Negligible

Very weak

Email address

Sub-addressing, catch-all domains, disposable inboxes 

Negligible

Very weak

Account

Bulk-registered or purchased ahead 

Low

Weak

Payment card number

Single-use virtual cards, one per order

Low

Weak

Device/browser fingerprint

Anti-detect browsers, fingerprint spoofing

Moderate

Moderate

TLS fingerprint (JA3/JA4)

Impersonation libraries

Moderate-High

Strong

Delivery address

Shared office locations, PO Boxes - costly to use at scale and may only be used by established threat actors 

High

Very strong

IP Address Rotation
arrow-flip.jpg

A public IP address is the first signal most defences rely on. In practice, this is one of the easiest for a threat actor to forge and one of the cheapest to rotate at scale. A threat actor can leverage IP address rotation libraries to design distributed scraper bots. One such example is a tool that uses the AWS API Gateway to route each request through a pool of millions of AWS addresses.  

​

Using this approach, orders placed against an e-commerce site are indistinguishable by network origin alone and rate-limiting purely by IP address risks blocking genuine customers who share an address behind a Carrier Grade NAT.

import requests 

from requests_ip_rotator import ApiGateway 

  

TARGET = "https://target.com" 

  

gateway = ApiGateway(TARGET) 

gateway.start() 

  

session = requests.Session() 

session.mount(TARGET, gateway) 

  

r = session.post( 

        f"{TARGET}", 

        json={...}, 

        headers=headers, 

    ) 

JA3/JA4 Fingerprint
fingerprint.jpg

Relying on an IP address provides a weak single indicator for detecting automated activity, as it can be easily changed. A more useful approach is to monitoring what does not change when the IP address does, as an automated system can reprovision their network layer with ease. However, the software issuing the requests carries unique fingerprint, which is difficult to change. 

​

JA3/JA4 is a fingerprint that identifies TLS clients based on their advertised cipher suites, extensions, and connection parameters. This is a property of the application issuing the connection and not the underlying network, and each client type, whether it is a browser, web application or script presents a unique identifier. 

​

Libraries such as tls_client are used by threat actors in practice to impersonate the TLS fingerprint of a real browser instead of disclosing the underlying requests library. 

import tls_client 

  

def make_poster(kind, identifier): 

    if kind == "requests": 

        s = requests.Session() 

        return lambda: s.post(TARGET, data=b"", headers=HEADERS) 

  

    if kind == "curl": 

        s = CurlSession() 

        return lambda: s.post(TARGET, data=b"", headers=HEADERS) 

  

    if kind == "tls_client": 

        s = tls_client.Session( 

            client_identifier="chrome_149", 

            random_tls_extension_order=True, 

        ) 

        return lambda: s.post(TARGET, data=b"", headers=HEADERS) 

What This Means in Practice

​​

There is no single winning signal and when monitored in isolation any of the measurable signals will fail. Public IPs are almost free to rotate, the TLS fingerprint can be spoofed, accounts can be created in bulk and virtual cards can be generated inflight.  

​

For example, multiple orders coming from a single residential IP represents a weak signal in isolation. These can be legitimate users coming from the same Carrier Grade NAT, ordering a product on launch day.  

order1-2-onearrow.png

A more effective approach is to link activity across the signals that are the most expensive to rotate and cause the most friction in the threat actor’s automation toolset.    An order that rotates every cheap signal but reuses a single expensive one can be attributed to the same identity with high confidence. 

​

Multiple orders originating from different IP addresses, which share the same JA3/JA4 Signature, the same persistent cookies and Device Fingerprint and the same normalized Delivery Address are a strong indication of an automated attempt. 

order1-2-threearrow.png
Rotation Economics as a Defensive Principle

The challenge of building an effective anti-botting strategy resolves around understanding which signals a threat actor can cheaply change. Anti-botting defences are strongest when corelating signals according to how costly they are for a threat actor to rotate. When defences focus heavily on signals like IP addresses, emails or virtual accounts, threat actors can rotate them at little cost and continue operating at scale. By correlating activity across signals that are more expensive to rotate, retailers can make automation meaningfully harder without blocking legitimate users.  

​

In an environment where bots can adapt as quickly as defences do, understanding the economics of signal rotation provides a practical framework for building resilient detection systems that do not interfere with real customer flows. 

​

It’s also important to consider business objectives when implementing these controls as any controls introduced should not add unnecessary friction to the customer’s experience. Wilbourne has worked with many clients in the retail sector to help finetune these controls for their particular use case. 

Looking Ahead

As AI continues to lower the skillset required to develop and perform these attacks it is important for businesses to understand these changes to ensure their defences are kept inline with the latest developments. Wilbourne are committed to pushing the boundaries of application security while ensuring our solutions align with commercial and business objectives. 

​

​If you’re interested in understanding if your current controls are sufficient, please reach out. 

bottom of page