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 reCAPTCHA v3, 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 reCAPTCHA v3, 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ć reCAPTCHA v3 za pomocą CapMonster Cloud
Podczas testowania formularzy z reCAPTCHA v3 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:
W żądaniu rozwiązania reCAPTCHA v3 należy podać następujące parametry:
type - RecaptchaV3TaskProxyless;
websiteURL - adres strony, na której rozwiązywana jest captcha;
websiteKey - identyfikator klucza (sitekey) podany na stronie twojej witryny z captchą;
minScore - może przyjmować wartość od 0.1 do 0.9;
pageAction - wartość parametru action przekazywana przez widżet ReCaptcha w Google. Wartość domyślna: verify.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"minScore": 0.7,
"pageAction": "myverify"
}
}
{
"errorId":0,
"taskId":407533072
}
https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKv…hKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}
const { chromium } = require('playwright');
const {
CapMonsterCloudClientFactory,
ClientOptions,
RecaptchaV3ProxylessRequest
} = require('@zennolab_com/capmonstercloud-client');
(async () => {
const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta'; // URL Twojej strony z captchą
const SITE_KEY = '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob';
const API_KEY = 'your_capmonster_cloud_api_key'; // Podaj swój klucz API CapMonster Cloud
// Tworzymy klienta CapMonster
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
// Otwieramy przeglądarkę
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });
// Konfiguracja zadania reCAPTCHA v3
const recaptchaRequest = new RecaptchaV3ProxylessRequest({
websiteURL: TARGET_URL,
websiteKey: SITE_KEY,
minScore: 0.6,
pageAction: 'myverify', // dopasowanie do action na stronie
});
// Rozwiązujemy captchę
const solution = await cmcClient.Solve(recaptchaRequest);
const token = solution.solution?.gRecaptchaResponse;
if (!token) {
console.error('Token jest pusty, sprawdź sitekey i URL');
await browser.close();
return;
}
console.log('Otrzymany token:', token);
// Podstawiamy token w ukryte pole i emulujemy kliknięcie przycisku
// Zastąp potrzebnymi selektorami
await page.evaluate((t) => {
const input = document.querySelector('#v3_token');
if (input) input.value = t;
const form = document.querySelector('#v3_form');
if (form) form.submit();
}, token);
console.log('Token został wstawiony, a formularz wysłany');
await page.waitForTimeout(5000);
await browser.close();
})();1. Przejdź na stronę panelu administracyjnego reCAPTCHA.
2. Zarejestruj nową stronę i wybierz typ captchy — reCAPTCHA v3

3. Pobierz dwa klucze:
- Site key — klucz publiczny (używany w frontendzie);
- Secret key — klucz prywatny (używany na serwerze do weryfikacji)

Możesz otworzyć ustawienia, gdzie na przykład dodatkowo określisz domeny, na których reCAPTCHA może być używana, albo skonfigurujesz powiadomienia o problemach ze stroną czy wzroście podejrzanego ruchu.
4. Przykłady kodu dla części klienckiej
Najprostszym sposobem użycia reCAPTCHA v3 jest podłączenie JavaScript API i dodanie atrybutów do przycisku.
Podłączenie API:
<script src="https://www.google.com/recaptcha/api.js"></script>Funkcja callback dla formularza:
<script>
function onSubmit(token) {
document.getElementById("form").submit();
}
</script>
Przycisk z atrybutami reCAPTCHA:
<button class="g-recaptcha"
data-sitekey="reCAPTCHA_sitekey"
data-callback='onSubmit'
data-action='submit'>Submit</button>
Dla pełnej kontroli użyj grecaptcha.execute z parametrem render:
Podłączenie API z kluczem:
<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>Wywołanie programistyczne:
<script>
function onClick(e) {
e.preventDefault();
grecaptcha.ready(function() {
grecaptcha.execute('reCAPTCHA_sitekey', {action: 'submit'}).then(function(token) {
// Wyślij token na serwer do weryfikacji
});
});
}
</script>
Token należy od razu wysłać na serwer do weryfikacji.
Ważne uwagi:
- Okres ważności tokena: token uzyskany z reCAPTCHA v3 jest ważny przez 2 minuty. Upewnij się, że wysyłasz go na serwer w tym czasie.
- Weryfikacja po stronie serwera: po otrzymaniu tokena serwer powinien wysłać żądanie POST na adres https://www.google.com/recaptcha/api/siteverify z parametrami:
– secret: Twój tajny klucz
– response: token otrzymany od klienta– remoteip (opcjonalnie): adres IP użytkownika - Serwer Google zwróci odpowiedź JSON zawierającą informacje o wyniku weryfikacji.
5. Teraz po stronie serwera dokonaj weryfikacji odpowiedzi
<?php
// Twój tajny klucz (Secret Key) reCAPTCHA v3
$secret = 'YOUR_SECRET_KEY';
// Pobieramy token z formularza
$token = $_POST['recaptcha-token'] ?? '';
// Wysyłamy żądanie do Google w celu weryfikacji tokena
$response = file_get_contents(
"https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$token}"
);
$result = json_decode($response, true);
// Sprawdzamy powodzenie i współczynnik zaufania
if ($result['success'] && $result['score'] >= 0.5 && $result['action'] === 'submit') {
echo "Weryfikacja zakończona sukcesem";
} else {
http_response_code(403);
echo "Weryfikacja nieudana";
}
?>
Uwagi:
- Upewnij się, że po stronie klienta token jest wysyłany w ukrytym polu formularza o nazwie recaptcha-token:
- Próg score można zmieniać w zależności od wymaganego poziomu surowości (na przykład 0,3–0,7).
- Sprawdzenie action === 'submit' zwiększa bezpieczeństwo, pomagając upewnić się, że token został wygenerowany dla konkretnej akcji na stronie.
<input type="hidden" name="recaptcha-token" id="recaptcha-token">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 reCAPTCHA v3 wystarczy rozpoznać system, przeanalizować jego zachowanie i upewnić się, że zabezpieczenie działa poprawnie. W artykule pokazaliśmy, jak zidentyfikować reCAPTCHA v3 oraz gdzie znaleźć instrukcje dotyczące jego podłączenia lub ponownej konfiguracji, aby móc pewnie utrzymywać ochronę i kontrolować jej działanie.