logo
bars

reCAPTCHA v3
i CapMonster Cloud

Rozwiązywanie captcha, instalacja na stronie i testowanie.
Odziedziczyłeś stronę z już wdrożoną captchą lub ochroną, ale bez dostępu do kodu źródłowego? Naturalnie pojawia się pytanie, jaka technologia jest używana, czy działa poprawnie i jak ją przetestować.

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.

Czym jest Google reCAPTCHA v3
Czym jest Google reCAPTCHA v3
reCAPTCHA v3 to niewidoczna ochrona Google, która odróżnia prawdziwych użytkowników od botów bez konieczności zaznaczania pola „Nie jestem robotem”. Na stronie działa ukryty skrypt analizujący zachowanie odwiedzającego i zwracający współczynnik zaufania (score) od 0,0 do 1,0. Programista ustala próg, poniżej którego może być wymagana dodatkowa weryfikacja lub blokada, co zapewnia ochronę bez zbędnych działań po stronie użytkownika.

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:

Tworzenie zadaniaTworzenie zadania
arrow
Wysyłanie żądania APIWysyłanie żądania API
arrow
Odebranie wynikuOdebranie wyniku
arrow
Umieszczenie tokenu na stronieUmieszczenie tokenu na stronie
arrow
Rozpoznawanie reCAPTCHA v3 z użyciem gotowych bibliotek
Usługa CapMonster Cloud udostępnia gotowe biblioteki ułatwiające pracę w językach Python, JavaScript (Node.js) oraz C#.
Python
JavaScript
C#
Rozwiązanie, podstawienie tokena i wysłanie formularza
Przykład w Node.js pokazujący pełny cykl rozpoznawania captchy na Twojej stronie. Możliwe podejścia: użycie żądań HTTP do pobrania HTML i parametrów captchy, wysłanie odpowiedzi i obsługa wyniku; albo użycie narzędzi do automatyzacji (na przykład Playwright) — otwarcie strony, odczekanie na załadowanie captchy, wysłanie parametrów (w testach możesz wysyłać zarówno poprawne, jak i niepoprawne dane), odebranie wyniku przez klienta CapMonster Cloud, podstawienie tokena w formularzu i obserwacja rezultatu.
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('Токен пустой, проверьте sitekey и 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();
})();
Jak podłączyć reCAPTCHA v3 do swojej strony
Aby swobodnie orientować się w działaniu captchy na Twojej stronie, rozumieć logikę jej weryfikacji oraz móc ponownie ją podłączyć lub skonfigurować, zalecamy zapoznanie się z tą sekcją. Opisano w niej proces włączania ochrony — pomoże to szybko zrozumieć wszystkie niuanse.

1. Przejdź na stronę panelu administracyjnego reCAPTCHA.

2. Zarejestruj nową stronę i wybierz typ captchy — reCAPTCHA v3

HowTo Connect image 1

3. Pobierz dwa klucze:

  • Site key — klucz publiczny (używany w frontendzie);
  • Secret key — klucz prywatny (używany na serwerze do weryfikacji)

HowTo Connect image 2

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

Przykład w PHPPrzykład w PHP
arrow

Uwagi:

  • Upewnij się, że po stronie klienta token jest wysyłany w ukrytym polu formularza o nazwie recaptcha-token:
    • <input type="hidden" name="recaptcha-token" id="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.
Background
Możliwe błędy i debugowanie
Bug Icon
Nieprawidłowa strona lub klucz
Captcha nie ładuje się lub zwraca błąd invalid-input-secret.
Bug Icon
Przekroczony czas rozwiązania
Serwer nie doczekał się odpowiedzi, zwiększ czas oczekiwania.
Bug Icon
Pusty token
Błąd przy przekazywaniu wyniku na stronę.
Bug Icon
Odpowiedź success=false
Token wygasł, został użyty ponownie lub sfałszowany. Do diagnostyki włącz logowanie żądań i sprawdzaj pole error-codes w odpowiedzi od Google.
Bug Icon
Niski score (np. <0.5)
Może prowadzić do odrzucenia nawet przy success=true, ponieważ Google ocenia zaufanie do użytkownika na podstawie wyniku.
Bug Icon
Sprawdź action
Aby upewnić się, że token jest przeznaczony dla konkretnej akcji na stronie
Sprawdzenie odporności ochrony
Po integracji upewnij się, że system faktycznie chroni stronę przed automatycznymi działaniami.
Rekomendacje dotyczące bezpieczeństwa i optymalizacji
Przechowuj <b>Secret Key</b> wyłącznie na serwerze, nie przekazuj go do części klienckiej.
Loguj kody błędów (<b>error-codes</b>) oraz wartość <b>score</b>, aby zrozumieć przyczyny odrzuceń.
<b>Sprawdzaj pole action</b> w odpowiedzi od Google, aby upewnić się, że token jest przeznaczony dla właściwej akcji na stronie.
Dodaj na dole formularza linki do <b>Polityki prywatności</b> i <b>Warunków korzystania z usług Google</b>, zgodnie z wymaganiami licencji.
Wnioski

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.

Conclusion