Title: Solve CAPTCHA in Python: Bypass hCaptcha with requests
Open Graph Title: Solve CAPTCHA in Python: Bypass hCaptcha with requests
X Title: Solve CAPTCHA in Python: Bypass hCaptcha with requests
Description: Solve and bypass CAPTCHA in Python: one pip install, send the sitekey and URL, get a real hCaptcha token. Sync, asyncio, requests, and Scrapy examples.
Open Graph Description: Solve and bypass CAPTCHA in Python: one pip install, send the sitekey and URL, get a real hCaptcha token. Sync, asyncio, requests, and Scrapy examples.
X Description: Solve and bypass CAPTCHA in Python: one pip install, send the sitekey and URL, get a real hCaptcha token. Sync, asyncio, requests, and Scrapy examples.
Mail addresses
support@nonecap.com
Opengraph URL: https://nonecap.com/solutions/python/
Domain: nonecap.com
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://nonecap.com/"},{"@type":"ListItem","position":2,"name":"Solutions","item":"https://nonecap.com/solutions/"},{"@type":"ListItem","position":3,"name":"Python"}]}
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Does the SDK have real type hints?","acceptedAnswer":{"@type":"Answer","text":"Yes. The package ships py.typed with full inline types, so mypy, pyright, and your IDE pick them up with zero config. The types do actual work: a misspelled type or a missing sitekey fails the type check before you ever burn a credit."}},{"@type":"Question","name":"Can I solve captchas concurrently with asyncio?","acceptedAnswer":{"@type":"Answer","text":"Yes. AsyncNoneCap has the same surface as the sync client, awaited, so asyncio.gather fan-out works the way you would expect. Concurrency is capped per account (5 on the free trial, 25 on Starter, 50 on Builder, 100 on Scale, 200 on Max), so wrap the calls in an asyncio.Semaphore sized under your cap. If you push past it you will see RateLimitError: back off and retry."}},{"@type":"Question","name":"Does this work with plain requests or httpx, without a browser?","acceptedAnswer":{"@type":"Answer","text":"Yes. The token is just a string. NoneCap solves the challenge on its own servers, so you never need a browser at all: include the returned token as h-captcha-response (or g-recaptcha-response) in the form POST your script was already sending. The web scraping guide walks through the full no-browser pipeline."}},{"@type":"Question","name":"What Python versions and dependencies does it need?","acceptedAnswer":{"@type":"Answer","text":"Python 3.9 or newer. The only dependency is httpx, which also powers the async client. The SDK is open source at github.com/nonecap/nonecap-py and published on PyPI as nonecap."}},{"@type":"Question","name":"How much does each solve cost?","acceptedAnswer":{"@type":"Answer","text":"At least one credit per solve. Billing starts at one credit per hCaptcha challenge round (hCaptcha decides how many: often one, sometimes two or three), charged only on success, so failed solves are never charged. Credits run $0.20 to $0.50 per 1,000 depending on your pack, you get 1,300 free credits on signup, and no subscription is required. See pricing."}},{"@type":"Question","name":"How do I handle enterprise hCaptcha (rqdata) in Scrapy?","acceptedAnswer":{"@type":"Answer","text":"Enterprise deployments bind each challenge to a fresh rqdata blob the page passes into hcaptcha.render() or execute(). Scrape that value out of the gated response or the request that configures the widget, then call nc.solve(type=\"hcaptcha_enterprise\", sitekey=..., url=..., rqdata=...). The blob goes stale fast, so capture it right before you solve. Details in the rqdata guide."}},{"@type":"Question","name":"How many solves can a crawl keep in flight?","acceptedAnswer":{"@type":"Answer","text":"As many as your account’s concurrency cap, the same cap described in the asyncio answer above. Only gated responses trigger a solve, so most crawls sit far under the cap even with CONCURRENT_REQUESTS at its default of 16. If a heavily gated target pushes you past it, the API returns a rate-limit error: catch RateLimitError, back off, and retry, or lower CONCURRENT_REQUESTS for that spider."}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Solve CAPTCHA in Python: Bypass hCaptcha with requests","description":"Solve and bypass CAPTCHA in Python: one pip install, send the sitekey and URL, get a real hCaptcha token. Sync, asyncio, requests, and Scrapy examples.","url":"https://nonecap.com/solutions/python/","mainEntityOfPage":"https://nonecap.com/solutions/python/","datePublished":"2026-06-11","dateModified":"2026-10-31","author":{"@type":"Organization","name":"NoneCap","url":"https://nonecap.com"},"publisher":{"@type":"Organization","name":"NoneCap","url":"https://nonecap.com","logo":{"@type":"ImageObject","url":"https://nonecap.com/logo.png"}},"image":"https://nonecap.com/og/solutions-python.png"}
| og:type | website |
| og:site_name | NoneCap |
| og:image | https://nonecap.com/og/solutions-python.png?v=2 |
| og:image:width | 1200 |
| og:image:height | 630 |
| twitter:card | summary_large_image |
| twitter:image | https://nonecap.com/og/solutions-python.png?v=2 |
| theme-color | #fafaf7 |
Links:
Viewport: width=device-width, initial-scale=1