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.
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.
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.
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:
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>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.
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.