Financial provider: keeping solver services off a customer login

How a financial provider uses Prosopo to stop commercial CAPTCHA-solver services running automated attacks against a login endpoint that guards customer funds.

Chris Taylor
Chris Taylor

Updated 5 min read

In short
Customer
A financial provider. The login endpoint guards customer assets.
Problem
Automated login attempts routed through commercial CAPTCHA-solver services, where a harder puzzle costs the real customer more than the attacker.
  • Solver services named on the block
  • 23.67% of sessions blocked
  • Legitimate login completion protected
  • Every decision traceable by request ID

This customer is a financial provider. The login endpoint guards customer assets, which changes the threat model compared with almost any other login: the attacker's expected return per successful attempt is high enough to justify paying for tooling.

The problem

Automated login attempts routed through commercial CAPTCHA-solver services.

The economics are worth stating plainly, because they explain why an ordinary CAPTCHA does not work here. Solver services charge on the order of a dollar or two per thousand solves. Against a target where one success is worth a customer's balance, that is not a deterrent. Making the puzzle harder raises the attacker's cost by fractions of a penny and the real customer's cost by seconds. Wrong in both directions.

Why solvers beat challenges

A CAPTCHA verifies that a correct answer arrived. It does not verify who produced it.

A solver service takes the challenge, sends it to a worker or a model somewhere else, and returns the answer to the automated client, which submits it. Every step of that is legitimate from the challenge's point of view. The answer is correct.

So the detection has to happen somewhere other than the answer. What a solver cannot hide is the round trip. Getting a challenge out to a third party and the answer back in takes time, leaves a pattern in the request sequence, and often leaves traces in the client itself. Prosopo fires a detector on that path, and the block reads Solver service detected.

What the customer sees

The block response names the solver service. That is more useful than it sounds, because it tells the security team which service the attacker is paying, which in turn indicates how organised the operation is and how likely it is to adapt.

Behind the verdict, every request, fingerprint and timing signal can be broken down by request ID in the portal, so an incident review can reconstruct a campaign rather than describe it.

Results

Blocks naming a commercial solver service
22,091
in 30 days, on one login endpoint
30 days to
1 September 2026

Sessions scored
2,644,299

Stopped as automated
23.67%
625,776 sessions. Imperva puts bad-bot traffic at 23% of the internet as a whole.

Of those, running a driver openly
1 in 10
63,615 of the blocked sessions carried an automation driver with no attempt at disguise.

Every one of those 22,091 blocks is a request where the challenge was answered correctly and the answer came from somebody who was paid to produce it. The argument on this page is that one, measured: a login guarding real assets attracts attackers who will buy their way past a puzzle, so the puzzle cannot be the control.

This deployment, 23.67% Imperva Bad Bot Report 2026, internet-wide bad-bot share, 23%

Just under a quarter of all sessions reaching this login were blocked, against an internet-wide bad-bot share of 23%. A financial login sits above the average because the economics justify tooling that most targets never attract.

Top named block reasons

30 days

Address already known for abuse219,967

Connected through a network used to hide traffic69,179

No touch input, on a mobile-only service50,125

Not the mobile app, on an app-only service22,912

Paid a service to solve the challenge22,091

Replayed an old request16,453

Claimed one operating system, behaved like another12,303

Browser could not keep its story straight8,855

Named reasons only, with related network-origin reasons grouped into one row. A further share of blocks carry a triggered detector rather than a reason string, and can be looked up by request ID in the same way.

The general lesson

If the thing behind your login has a market price, assume the attacker has a budget. Detection that raises the cost of solving a puzzle is not the answer. Detection that identifies the solver in the path is.

Protecting a login that holds real value?

A Bot Exposure Assessment is a 30-minute call with an engineer. We look at your traffic, show where your current setup leaves gaps, and agree how a trial would be judged. Nothing to install first.

Questions

Something else? Ask an engineer.

What problem was this customer solving?

Automated attacks against a customer login endpoint, run through commercial CAPTCHA-solver services. When the asset behind a login is money, the economics of an attack change: a solver service charging a dollar or two per thousand solves is trivially affordable against a target that pays out.

Why do CAPTCHA-solver services defeat a normal CAPTCHA?

Because a CAPTCHA only tests whether the challenge was solved, not who solved it. Solver services either pay low-wage workers to solve challenges through an API or run a model that does it. Either way the answer comes back correct. Stopping them means detecting the solver in the request path rather than making the puzzle harder.

How does Prosopo detect a solver service?

The solver has to get the challenge out to a third party and the answer back in, and that round trip leaves a signature in timing, in the request path and often in the client itself. The detector that fires on this reads Solver service detected. Blocks carry the reason, so the customer sees which service was in the loop.

Why does a false positive matter more on a financial login?

Because the customer is locked out of their own money. On most sites a false positive is an abandoned session the visitor can retry later. On a financial login it is a support escalation and a trust problem, so the detection has to be explainable rather than a score.