Blacksec

Administrator
Staff member
ROOT
VIP
eky3ha.png


Every challenge page a checker hits is an economic decision the target made: spend compute classifying visitors as human, and push the cost of passing onto whoever wants through. The solving services (2Captcha, CapSolver, Anti-Captcha and their generation of API-first shops) exist because that cost arithmetic has a market price — reCAPTCHA v2, hCaptcha, and Turnstile tokens can be purchased for fractions of a cent each, farmed out to human solvers or ML-solving back-ends on the other side of the API, and returned as tokens your checker's next request carries. Integration is not complicated; getting the integration *correct* is where most homemade checkers fail — because a solved token is bound to the solving session's fingerprint and usually to the egress IP that fetched the challenge, so a token solved through one network path and submitted through another gets rejected as invalid by the issuing service. This is captcha integration decoded: the challenge-type map, the solve-service API pattern that works identically across providers, the token-to-IP binding discipline that makes solves actually verify, and the cost math that tells you when solving is worth it versus when to route around the protected target entirely.

ROUTE MAP (PLAIN ENGLISH)

Three challenge families own the 2026 checker-traffic landscape. reCAPTCHA (v2 checkbox/invisible, v3 scoring) — Google's system, where v2 returns a response token after interaction and invisibly-scored v3 returns a score-graded token with no visible widget; hCaptcha — the Enterprise-grade visual-challenge system (buyout-era successor to reCAPTCHA across many stacks) with its own token format and enterprise risk scoring; Turnstile — Cloudflare's transparent challenge that often passes without user interaction and only escalates to interaction on risk signals, which is why Turnstile markers appearing in checker traffic usually mean the egress IP's reputation already tripped the risk threshold. Each type's token gets solved through the same service-API pattern: submit the challenge parameters (site key, page URL, action/invisible-mode flags) plus the proxy the token must bind to, poll for the solved token, inject the token into the retry request's proper field (g-recaptcha-response, h-captcha-response, or cf-turnstile-response), and re-fire through the *same proxy* the solve was bound to.

The economics are the reason this entire lane exists. Solve prices run per-thousand-tokens: reCAPTCHA v2 in the $1-3 per thousand band (service- and volume-dependent), hCaptcha similar, v3 scoring-graded tokens slightly higher, Turnstile cheaper on transparent passes and priced on the interaction-escalated solves; human-farm-backed services sit at the higher band with better pass consistency, ML-solvers at the lower band with variance by site key. A checker processing 100 authorizations/minute where 20% hit challenges burns 1,200 solves/hour — at $2 per thousand that's roughly $2.40/hour of pure solve cost layered onto proxy and gate costs, which is the number that decides whether the protected target's throughput is worth running at all versus parking the challenge-class for manual passes or dropping the target.

STEP 1 - THE CHALLENGE-TYPE MAP

  • reCAPTCHA v2 (checkbox and invisible): fetch the challenge page (or the page embedding the widget), extract the site key (the 6L...-class string in the widget parameters or page source), submit to the solve service with the site key, page URL, and the bound proxy; poll returns the response token; inject into the request field g-recaptcha-response and re-fire; invisible-mode flag tells the service the widget is the invisible variant (no visible checkbox interaction expected from the solver layer).
  • reCAPTCHA v3: no interaction — a risk score attached to the token per action; solve services return score-graded tokens (you can request minimum score tiers at higher price); the action string and page URL must match what the target's verification server expects (mismatched action strings invalidate otherwise-valid tokens); v3's no-widget nature makes it integration-simpler but scoring-fragile: a low-score token gets rejected server-side even though the API returned "success."
  • hCaptcha: same submit-poll-inject pattern, site-key extraction equivalent, response field h-captcha-response; enterprise-mode sites sometimes add additional context parameters the solve request must mirror; pass rates vary more by site key than reCAPTCHA (some enterprise keys are tuned aggressively), which is why solve services publish per-site-key success stats and experienced operators read them before committing volume.
  • Turnstile: Cloudflare's transparent challenge — often a managed challenge that passes without interaction for clean egress; when checker traffic sees Turnstile markers, the egress reputation already tripped the risk threshold; solve services handle interaction-escalated Turnstile at lower per-1k pricing than captcha-family tokens; response field cf-turnstile-response, and the token-IP binding discipline is strictest here (Cloudflare's edge correlates the solve origin with the submitting request's egress aggressively).

STEP 2 - THE SOLVE-SERVICE API PATTERN

  • Submit: POST the task parameters — challenge type, site key, page URL, optional action/invisible flags, and the proxy string (protocol, host, port, credentials) the token must bind to; the service returns a task ID; the API key authenticates the account and carries the balance that funds each solve.
  • Poll: GET the task status on an interval (2-10 seconds depending on type and service load) until ready; a ready response carries the token string; error statuses carry reasons (proxy-dead-during-solve, sitekey-invalid, timeout-exhausted) that must classify into the checker's re-run class, not the dead class — a solve failure is a tooling-side event, never a card/line verdict.
  • Inject and re-fire: the solved token goes into the retry request's response field, the request re-fires through the same proxy the solve bound to, and the target's verification server checks the token against the issuing service's API (a server-to-server call) — the token validates only if the solve context matches the submit context within the issuing service's binding rules, which is where the IP-binding discipline earns its keep.
  • Balance and queue discipline: solve-service accounts run on prepaid balance — the checker's run report tracks solve-spend per batch (solves consumed × per-1k price), warns at balance thresholds, and hard-stops below a floor so mid-run balance exhaustion does not silently produce failed-solve cascades that look like target-side blocks.

STEP 3 - THE TOKEN-TO-IP BINDING DISCIPLINE

  • The rule: one egress identity per challenge lifecycle — the proxy that fetches the challenge page (extracting the site key and any pre-token state) is the proxy the solve binds to, and the proxy the retry request exits from; three network identities across one challenge (fetch IP, solve IP, submit IP) is the most common homemade-integration failure, and the issuing services' risk layers reject the token on mismatch.
  • Proxy class impact: datacenter egress fetching a challenge already carries lower trust — the solve completes but the target's verification server may reject the token on the datacenter-IP risk profile even when binding is correct; residential or mobile egress on all three legs raises pass rates materially, which folds captcha cost back into the proxy-architecture decision (protected targets want residential end-to-end, or they burn solves for rejected tokens).
  • Session identity coherence: the same user-agent and fingerprint that fetched the challenge must present on the retry — the token is one artifact in a session fingerprint; changing UA between fetch and submit (or between solve and re-fire) reads as two different clients sharing one token, which is a deterministic reject pattern on aggressive verification servers.
  • Retry-on-bind-failure: when a token dies on binding or risk rejection, the retry does not reuse the token — fresh challenge fetch, fresh solve, fresh binding, same or rotated egress depending on whether the reject fingerprinted as IP-risk or identity-mismatch; one solve burned per retry attempt, which is why solve-spend tracking per line matters — a line that burns five solves on binding failures is costing more than its conversion odds justify and belongs in the park class.

STEP 4 - COST MATH AND ROUTE-AROUND DECISIONS

  • Per-batch solve economics: (challenge-hit rate × throughput × batch duration) = solve count; solve count × per-1k price = solve spend; add it to proxy spend and gate/key costs for the true cost-per-live-result figure that decides whether the protected target stays in rotation; a target with 40% challenge-hit rates at 100 requests/minute burns 2,400 solves/hour — at $2/1k that's $4.80/hour solve cost alone, which re-prices the entire operation's margin.
  • Route-around alternatives: many protected targets expose API-layer endpoints that bypass the challenge entirely (the same data the gated page serves, available through an API the verification server fronts differently) — mapping the API layer and skipping the challenge entirely beats paying per-token forever; timing shifts (challenge risk scores vary by hour and egress reputation age) sometimes drop hit rates materially; and target prioritization (solve the high-value paths, park the low-value ones) beats uniform solving across a mixed batch.
  • Provider selection signals: per-site-key success stats, solve-time distributions (p50/p95 — a service whose p95 solve time exceeds your retry budget stalls your queue), proxy-binding support quality (some services handle bound-proxy solves cleanly, others effectively ignore the binding parameter and produce mismatch-rejects at scale), and balance-failure behavior (hard-stop vs silent-degrade); operator experience accumulates as a per-sitekey provider preference map, not a global "best service" ranking.
  • The skip decision, formalized: when (solve spend + residential-proxy premium for binding-correct egress) exceeds the expected conversion value of the protected batch's live results, the rational move is parking the challenge-class and running the unprotected remainder at full speed — the park file waits for a day when egress reputation or service pricing changes the math, which it periodically does.

WORKED EXAMPLE - TURNSTILE ON A PROTECTED GATE

Checker hitting a payment-flow target whose edge started serving Turnstile managed challenges to the pool's egress range: challenge-hit rate jumped from 5% to 60% overnight (the edge's reputation scoring flagged the residential range after the previous day's throughput). Integration response, leg by leg: worker fetches the payment page through its bound residential proxy, response carries the Turnstile widget (sitekey extracted from the page's challenge parameters); solve-service submit with sitekey, page URL, proxy string, and the turnstile task-type; poll returns token in 8 seconds (interaction-escalated solve, $1.20/1k pricing); retry request injects cf-turnstile-response and re-fires through the same residential proxy — verification passes, payment flow proceeds. Solve-spend math for the batch: 40% hit rate × 100 req/min × 30 min = 1,200 solves ≈ $1.44 — acceptable against the batch's conversion value; the run report flags the hit-rate jump itself as the actionable item: this egress range is now a Turnstile magnet, next batch rotates to a fresher range and the hit rate drops back toward baseline, cutting solve spend by two-thirds without touching the integration code.

WORKING SEQUENCE

Code:
captcha integration: challenge map (recaptcha v2/v3, hcaptcha, turnstile) -> submit-poll-inject pattern (sitekey + page URL + bound proxy -> task ID -> poll -> token) -> inject into proper field (g-recaptcha-response / h-captcha-response / cf-turnstile-response) -> binding rule: fetch-proxy = solve-proxy = submit-proxy, same UA/fingerprint across all three legs -> solve failures classify re-run (tooling-side), never dead -> cost math: hit-rate x throughput x price/1k vs conversion value -> route-around: API-layer mapping, timing shifts, target prioritization, park when math fails -> balance tracking with hard-stop floor

QUICK ANSWERS

  • Why does my solved captcha keep getting rejected? Token-IP binding mismatch, almost always — the solve was bound to one egress (or none, if the proxy parameter was ignored) and the retry exited from a different IP; the issuing service's risk layer rejects tokens whose solve-context and submit-context fingerprints diverge; fix: fetch the challenge, solve, and submit all through the same proxy with the same user-agent across all three legs.
  • Which captcha type is cheapest to integrate? Turnstile on transparent passes (often no interaction, lower per-1k pricing) and reCAPTCHA v3 (no widget, simple field injection) integrate simplest; v2 checkbox and hCaptcha add interaction-handling; the pricing order roughly tracks solve effort — transparent < v3 < v2/hcaptcha-interaction, with per-sitekey variance that operators learn as preference maps rather than global rankings.
  • What does a solve cost at scale? Per-thousand pricing: reCAPTCHA v2 roughly $1-3, hCaptcha similar, v3 score-graded slightly higher, Turnstile cheaper on transparent passes — the batch-level number is (hit-rate × throughput × duration × price/1k): a 40% hit rate at 100 requests/minute for an hour is 2,400 solves ≈ $3-7 depending on type and service, which joins proxy and gate costs in the true cost-per-live calculation.
  • Should I solve or route around a protected target? Map the API layer first — many gated pages expose endpoints that bypass the challenge entirely; if solving is the only path, compare (solve spend + residential premium for binding-correct egress) against the batch's expected conversion value; when the cost exceeds the value, park the challenge-class and run the unprotected remainder at full speed — the math shifts periodically as egress reputation and pricing move, so parked classes get re-evaluated, not deleted.
  • Do solve services work with my proxies? Only if they honor the bound-proxy parameter — some services solve through their own egress regardless of your proxy string (producing guaranteed binding-mismatch rejects on strict targets); test with a small batch: solve bound to your residential proxy, submit through the same proxy, measure verify pass rate before committing volume — services whose p95 solve time or binding behavior fail the test do not make the rotation regardless of headline pricing.
  • What about v3's invisible scoring? v3 tokens carry risk scores per action string — services return score-graded tokens (request minimum score tiers at higher price); the action and page URL must match what the target's verification server expects (mismatch invalidates valid-issued tokens); a low-score token gets rejected server-side despite API "success," which classifies as solve-retry (request higher score tier) rather than target-dead.

RELATED