Tekstowa CAPTCHA (ImageToText)
i CapMonster Cloud

Rozwiązywanie CAPTCHA, instalacja na stronie i testowanie.

Cennik rozwiązania tekstowa CAPTCHA (ImageToText)

CAPTCHA
Cena (USD)
$ 0.30
1000 tokenów
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żywana jest tekstowa CAPTCHA (ImageToText), 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 tekstowa CAPTCHA (ImageToText), aby w pełni zrozumieć, jak funkcjonuje ona na Twojej stronie. Dzięki temu nie tylko lepiej poznasz obecną ochronę, ale też świadomie zaplanujesz jej dalsze utrzymanie.

Co to jest tekstowa CAPTCHA (ImageToText)
Co to jest tekstowa CAPTCHA (ImageToText)
Tekstowa CAPTCHA (ImageToText) to klasyczny system ochrony stron internetowych oparty na rozpoznawaniu tekstu z obrazu. Użytkownik musi wpisać znaki (litery, cyfry lub ich kombinację) widoczne na zniekształconym obrazie. Takie podejście pozwala odróżnić człowieka od zautomatyzowanych skryptów. Stosuje się je do ochrony formularzy rejestracji i logowania, wysyłania wiadomości, komentarzy oraz zapobiegania masowym automatycznym żądaniom.

Jak rozwiązać tekstową CAPTCHA za pomocą CapMonster Cloud

Podczas testowania formularzy z tekstową CAPTCHA często konieczne jest sprawdzenie, czy CAPTCHA działa poprawnie i jest prawidłowo zintegrowana.
Możesz ręcznie przetestować CAPTCHA umieszczoną na swojej stronie:
  • Otwórz stronę z formularzem i upewnij się, że CAPTCHA jest widoczna.
  • Spróbuj wysłać formularz bez rozwiązania CAPTCHA — serwer powinien zwrócić błąd.
  • Po prawidłowym rozwiązaniu CAPTCHA formularz powinien zostać wysłany bez błędów.
Do automatycznego rozpoznawania CAPTCHA można użyć specjalistycznych usług, np. CapMonster Cloud — narzędzia, które przyjmuje parametry CAPTCHA, przetwarza je na swoich serwerach i zwraca gotową odpowiedź. Można ją wstawić w odpowiednie pole, 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 CAPTCHA z obrazu z użyciem gotowych bibliotek
Usługa CapMonster Cloud udostępnia gotowe biblioteki do wygodnej pracy w językach Python, JavaScript (Node.js) i C#.
Python
JavaScript
C#
Rozwiązanie, wstawienie odpowiedzi i wysłanie formularza
Przykład w Node.js dla pełnego cyklu rozpoznawania CAPTCHA na stronie internetowej. Możliwe podejścia: użycie żądań HTTP do pobrania HTML i parametrów systemu ochrony, wysłanie odpowiedzi i przetworzenie wyniku. Lub, jak w przykładzie poniżej, przy użyciu narzędzi do automatyzacji (np. Playwright) — otwarcie strony, oczekiwanie na weryfikację, przesłanie parametrów przez klienta CapMonster Cloud, otrzymanie wyniku, wstawienie go w odpowiednie pole (do testowania można użyć zarówno poprawnych, jak i niepoprawnych danych) i obejrzenie rezultatu.

  // npm install playwright @zennolab_com/capmonstercloud-client
  // npx playwright install chromium

import { CapMonsterCloudClientFactory, ClientOptions, ImageToTextRequest, CapMonsterModules } from '@zennolab_com/capmonstercloud-client';
import { chromium } from 'playwright';

const API_KEY = "YOUR_API_KEY"; // Podaj swój klucz API CapMonster Cloud

async function solveImageToTextAndFillField() {
    const cmcClient = CapMonsterCloudClientFactory.Create(
        new ClientOptions({ clientKey: API_KEY })
    );

    // W razie potrzeby sprawdź saldo
    const balance = await cmcClient.getBalance();
    console.log("Balance:", balance);

    // 1. Uruchom Playwright i otwórz stronę z formularzem
    const browser = await chromium.launch({ headless: false });
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto("https://example.com/form"); // 2. Pobierz URL CAPTCHA ze strony (przykład przez selektor <img>)

    // 2. Pobierz URL CAPTCHA ze strony (przykład przez selektor <img>)
    const captchaUrl = await page.getAttribute("#captcha-img", "src");

    // 3. Pobierz obraz i przekonwertuj go na Base64
    const response = await fetch(captchaUrl);
    const imageBuffer = await response.arrayBuffer();
    const imageBase64 = Buffer.from(imageBuffer).toString('base64');

    // 4. Utwórz żądanie rozwiązania tekstowej CAPTCHA
    const imageToTextRequest = new ImageToTextRequest({
        body: imageBase64,
        CapMonsterModule: CapMonsterModules.YandexWave, // lub inny moduł
        Case: true,
        numeric: 0,
        recognizingThreshold: 65,
        math: false
    });

    // 5. Pobierz rozwiązanie CAPTCHA
    const result = await cmcClient.Solve(imageToTextRequest);
    console.log("Captcha solution:", result.solution.text);

    // 6. Wstaw rozwiązanie w pole formularza i wyślij
    await page.fill("#captcha-input", result.solution.text); // Zamień na swój selektor
    await page.click("#submit-button"); // Zamień na selektor przycisku
    await page.waitForLoadState("networkidle");

    console.log("Formularz wysłany z rozwiązaniem CAPTCHA");

    // 7. Zamknij przeglądarkę
    await browser.close();
}

solveImageToTextAndFillField().catch(console.error);


  
Jak podłączyć tekstową CAPTCHA do swojej strony
Aby pewnie orientować się w działaniu CAPTCHA na swojej stronie, zrozumieć logikę weryfikacji, ponownie ją podłączyć lub skonfigurować, zalecamy zapoznanie się z tym rozdziałem. Opisuje on proces integracji ochrony i pomoże szybko poznać wszystkie szczegóły.

Krok 1. Wybierz podejście

Najpierw zdecyduj, w jaki sposób będziesz używać CAPTCHA:

Opcja 1 — zewnętrzny dostawca

Odpowiednia, jeśli zależy Ci na szybkiej implementacji i minimalnej obsłudze.

Zalety:

  • Szybka integracja
  • Gotowa ochrona przed botami
  • Brak konieczności samodzielnej aktualizacji algorytmów

Wady:

  • Zależność od zewnętrznej usługi
  • Ograniczone możliwości dostosowania

Opcja 2 — własna tekstowa CAPTCHA

Odpowiednia, jeśli potrzebujesz pełnej kontroli i integracji dopasowanej do swoich potrzeb.

Zalety:

  • Pełna kontrola nad logiką i wyglądem
  • Brak zależności od zewnętrznych usług
  • Możliwość dostosowania do konkretnych scenariuszy

Wady:

  • Musisz samodzielnie zaimplementować ochronę przed botami
  • Wymaga utrzymania i aktualizacji w czasie

Krok 2. Zaimplementuj generowanie CAPTCHA

Dla dostawcy zewnętrznego

  • Zarejestruj się w usłudze
  • Uzyskaj klucze (site key / secret key)
  • Podłącz skrypt na stronie z formularzem

Dla własnej CAPTCHA

  • Wygeneruj losowy ciąg znaków (cyfry lub litery)
  • Narysuj go na obrazie (Canvas, SVG lub generowanie po stronie serwera)
  • Dodaj zniekształcenia: szum, linie, obrót znaków

Krok 3. Wyświetl CAPTCHA użytkownikowi

  • Umieść obraz CAPTCHA obok formularza
  • Dodaj pole tekstowe do wpisywania odpowiedzi
  • Zaimplementuj przycisk odświeżania CAPTCHA

Ważne: przy każdym załadowaniu strony musi być generowany nowy kod.

Krok 4. Wyślij dane na serwer

Podczas wysyłania formularza przekaż:

  • Tekst wpisany przez użytkownika
  • Identyfikator CAPTCHA lub token sesji

Dla własnej CAPTCHA kod nie może być przechowywany po stronie klienta — tylko na serwerze.

Krok 5. Zweryfikuj CAPTCHA na serwerze

Dostawca zewnętrzny

  • Wyślij token CAPTCHA na serwery dostawcy
  • Odbierz wynik weryfikacji (sukces / błąd)

Własna CAPTCHA

  • Porównaj wpisany tekst z zapisaną wartością
  • Uwzględnij czas ważności CAPTCHA (np. 1–2 minuty)

Krok 6. Podejmij decyzję

  • Jeśli CAPTCHA została rozwiązana — wykonaj akcję (logowanie, rejestracja, wysłanie formularza)
  • Jeśli nie — pokaż błąd i wygeneruj nową CAPTCHA

Krok 7. Wzmocnij ochronę (zalecane)

Nawet dla tekstowej CAPTCHA warto dodać:

  • Ograniczenie liczby prób
  • Powiązanie z IP, sesją lub ciasteczkami
  • Tymczasowe (jednorazowe) tokeny
  • Logowanie podejrzanej aktywności
Background
Możliwe błędy i debugowanie
Bug Icon
CAPTCHA z obrazu się nie ładuje
(Pusty obraz, 404/500 lub błąd generowania) — najczęściej wynika to z nieprawidłowej logiki generowania. Upewnij się, że serwer poprawnie tworzy obraz i zwraca go klientowi oraz że ścieżka endpointu jest prawidłowa.
Bug Icon
Nieprawidłowy lub pusty kod CAPTCHA
Sprawdź, czy dane wpisane przez użytkownika są faktycznie wysyłane na serwer i porównywane z zapisaną wartością CAPTCHA.
Bug Icon
Kod się nie zgadza mimo poprawnego wpisania

Upewnij się, że:

  • CAPTCHA nie jest ponownie generowana przed weryfikacją;
  • Kod jest przechowywany osobno dla każdej sesji lub tokena;
  • CAPTCHA nie wygasła.
Bug Icon
CAPTCHA wygasła
Zwiększ TTL CAPTCHA na serwerze lub odśwież ją przy kolejnych próbach wpisania.
Sprawdzenie odporności ochrony
Po integracji ważne jest upewnienie się, że tekstowa CAPTCHA rzeczywiście chroni formularz.
Rekomendacje dotyczące bezpieczeństwa i optymalizacji
Przechowuj prawidłową odpowiedź CAPTCHA <span class="font-bold">tylko na serwerze</span> (pamięć, Redis lub baza danych), nie przekazuj jej klientowi.
Używaj jednorazowych tokenów lub identyfikatorów CAPTCHA.
Ogranicz liczbę prób wpisania dla jednej CAPTCHA.
Zawsze używaj HTTPS do przesyłania danych formularza i odpowiedzi CAPTCHA.
Loguj błędy generowania i weryfikacji CAPTCHA (czas, IP, powód odrzucenia) — ułatwia to debugowanie i analizę ataków.
Regularnie aktualizuj algorytm generowania (czcionki, zniekształcenia, szum).
Wnioski

Jeśli natrafisz na stronę z już zainstalowaną CAPTCHA lub innym systemem ochrony i nie masz dostępu do kodu — nic nie szkodzi! Identyfikacja używanej technologii jest dość prosta. Do sprawdzenia poprawności działania można użyć usługi rozpoznawania CapMonster Cloud w odizolowanym środowisku testowym, aby upewnić się, że mechanizm przetwarzania tokenów i logika weryfikacji działają poprawnie.

W przypadku tekstowej CAPTCHA z obrazu wystarczy rozpoznać system, poznać jego zachowanie i upewnić się, że ochrona działa poprawnie. W artykule pokazaliśmy, jak zidentyfikować tekstową CAPTCHA (ImageToText) i jak ją podłączyć lub ponownie skonfigurować, aby skutecznie utrzymywać ochronę i kontrolować jej działanie.

Conclusion
Przydatne linki
DocIconDokumentacja CapMonster Cloud (praca z tekstową CAPTCHA)DocIconPoradnik: jak stworzyć własną CAPTCHADocIconRejestracja w serwisie CapMonster Cloud

Często zadawane pytania o tekstową CAPTCHA (ImageToText)

  • Przechowuj odpowiedzi CAPTCHA wyłącznie na serwerze, na przykład w pamięci, Redis lub bazie danych, i nigdy nie udostępniaj ich klientowi.
  • Powiąż każdą CAPTCHA z unikalną sesją lub jednorazowym tokenem, aby nie można jej było ponownie wykorzystać między żądaniami.
  • Ustaw krótki czas wygaśnięcia, na przykład 1–2 minuty, aby stare kody automatycznie stawały się nieważne.
  • Unieważnij CAPTCHA natychmiast po pomyślnej weryfikacji, aby była jednorazowa.
  • Ogranicz liczbę prób i generuj nową CAPTCHA po każdej nieudanej próbie zamiast ponownie używać tego samego obrazu.
  • Powiąż każdą CAPTCHA z adresem IP, sesją lub plikiem cookie, aby zapobiec nadużyciom między żądaniami.
  • Loguj błędy generowania i walidacji CAPTCHA, w tym znacznik czasu, IP i powód odrzucenia, aby wykrywać wzorce ataków i dostosowywać progi.
  • Zawsze używaj HTTPS, aby chronić dane formularza i odpowiedzi CAPTCHA podczas przesyłania.
  • Regularnie aktualizuj ustawienia generowania wyzwań, takie jak czcionki, zniekształcenia i szum, aby utrudnić automatyczne rozwiązywanie.

Jeśli obraz CAPTCHA jest pusty lub się nie ładuje, sprawdź, czy serwerowy endpoint generowania poprawnie tworzy obraz, prawidłowo zwraca go klientowi i czy adres URL endpointu jest poprawny.

Jeśli użytkownicy wprowadzają poprawny kod, ale walidacja nie przechodzi, upewnij się, że CAPTCHA nie jest regenerowana między załadowaniem strony a wysłaniem formularza.

Sprawdź, czy przechowywana wartość CAPTCHA jest powiązana z tą samą sesją lub tokenem używanym podczas walidacji.

Sprawdź, czy CAPTCHA wygasła przed wysłaniem, ponieważ wygasły kod spowoduje niezgodność nawet przy poprawnym wprowadzeniu.

Oprócz wymaganych pól type i body możesz użyć pięciu opcjonalnych parametrów do precyzyjnego dostrojenia rozpoznawania:

  • recognizingThreshold: Ustaw wartość od 0 do 100, aby kontrolować próg pewności; niższe wartości akceptują więcej wyników, wyższe są bardziej restrykcyjne.
  • case: Ustaw na true, jeśli CAPTCHA rozróżnia wielkość liter
  • numeric: Ustaw na 1, jeśli obraz zawiera tylko cyfry
  • math: Ustaw na true, jeśli obraz zawiera wyrażenie matematyczne
  • capMonsterModule: Określ moduł rozpoznawania, taki jak yandex, aby poprawić dokładność dla obsługiwanych dostawców. Pełną listę modułów znajdziesz w dokumentacji.

Istnieje ważny wyjątek: przy użyciu modułu captcha_math przez parametr capMonsterModule nie wolno ustawiać math: true w tym samym żądaniu. Dla wszystkich pozostałych modułów, w których obraz CAPTCHA zawiera wyrażenie matematyczne, ustawienie math: true nakazuje solverowi obliczyć i zwrócić wynik numeryczny zamiast surowego ciągu znaków. Czytaj więcej