MTCaptcha Solver: Bypass MTCaptcha and Get a Verified Token
Send the MTPublic sitekey and the page address, and CapSkip hands back a verified MTCaptcha token for the form. Text challenges and invisible widgets are answered on a PC or VPS you run, usually in about 3 seconds, with no meter counting tokens.
- Text image and invisible mode
- v1 token, ready for the form
- Flat monthly price
MTCaptcha guards login, sign-up and checkout forms with a short line of warped letters, or with an invisible check that only shows a picture when a visit looks suspicious. CapSkip is an MTCaptcha solver that clears it for your scripts: it returns the verified token the widget would have written into the form, and your automation submits the page as a person would. All of it happens on a Windows machine of your own, be it a desktop, a VPS or a dedicated server.
A job needs very little: the sitekey that starts with MTPublic-, the address of the page holding the widget, and the action name if the page sets one. You never open the widget yourself. CapSkip requests and answers its own challenge, then replies with a token that begins with v1(, ready for the mtcaptcha-verifiedtoken field.
Metered services charge about $1.45 for every thousand MTCaptcha tokens, and a token is single-use, so every form you submit is another one. With CapSkip you pay one monthly price from $35 for each computer that runs it, and the number of tokens never enters the bill. Scripts built around in.php and res.php, createTask jobs of type MTCaptchaTask, and DeathByCaptcha uploads of type 18 all keep working once they point at CapSkip.
Use each token at once. An MTCaptcha token works one time and only for a few minutes, so request it just before you submit the form and never keep a stock of them. Read the MTCaptcha API reference
What the MTCaptcha solver handles
Visible and invisible widgets
The standard widget with its text picture and the low-friction mode that stays hidden until it doubts a visitor both come back as the same kind of token, so one integration covers either setup.
A token the form accepts
The reply is the verified token MTCaptcha issues, starting with v1(. Put it in the mtcaptcha-verifiedtoken field, or wherever the page reads it, and submit the form straight away.
About 3 seconds a token
A typical MTCaptcha job is finished in around 3 seconds. Nothing of yours waits in a shared queue, so the pace is set by your machine and the number of MTCaptcha jobs you let run at once.
Wrong sitekeys flagged at once
A sitekey MTCaptcha does not know, or one that is not allowed on the page you named, comes back as its own error rather than an endless retry, so a typo in your config is obvious on the first job.
Three request formats accepted
method=mt_captcha on in.php, createTask with MTCaptchaTask or MtCaptchaTaskProxyless, and DeathByCaptcha type 18 all work, and every reply is formatted the way the calling library expects.
Every form submission covered
Tokens are single-use, so a busy sign-up or login flow burns through them quickly. Each one falls under the monthly plan, however many forms you post.
Three ways to send MTCaptcha jobs to CapSkip
import time
import requests
API = "http://127.0.0.1:8080"
KEY = "YOUR_API_KEY"
# The sitekey comes from the page's mtcaptchaConfig object.
job = requests.post(API + "/in.php", data={
"key": KEY,
"method": "mt_captcha",
"sitekey": "MTPublic-KzqLY1cKH",
"pageurl": "https://www.example.com/login",
"json": 1,
}).json()
while True:
time.sleep(3)
res = requests.get(API + "/res.php", params={
"key": KEY, "action": "get", "id": job["request"], "json": 1,
}).json()
if res["request"] != "CAPCHA_NOT_READY":
break
if res["status"] != 1:
raise RuntimeError(res["request"])
# The token is single-use and short-lived: submit the form right away.
requests.post("https://www.example.com/login", data={
"username": "alice",
"password": "YOUR_PASSWORD",
"mtcaptcha-verifiedtoken": res["request"],
})Plain HTTP is enough for MTCaptcha: post the sitekey and page address to in.php, poll res.php for the token, then send it with the form in the mtcaptcha-verifiedtoken field.
Legacy in.php and res.php
Post method=mt_captcha with the sitekey and the page URL, add the action if the page sets one, then poll res.php and read the v1 token after OK|.
createTask with MTCaptchaTask
JSON clients send MTCaptchaTask, or MtCaptchaTaskProxyless when no proxy goes with the job, with isInvisible for low-friction widgets, and read the token from the solution that getTaskResult returns.
DeathByCaptcha type 18
Tools written for DeathByCaptcha keep uploading type 18 with their mtcaptcha_params, and the result carries the token in its text field, which is the field those tools already read.
Your first MTCaptcha token in three steps
-
Set up CapSkip next to your scripts
Install it on the Windows machine that posts your forms. No browser is involved in an MTCaptcha job, so modest hardware copes fine. Download CapSkip
-
Start a trial or pick a plan
The free trial lets you check MTCaptcha on your own targets before you pay. When you are ready, choose how many machines to license. See the plans
-
Send the sitekey, post the form
Submit the MTPublic sitekey and the page URL, wait about 3 seconds, and put the returned token in mtcaptcha-verifiedtoken as you submit. Open the MTCaptcha docs
Flat-rate MTCaptcha solving vs paying per token
Both routes end with a v1 token in your form. They differ in what each token costs and in who learns which sites you automate.
| Feature | CapSkip | Per-token services |
|---|---|---|
| Monthly bill | One price per machine from $35, unlimited tokens | About $1.45 per 1,000 MTCaptcha tokens |
| Widget modes | Text challenges and invisible widgets through one request | Not every service takes the invisible mode |
| Typical solve time | About 3 seconds, with no queue in front of your jobs | Depends on the provider's load at the time |
| A single-use token per form | As many fresh tokens as your forms need, same price | Every form you submit is another charge |
| Your existing client | Your in.php, createTask or type 18 calls, unchanged | Often tied to that vendor's own SDK and task names |
| Who sees your targets | Nobody: sitekeys and pages stay on your machine | A third party logs every sitekey and page you send |
Pricing
Stop paying per solve
Choose your license
Bronze License
$35/ month
Instant license activation
Billed monthly. Cancel from your account whenever you like.
Same features. More machines, more throughput.
Every machine solves as fast as its own CPU and memory allow. More machines run more threads at the same time, so Silver solves twice as many CAPTCHAs at once and Gold three times as many.
- Unlimited solving, no daily cap
- Unlimited threads, speed scales with your hardware
- 90% to 100% recognition accuracy
- Drop-in replacement for the major solving service APIs
- Works with almost any tool, no coding required
- REST API, SDKs and a browser extension
- Free training when a new CAPTCHA type appears
- Runs on your machine, nothing leaves it
Every CAPTCHA type CapSkip solves is on every license. See the coverage band
Just want to try it first?
Start with a free 3-day trial and solve 500 CAPTCHAs of any type on your own targets.
How MTCaptcha works, and how to bypass it through an API
Sites add MTCaptcha by loading a small script and giving it a sitekey that begins with MTPublic-. In its standard form it shows a picture of four to seven distorted characters, partly covered by a coloured ellipse, with an input box below it and buttons for audio and a new picture. Answers are not case sensitive. Sites that want less friction turn on the invisible mode, which lets most visitors through untouched and only puts the picture in front of the ones it doubts.
Whichever mode a site uses, the outcome a form needs is the same: a verified token, beginning with v1(, that the widget places in a hidden field named mtcaptcha-verifiedtoken. When the form arrives, the site's server asks MTCaptcha whether that token is genuine. That makes the token, not the answer to one particular picture, the thing an MTCaptcha bypass has to produce, and it is what CapSkip returns.
Two properties of the token shape any automation. It is single-use, so every form submission needs a fresh one, and it is short-lived, valid for a few minutes at most, so request it just before you post the form rather than collecting a stock in advance. It is also tied to the sitekey and to the domains that sitekey is registered for, which is why the page address you send has to be the real one.
A few tests can run from your own connection. When you solve MTCaptcha at volume, spread the work over a pool of proxies, either a list set in the app or one proxy sent with each job, because every solve fetches fresh challenges from MTCaptcha, and a steady stream of them from a single address is exactly what rate limiting is designed to slow down.
Related guides: MTCaptcha API reference · Image CAPTCHA solver · CAPTCHA solving for web scraping
What comes back from an MTCaptcha job?
Where do I find the MTCaptcha sitekey?
Does CapSkip handle invisible MTCaptcha?
How long does an MTCaptcha token stay valid?
Do I need proxies for MTCaptcha?
How fast is an MTCaptcha solve?
What if the sitekey or the page address is wrong?
Will my existing MTCaptcha code work with CapSkip?
Does solving more MTCaptcha cost more?
Get past MTCaptcha without paying per token
Point your form automation at CapSkip and let it fetch an MTCaptcha token whenever a page asks for one. Visible pictures, invisible checks and every repeat token are covered by the same monthly price.
