Captcha proxies for hCaptcha solves.

A captcha solve is a conversation with hCaptcha, and it has to come from some IP address. You either lend the solver yours, through a proxy, or let the solver use its own. Which one fits depends on whether the site checks that the token comes back from the address that earned it. This guide covers why the address matters, both ways of solving on NoneCap, the proxy formats, and the errors you will see when a proxy is the problem.

Why a solve needs an IP address

To get a token, a solver loads the hCaptcha widget for the page’s sitekey, receives a challenge, answers it and collects the P1_ token. Every one of those requests leaves from an IP address, and hCaptcha reads it. Its own FAQ lists the IP address among the information it evaluates, and its Enterprise overview describes risk attributes “like VPN or proxy usage” and rules that restrict which countries can reach a feature. An address with a poor reputation gets harder challenges, more of them, or none at all (why hCaptcha challenges some visitors more).

The site sees an address too. When the form is posted, its server sends the token to hCaptcha’s siteverify endpoint, and hCaptcha’s docs list remoteip, “the user’s IP address”, as a recommended parameter that “helps improve verification accuracy”. So a token can carry two addresses: the one that solved the challenge, and the one that submitted the form. Whether they have to match is up to the site’s configuration.

Two ways to solve: your proxy or ours

NoneCap’s solve API takes an optional proxy field. Send it and the solve runs through your proxy; leave it out and the solve runs from NoneCap’s own pool, which is what “proxyless” means here.

Solving hCaptcha through your own proxy vs proxyless
Your own proxyProxyless
How you ask for itSend a proxy field with the solveLeave proxy out
Address hCaptcha sees during the solveYour proxy’s exit IPAn address from NoneCap’s pool, not yours
Submitting the token from the same addressPossible: submit through the same proxy sessionNot possible: the solve ran on another address
Enterprise sitekeys that check the addressThe setup to useMany refuse the token as invalid-response
BillingPer round; better proxies usually mean fewer roundsPer round, never above a fixed ceiling per solve
proxy_bytes on the solveBytes that went through your proxynull
SetupA proxy reachable from the public internetNone

Proxyless is the quickest start: no proxy to buy or configure, and a capped bill: per the pricing page, each solve is charged per round, but never above a fixed ceiling per solve, so a sitekey that keeps serving rounds cannot run up your bill.

Proxyless solve
curl "https://api.nonecap.com/v1/solves?wait=90" \
  -H "Authorization: Bearer $NONECAP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type":    "hcaptcha",
    "sitekey": "f5ab1c2d-7e8f-4a9b-b1c2-d3e4f5a6b7c8",
    "url":     "https://target.example/login"
  }'

Your own proxy is the setup for sites that compare the solving and submitting addresses. It can also cost fewer credits: per the pricing page, better proxies mean fewer rounds, and you pay per round.

Solve through your proxy
curl "https://api.nonecap.com/v1/solves?wait=90" \
  -H "Authorization: Bearer $NONECAP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type":    "hcaptcha",
    "sitekey": "f5ab1c2d-7e8f-4a9b-b1c2-d3e4f5a6b7c8",
    "url":     "https://target.example/login",
    "proxy":   "http://user:pass@1.2.3.4:8080"
  }'

The proxy field

The API reference accepts the proxy as a URL string, scheme://user:pass@host:port, or as an object:

Object form
"proxy": {
  "scheme":   "socks5",
  "host":     "proxy.example.net",
  "port":     1080,
  "username": "user",
  "password": "pass"
}
  • Schemes: http (the default), https, socks5, socks5h and socks4.
  • Reachable from the internet. The solve runs on NoneCap’s servers, so the host must be a public hostname or IP. localhost, 127.0.0.1, 10.0.0.5 or a bare service name from your own network cannot be reached; the request is answered with 422 validation_error pointing at proxy, or the solve fails.
  • No TLS interception. A proxy that rewrites TLS cannot reach hCaptcha; the solve fails with proxy_error.
  • Bandwidth is reported. A finished solve carries proxy_bytes, the bytes that went through your proxy, so you can square it with your proxy provider’s meter.

Code written for another solver keeps its proxy settings: NoneCap’s createTask endpoint takes HCaptchaTask with either vendor’s proxy fields as well as HCaptchaTaskProxyless, and the 2Captcha-style endpoint takes proxy and proxytype.

One exit for the whole exchange

On sites that compare addresses, the proxy has to stay on one exit IP from the moment you load the page until the token is submitted. The API reference puts it plainly for enterprise sitekeys: many deployments reject a token submitted from a different address as invalid-response, so pass a proxy that stays on one exit for page load, solve and submit. Many rotating proxy services offer a sticky-session form of their login for exactly this; use one session per solve.

The solve also returns user_agent, the browser it presented while earning the token. Some sites refuse a token sent by a different browser version, so submit with that string as your User-Agent, through the same proxy:

Python: load, solve, submit
import os, requests

PROXY = "http://user-session-7f3a:pass@gw.proxy.example:8000"
site = requests.Session()
site.proxies = {"http": PROXY, "https": PROXY}
site.get("https://target.example/login")

solve = requests.post(
    "https://api.nonecap.com/v1/solves?wait=90",
    headers={"Authorization": f"Bearer {os.environ['NONECAP_KEY']}"},
    json={"type": "hcaptcha", "proxy": PROXY,
          "sitekey": "f5ab1c2d-7e8f-4a9b-b1c2-d3e4f5a6b7c8",
          "url": "https://target.example/login"},
).json()

site.post("https://target.example/login",
          headers={"User-Agent": solve["user_agent"]},
          data={"email": "...", "h-captcha-response": solve["token"]})

Enterprise pages that issue an rqdata value need it in the solve as well; the rqdata guide covers reading it fresh for each solve.

When the proxy is the problem

NoneCap reports proxy trouble in the solve’s error or warnings, so you can tell a bad exit from a hard sitekey. None of these failures is charged.

  • proxy_error: your proxy could not be used. It refused the connection (wrong credentials or source IP; the message quotes its reply), intercepts TLS, points at a private address, or hCaptcha refused its IP. Check the host and login, or switch exit.
  • challenge_not_loaded through a proxy: hCaptcha did not serve a challenge, which usually means the exit IP has a poor reputation with hCaptcha. Retry on a different exit.
  • token_not_granted: the challenge was answered but no token was issued. If it keeps happening, use a proxy whose IP hCaptcha trusts more.
  • expired through a proxy: the proxy did not answer in time and the solve reached its deadline.
  • 429 proxy_unavailable: nearly every recent solve through that proxy failed because it refused the connection, so new submits through it are paused. Fix it or switch exit and wait the Retry-After seconds.

Two warnings can arrive on a solve that still runs and is billed as usual. proxy_session_refused means the last tokens you reported as rejected came through this proxy session or exit IP, so move your next solves to a different exit; if your proxy changed its exit during the solve, it advises a sticky session instead. proxy_recommended means the page is much more likely to accept a token solved through the connection you submit from, and this solve did not run through yours. The full list is under Errors in the API reference.

How other solvers handle proxies

Proxy support works much the same across solving services. 2Captcha’s proxy docs say a proxy “allows to solve the captcha from the same IP address as you load the page”, that “using proxies is not obligatory in most cases”, and that some protections require IP matching. It accepts HTTP, HTTPS, SOCKS4 and SOCKS5 proxies in proxyType, proxyAddress, proxyPort, proxyLogin and proxyPassword fields. CapSolver’s proxy guide says “the IP address used to solve the challenge matters” and that a solution “might be rejected even if it is technically correct”; it describes proxy tasks as using the IP you provide and ProxyLess tasks as using its own infrastructure.

NoneCap solves hCaptcha only, so the choice above is the whole decision: proxyless for a quick, capped start, your own sticky proxy for sites that tie the token to an address. See pricing for what a solve costs, or the API reference for the full solve object.

Last updated November 2026.

Frequently asked

Do I need a proxy to solve hCaptcha?
Not always. Every solve has to reach hCaptcha from some IP address, but that address does not have to be yours. On NoneCap you can leave the proxy field out and the solve runs from our pool, billed per round up to a fixed ceiling per solve. You need your own proxy when the site checks that the token is submitted from the address that solved it, which many enterprise sitekeys do.
What is a proxyless captcha solve?
A solve where you send no proxy, so the solving service reaches the captcha from its own network instead of yours. 2Captcha and CapSolver name the same split in their APIs: CapSolver says proxy tasks use the IP address you provide, while ProxyLess tasks use its own infrastructure. On NoneCap a proxyless solve is simply a POST /v1/solves without a proxy field.
Which proxy types does NoneCap accept?
http, https, socks5, socks5h and socks4, as a URL string such as http://user:pass@host:port or as an object with scheme, host, port, username and password. The scheme defaults to http. The proxy must be reachable from the public internet; localhost and private addresses are answered with 422 validation_error.
Why is my token rejected when I solve without a proxy?
One common cause is that the site compares addresses. A site can pass the visitor’s IP to hCaptcha’s siteverify as remoteip, and many enterprise deployments refuse a token that was solved on one address and submitted from another, answering invalid-response. Send the proxy you submit through in the proxy field, keep it on one exit for the whole exchange, and submit with the user_agent the solve returns.
Does bringing my own proxy make solves cheaper?
Usually. NoneCap bills per round, and a proxy whose IP hCaptcha trusts tends to get fewer rounds, so the bill is smaller. A proxy with a poor reputation can do the opposite: more rounds, or no challenge at all. Proxyless solves are also billed per round but never above a fixed ceiling per solve. Failed, cancelled and expired solves are not charged either way.
Should I use a rotating or a sticky proxy?
Sticky, per solve. A rotating proxy that changes its exit between page load, solve and submit breaks the address match a site may check. Keep one exit for those three steps, then move to a fresh one for the next solve if you like. If your proxy changes exit in the middle of a solve, the solve’s warnings say so and advise a sticky session.
Does NoneCap keep my proxy password?
Only briefly. Per the privacy policy, the password is kept encrypted for up to 7 days and used only to perform and improve your own solves and to detect accounts sharing one proxy login to abuse the service, then deleted (encrypted backups can hold a copy for up to six months before they expire). The address and username are kept to run your solves. You can switch off keeping the login in your dashboard settings.

Start solving hCaptcha in minutes.

1,300 free credits on signup. Pay per solve, credits never expire, failed solves never charged.