W tym artykule staraliśmy się odpowiedzieć na wszystkie najważniejsze pytania. Pierwszym krokiem w rozwiązywaniu problemu jest ustalenie, jaki system ochrony jest używany. W tym celu możesz skorzystać z listy popularnych captcha i systemów ochrony antybotowej, gdzie znajdziesz przykłady graficzne oraz kluczowe cechy, które pomogą szybko rozpoznać, z czym masz do czynienia.
Jeśli okaże się, że na Twojej stronie używany jest MTCaptcha, kolejnym krokiem będzie dokładniejsze poznanie jej właściwości i sposobu działania. W tym artykule możesz również zapoznać się z instrukcją integracji systemu MTCaptcha, aby w pełni zrozumieć, jak funkcjonuje on na Twojej stronie. Dzięki temu nie tylko lepiej poznasz obecną ochronę, ale też świadomie zaplanujesz jej dalsze utrzymanie.
Jak rozwiązać MTCaptcha przez CapMonster Cloud
Podczas testowania formularzy z MTCaptcha często trzeba zweryfikować, czy captcha jest poprawnie zintegrowana i działa.
Możesz ręcznie sprawdzić captchę na swojej stronie.
- Otwórz stronę formularza i upewnij się, że captcha się wyświetla.
- Spróbuj wysłać formularz bez rozwiązania — serwer powinien zwrócić błąd.
- Po poprawnym rozwiązaniu formularz musi wysłać się bez problemów.
Do automatycznego rozwiązywania wykorzystaj narzędzia takie jak CapMonster Cloud, które przyjmują parametry captcha, przetwarzają je na serwerach i zwracają gotowy token. Wstaw go do formularza, aby przejść weryfikację bez udziału użytkownika.
Praca z CapMonster Cloud poprzez API zazwyczaj obejmuje następujące kroki:
type - MTCaptchaTask
websiteURL - Adres głównej strony, na której rozwiązywana jest captcha.
websiteKey - Klucz MTcaptcha, przekazywany w zapytaniu jako parametr „sk”.
pageAction - Parametr action jest przekazywany w zapytaniu jako „act” i pojawia się podczas weryfikacji tokena. Podawaj go tylko wtedy, gdy jego wartość różni się od domyślnej – %24.
isInvisible - Podaj true, jeśli captcha jest niewidoczna, czyli posiada ukryte pole potwierdzające. W przypadku podejrzenia o bota wykonywana jest dodatkowa kontrola.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task":
{
"type": "MTCaptchaTask",
"websiteURL": "https://www.example.com",
"websiteKey": "MTPublic-abCDEFJAB",
"isInvisible": false,
"pageAction": "login"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"errorCode": null,
"errorDescription": null,
"solution": {
"token": "v1(155506dc,c8c2e356,MTPublic-abCDEFJAB,70f03532a53...5FSDA**)"
},
"status": "ready"
}
// npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, MTCaptchaRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com';
async function main() {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext();
const page = await context.newPage();
let websiteKey = null;
page.on('request', request => {
const url = request.url();
if (url.startsWith('https://service.mtcaptcha.com/mtcv1/api/getchallenge.json')) {
const params = new URL(url).searchParams;
const sk = params.get('sk');
if (sk) {
websiteKey = sk;
console.log('Extracted websiteKey (sk):', websiteKey);
}
}
});
await page.goto(TARGET_URL, { waitUntil: 'networkidle' });
if (!websiteKey) {
console.error('Failed to extract websiteKey (sk) from the page');
await browser.close();
return;
}
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
const mtcaptchaRequest = new MTCaptchaRequest({
websiteURL: TARGET_URL,
websiteKey: websiteKey,
isInvisible: false,
pageAction: 'login'
});
// Rozwiązanie captchy
const result = await client.Solve(mtcaptchaRequest);
const verifiedToken = typeof result?.solution?.value === 'string'
? result.solution.value
: JSON.stringify(result.solution.token);
console.log('VerifiedToken:', verifiedToken);
// Wstawiamy token i wysyłamy formularz (zamień na odpowiedni selektor)
await page.evaluate((token) => {
const input = document.querySelector('#mtcaptcha-verifiedtoken-1');
if (input) input.value = token;
}, verifiedToken);
console.log('Token inserted into input');
// await page.click('button[type="submit"]');
await page.waitForTimeout(5000);
await browser.close();
}
main().catch(err => {
console.error('An error occurred:', err);
});1. Zarejestruj się lub zaloguj się na swoje konto MTCaptcha.
2. Po rejestracji dodaj swoją stronę. Otrzymasz dwa klucze.
- Site Key — klucz publiczny dla frontendu, do wyświetlenia widgetu.
- Private Key — klucz prywatny dla serwera, do weryfikacji poprawności rozwiązań captchy. Przechowuj go tylko na serwerze, nie przekazuj do klienta.
Przykład:
3. Skonfiguruj klienta MTCaptcha:
Wstaw kod w <head> strony.
Zamień <YOUR SITE KEY> na swój Site Key otrzymany w panelu MTCaptcha.
<head>
<script>
var mtcaptchaConfig = {
sitekey: "<YOUR SITE KEY>"
};
(function() {
var mt_service = document.createElement('script');
mt_service.async = true;
mt_service.src = 'https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js';
(document.head || document.body).appendChild(mt_service);
var mt_service2 = document.createElement('script');
mt_service2.async = true;
mt_service2.src = 'https://service2.mtcaptcha.com/mtcv1/client/mtcaptcha2.min.js';
(document.head || document.body).appendChild(mt_service2);
})();
</script>
</head>
Dodaj kontener captchy w <body>
Tam, gdzie chcesz wyświetlić captchę (np. wewnątrz formularza):
<div class="mtcaptcha"></div>Widget załaduje się automatycznie.
Możesz użyć gotowych SDK i wtyczek do szybkiej integracji:
- Server-side SDKs: Java, Node.js, PHP
- Client-side SDKs: React, React Native, Vue
- CMS-wtyczki: WordPress, Drupal
MTCaptcha oferuje także wygodną stronę demo, na której można przetestować i skonfigurować ochronę przed podłączeniem do własnej strony.
4. Praca po stronie serwera. Uzyskaj Verified-Token na kliencie.
Poprzez ukryte pole formularza:
<input type="hidden" name="mtcaptcha-verifiedtoken" />Lub przez JS:
mtcaptcha.getVerifiedToken() / mtcaptchaVerifiedCallback(status)Wyślij token do serwera razem z formularzem lub żądaniem.
Sprawdź token przez API (weryfikacja po stronie serwera):
GET https://service.mtcaptcha.com/mtcv1/api/checktoken?privatekey=<PRIVATE_KEY>&token=<TOKEN>- privatekey — Twój klucz prywatny (tylko serwer)
- token — token od klienta
Alternatywny URL dla serwerów z firewallem:
https://service2.mtcaptcha.com/mtcv1/api/checktokenPrzetwórz odpowiedź:
success: true → captcha zaliczona, kontynuuj przetwarzanie.
{
"success": true,
"tokeninfo": {
"v": "1.0",
"code": 201,
"codeDesc": "valid:captcha-solved",
"tokID": "ae1e60a1e249c217cb7b05c4dba8dd0d",
"timestampSec": 1552185983,
"timestampISO": "2019-03-10T02:46:23Z",
"hostname": "some.example.com",
"isDevHost": false,
"action": "",
"ip": "10.10.10.10"
}
}success: false → błąd (token wygasł, ponowne użycie itp.)
const { MTCaptcha } = require('mtcaptcha');
const PRIVATE_KEY = 'YOUR_PRIVATE_KEY';
const tokenFromClient = 'TOKEN';
const mt = new MTCaptcha(PRIVATE_KEY, tokenFromClient);
mt.verify((result) => {
if (result.success) {
console.log('Captcha passed!', result.tokeninfo);
} else {
console.error('Captcha failed:', result.fail_codes || result.error);
}
});Aby dokładniej poznać możliwości MTCaptcha — dostosowanie widgetu, konfiguracja klienta i serwera, integracja z frameworkami i inne aspekty działania — zalecamy odwołanie się do oficjalnej dokumentacji.
Obsługiwane captchas
Jeśli przejąłeś stronę internetową, na której jest już zainstalowany captcha lub inny system zabezpieczeń, a jednocześnie nie masz dostępu do kodu — to nic strasznego! Dość łatwo jest ustalić, jaka dokładnie technologia jest używana. Aby sprawdzić poprawność działania, możesz skorzystać z usługi rozpoznawania CapMonster Cloud w odizolowanym środowisku testowym, żeby upewnić się, że mechanizm przetwarzania tokenów i logika weryfikacji działają prawidłowo.
W przypadku MTCaptcha wystarczy rozpoznać system, przeanalizować jego zachowanie i upewnić się, że zabezpieczenie działa poprawnie. W artykule pokazaliśmy, jak zidentyfikować MTCaptcha oraz gdzie znaleźć instrukcje dotyczące jego podłączenia lub ponownej konfiguracji, aby móc pewnie utrzymywać ochronę i kontrolować jej działanie.