Direct Answer
To solve token-based captchas correctly with Death By Captcha, use the reCAPTCHA token API and add your German mobile proxy via the proxy and proxytype fields inside token_params. The challenge is then worked through your IP — so the token matches the IP class you submit from and is accepted, instead of being rejected on an IP mismatch. Only HTTP proxies are supported. Add your endpoint and credentials from your account.
The Mistake Most Guides Make
Most Death By Captcha examples send the captcha to be solved with no proxy at all — the solver uses whatever IP it happens to run on — and then have you submit the token from your own proxy. For a modern token challenge (reCAPTCHA v2, hCaptcha) that mismatch is exactly what makes a correctly solved token still fail: the token is minted on one IP class and submitted from another, and the site treats it as suspicious.
The fix is proxy-matched solving: hand Death By Captcha your German mobile proxy in token_params so the challenge is worked on the same IP class your request uses. Death By Captcha's own documentation recommends supplying a proxy to prevent IP-related rejections — and once you do, proxytype is required.
A CAPTCHA solver and a trusted German mobile IP are complements, not substitutes: fewer challenges appear on a high-reputation mobile IP in the first place, and the ones that do can be solved proxy-matched. See what a CAPTCHA solver is and how a mobile proxy reduces CAPTCHAs.
Before You Start
You will need your Death By Captcha account credentials and four values from your GermanProxy.io account:
- Your Death By Captcha username and password
- Host and port of your endpoint
- Username and password
The examples use PROXY_HOST, PORT, USER and PASS as placeholders — replace them with your own. Death By Captcha's token API currently accepts HTTP proxies only, so use your GermanProxy.io HTTP endpoint in the proxy field. (Your account also offers SOCKS5 and OpenVPN — those are for your own request traffic.)
Install requests:
pip install requests
Step 1 — Upload a Proxy-Matched Token Task
Post to the api/captcha endpoint with your credentials, type=4 (the reCAPTCHA token API), and a token_params JSON that carries the site key, page URL and — the important part — your German mobile proxy.
import json
import requests
DBC_USER = "YOUR_DBC_USERNAME"
DBC_PASS = "YOUR_DBC_PASSWORD"
# Your German mobile proxy — the same endpoint your own requests use
PROXY_HOST = "PROXY_HOST"
PROXY_PORT = "PORT"
PROXY_USER = "USER"
PROXY_PASS = "PASS"
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
token_params = {
"proxy": proxy_url, # HTTP proxy — your German mobile endpoint
"proxytype": "HTTP", # required whenever proxy is set
"googlekey": "SITE_RECAPTCHA_SITEKEY",
"pageurl": "https://www.example.de/login",
}
resp = requests.post(
"http://api.dbcapi.me/api/captcha",
data={
"username": DBC_USER,
"password": DBC_PASS,
"type": 4, # 4 = reCAPTCHA token API
"token_params": json.dumps(token_params),
},
headers={"Accept": "application/json"},
timeout=30,
)
captcha_id = resp.json()["captcha"]
print("captcha id:", captcha_id)
googlekey is the site's public reCAPTCHA sitekey from the page source. If you leave proxy and proxytype empty the solver picks its own IP, which cannot match your German mobile endpoint — so keep both set to your endpoint.
Step 2 — Poll for the Token
Solving is asynchronous. Poll the captcha by id until the text field is filled; that string is your reCAPTCHA token.
import time
def get_token(captcha_id):
while True:
r = requests.get(
f"http://api.dbcapi.me/api/captcha/{captcha_id}",
headers={"Accept": "application/json"},
timeout=30,
).json()
if r.get("text"):
return r["text"]
time.sleep(5)
token = get_token(captcha_id)
print("token:", token[:40], "...")
The token is single-use and short-lived, so submit it promptly.
Step 3 — Submit the Token From the Same IP
The token is only half the job. Submit it to the site through the same German mobile proxy you gave Death By Captcha, so the mint IP and the submit IP share one IP class:
proxies = {
"http": proxy_url,
"https": proxy_url,
}
resp = requests.post(
"https://www.example.de/login",
data={"g-recaptcha-response": token, "username": "...", "password": "..."},
proxies=proxies,
timeout=30,
)
print(resp.status_code)
For hCaptcha the flow is identical — the task type and the token field name change, but you still route the solve through your German mobile IP.
Verify the IP
Before you scale, confirm both sides really run on the same German mobile IP. Request an IP-echo endpoint through the proxy you gave Death By Captcha, and check it returns a German mobile IP — not your own address and not a datacenter range:
ip = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
print(ip.json()) # should be your German mobile IP
If it returns your own address, re-check the proxy URL and credentials. See test your mobile proxy setup and, for auth errors, fix 407 proxy authentication required.
Why Proxy-Matched Solving Matters
A token challenge does not only ask "was a human here" — it also weighs where the token was minted. When Death By Captcha solves on its own IP and you submit from a mobile IP, the site sees two different IP classes for one session. That inconsistency is a common reason a technically correct token is still rejected.
Proxy-matched solving removes it: the solve and the submit both happen on your dedicated German mobile connection, so the session reads as one continuous user. Hold the endpoint as a sticky session across the solve-and-submit sequence, and rotate on demand only between independent tasks. If you are already seeing blocks before any captcha, see fix 403 Forbidden when scraping.
Why a Mobile IP Reduces CAPTCHAs at All
The best captcha is the one that never appears. Real German mobile IPs (4G/5G) sit behind CGNAT — carrier-grade NAT, where many real subscribers share one public IPv4 address (how CGNAT works). Because a single mobile IP fronts a crowd of ordinary users, sites cannot cheaply treat it as "one bot" the way they treat a lone datacenter IP, so a mobile IP tends to carry higher IP reputation and draws fewer challenges.
That is the division of labour: a trusted mobile IP keeps challenge volume low, and Death By Captcha handles the residual challenges proxy-matched. For the wider picture, see mobile vs residential vs datacenter proxies and how websites detect proxies.
Scrape Responsibly
A CAPTCHA solver is for legitimate access to data you are permitted to collect — not for defeating security controls you have no right to touch. Keep your pipeline clean and defensible:
- Respect
robots.txtand each site's terms of service, and operate only where you are permitted. - Collect public data and send requests at a human-reasonable rate — add delays, don't hammer servers.
- Handle any personal data in line with the GDPR — collect only what you need.
- Solve captchas for legitimate access, not to circumvent access controls or platform rules.
These habits keep both your data and your IP reputation healthy. See is web scraping legal in the EU and are mobile proxies legal.
FAQ
Why does my Death By Captcha token still get rejected after a good solve?
Usually an IP mismatch. If the solver works the token on its own IP but you submit from a mobile IP, the site sees two IP classes for one session and can reject the token. Pass your own German mobile proxy in token_params so both sides match.
How do I pass my proxy to Death By Captcha?
In the token_params JSON, set proxy to http://user:pass@host:port and proxytype to HTTP. If you provide a proxy, proxytype is required. The solver then works the challenge through your German mobile IP.
Which proxy types does Death By Captcha accept?
Currently HTTP only. Point your GermanProxy.io HTTP endpoint at it via the proxy field; the SOCKS5 and OpenVPN options on your account are for your own request traffic, not for the solver's proxy field.
Does a mobile IP mean the solver has less to do?
Often, yes. A real German mobile IP on a CGNAT range carries higher IP reputation than a datacenter IP, so many sites challenge it less. Death By Captcha then handles only the residual challenges, proxy-matched. For the mechanism, see reduce CAPTCHAs with mobile proxies.
Is solving a captcha to reach a site allowed?
Solve captchas only for legitimate access to data you are permitted to collect — check terms of service and robots.txt first. A solver is not a way to defeat security controls you have no right to touch.
Where does the solved token come back?
In the text field of the polled response. Submit that token to the site through the same German mobile proxy you gave Death By Captcha so the mint IP and the submit IP share one IP class. Using CapMonster or Anti-Captcha instead? See CapMonster with a German mobile proxy and Anti-Captcha with a German mobile proxy.
Related guides
- Pairing a CAPTCHA Solver With a German Mobile Proxy
- 2Captcha Proxy Setup: Solving with a German Mobile Proxy
- Fix 407 Proxy Authentication Required on a Mobile Proxy
CTA
Solve the residual captchas proxy-matched, on an IP that draws fewer of them to begin with. Start with a German mobile proxy — HTTP/SOCKS5/OpenVPN, sticky sessions, on-demand rotation, fair-use 20 GB/day, from a transparent EU provider.
Get a German mobile proxy: Real 4G/5G IPs from Germany, fair-use 20 GB/day — browse German mobile proxy plans or start with a dedicated 5G proxy.