Bypassing Anti-Automation Controls
Application Security

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"

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

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.

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

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

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.

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.

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.
