Cloudflare Challenge
i CapMonster Cloud

Rozwiązywanie captcha, instalacja na stronie i testowanie.

Cennik rozwiązania Cloudflare Challenge

CAPTCHA
Cena (USD)
$ 1.30
1000 tokenów
$ 1.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żywany jest Cloudflare Challenge, 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 Cloudflare Challenge, 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.

Co to jest Cloudflare Challenge
Co to jest Cloudflare Challenge
Cloudflare Challenge (lub Interstitial Challenge Pages) to system weryfikacji od Cloudflare, zaprojektowany w celu ochrony stron internetowych przed botami, spamem i złośliwym ruchem. Gdy Cloudflare podejrzewa, że żądanie nie pochodzi od prawdziwego użytkownika (np. z powodu podejrzanego IP lub braku JavaScript), wyświetla Challenge — czyli „wyzwanie”, które należy przejść, aby potwierdzić, że jesteś człowiekiem. Ten typ weryfikacji różni się od Turnstile, ponieważ użytkownik najpierw widzi stronę pośrednią z komunikatem „Just a moment…” i „Verifying you are human. This may take a few seconds.”

Jak rozwiązać Cloudflare Challenge za pomocą CapMonster Cloud

Podczas testowania ochrony z Cloudflare Challenge ważne jest, aby upewnić się, że weryfikacja działa poprawnie i właściwie odfiltrowuje podejrzany ruch.
Możesz ręcznie przetestować zainstalowany na swojej stronie challenge:
  • Otwórz stronę w trybie incognito tam, gdzie spodziewana jest weryfikacja Challenge i upewnij się, że captcha jest wyświetlana.
  • Spróbuj wstawić w przeglądarce błędne ciasteczka cf_clearance (szczegóły poniżej) — serwer powinien zwrócić błąd.
  • Po pomyślnym rozwiązaniu captcha strona powinna otworzyć się bez dalszej weryfikacji.
Do automatycznego testowania i rozpoznawania captcha można użyć specjalistycznych usług, takich jak CapMonster Cloud — narzędzie, które przyjmuje parametry captcha, przetwarza je na swoich serwerach i zwraca gotowe rozwiązanie. Rozwiązanie to (token lub ciasteczko) można wstawić w formularz lub przeglądarkę, 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
Podstawienie cf_clearancePodstawienie cf_clearance
arrow
Rozpoznawanie Cloudflare Challenge za pomocą gotowych bibliotek
Serwis CapMonster Cloud udostępnia gotowe biblioteki do pracy w językach Python, JavaScript (Node.js) i C#.
Python
JavaScript
C#
Rozwiązanie Challenge i podstawienie ciasteczka
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 za pomocą narzędzi automatyzacyjnych (np. Playwright) — otworzyć stronę, poczekać na weryfikację, wysłać parametry przez CapMonster Cloud, uzyskać wynik, wstawić ciasteczka w przeglądarce (do testów można użyć zarówno poprawnych, jak i niepoprawnych danych) i zobaczyć rezultat.

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

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

// Ustawienia — zamień na swoje wartości
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // można przekazać dowolny ciąg
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36';

// Ustawienia proxy
const proxy = {
  proxyType: 'http',
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

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

  // Uruchamiamy przeglądarkę
  const browser = await chromium.launch({
    headless: false,
    proxy: proxy.proxyAddress ? {
      server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
      username: proxy.proxyLogin,
      password: proxy.proxyPassword
    } : undefined
  });

  // Tworzymy kontekst z odpowiednim User-Agent i rozmiarem okna (opcjonalnie)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Tworzymy stronę i ładujemy docelowy URL
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Status początkowego żądania:', resp?.status());

  // Pobieramy HTML strony i konwertujemy na Base64 dla CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Tworzymy zadanie Turnstile, aby uzyskać cf_clearance
  const solveResult = await cmcClient.Solve(new TurnstileRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    cloudflareTaskType: 'cf_clearance',
    htmlPageBase64: htmlBase64,
    userAgent: USER_AGENT,
    proxy: proxy.proxyAddress ? proxy : undefined
  }));

  const cf_clearance = solveResult?.solution?.cf_clearance;
  if (!cf_clearance) {
    console.error('Nie udało się uzyskać cf_clearance z CapMonster:', solveResult);
    await browser.close();
    return;
  }
  console.log('Uzyskano cf_clearance:', cf_clearance);

  // Dodajemy cf_clearance cookie do kontekstu przeglądarki
  await context.addCookies([{
    name: 'cf_clearance',
    value: cf_clearance,
    domain: '.' + new URL(TARGET_URL).hostname,
    path: '/',
    httpOnly: true,
    secure: true
  }]);
  console.log('Cookie cf_clearance zostało pomyślnie dodane do przeglądarki.');

  // Ponownie otwieramy stronę z ustawionym cf_clearance
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Status żądania po ustawieniu cf_clearance:', resp2?.status());

  await browser.close();
  console.log('Skrypt zakończył działanie.');
}

main().catch(err => {
  console.error('Wystąpił błąd:', err);
  process.exit(1);
});
  
Jak podłączyć Cloudflare Challenge do swojej strony
Aby zrozumieć działanie captcha na swojej stronie, logikę weryfikacji i jak ponownie podłączyć lub skonfigurować, zalecamy ten rozdział. Opisuje proces konfiguracji ochrony, co pomoże szybko zrozumieć wszystkie niuanse.
1. Zarejestruj się lub zaloguj i podłącz domenę do Cloudflare.
2. Włącz Challenge za pomocą reguły WAF.
Przejdź do: Security → Custom Rules → Create rule
HowTo Connect image 1

Przykład warunku (sprawdź całą stronę logowania):
http.request.uri.path contains "/login"
3. Wybierz akcję:
Managed Challenge (zalecane) — system sam decyduje, czy i jaki challenge wyświetlić.
Ustaw pozostałe opcje i kliknij Deploy.
Po weryfikacji użytkownik otrzyma ciasteczko cf_clearance, które pozwoli uniknąć ponownego wyświetlania Challenge na tym samym urządzeniu i przeglądarce.
Background
Możliwe błędy i debugowanie
Bug Icon
Nieprawidłowa domena lub konfiguracja reguły
Challenge nie jest wyświetlany. Sprawdź, czy reguła WAF jest powiązana z odpowiednim URI, ścieżką lub hostem.
Bug Icon
Limit czasu ładowania strony lub challenge
Przeglądarka lub klient nie czekał na odpowiedź Cloudflare. Zwiększ timeouty w testach i monitoringu.
Bug Icon
Powtórna weryfikacja lub wygasłe cf_clearance
Jeśli odwiedzający używa już wygasłego cf_clearance, system ponownie pokaże Challenge.
Bug Icon
Po Challenge następuje inna weryfikacja
Jednoczesne użycie Challenge + reguł niestandardowych może prowadzić do cyklicznych weryfikacji. Postępuj zgodnie z zaleceniami Cloudflare w celu rozwiązania tego problemu.
Sprawdzenie odporności ochrony
Rekomendacje dotyczące bezpieczeństwa i optymalizacji
Skonfiguruj reguły WAF i Managed/JS/Interactive Challenge zgodnie z poziomem ryzyka.
Loguj zdarzenia bezpieczeństwa i status przejścia Challenge, aby zrozumieć powody blokad i wykrywać fałszywe alarmy.
Dla przejrzystości i zgodności dodaj linki do <span class="font-bold">Polityki prywatności</span> i <span class="font-bold">Regulaminu</span> Cloudflare/strony na stronach z Challenge.
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 Cloudflare Challenge wystarczy rozpoznać system, przeanalizować jego zachowanie i upewnić się, że zabezpieczenie działa poprawnie. W artykule pokazaliśmy, jak zidentyfikować Cloudflare Challenge oraz gdzie znaleźć instrukcje dotyczące jego podłączenia lub ponownej konfiguracji, aby móc pewnie utrzymywać ochronę i kontrolować jej działanie.

Conclusion

Często zadawane pytania o Cloudflare Challenge

Cloudflare używa cookie cf_clearance do rozpoznawania klienta, który już przeszedł weryfikację. API CapMonster Cloud zwraca je w odpowiedzi getTaskResult.

Dla surowych żądań HTTP: wysyłaj je w nagłówku Cookie: cf_clearance=<value> w kolejnych żądaniach do docelowej witryny.

Dla automatyzacji przeglądarki: wstrzyknij je do kontekstu przeglądarki przed ponownym załadowaniem chronionego URL za pomocą Playwright, Selenium, Puppeteer lub innej przeglądarki headless, aby zautomatyzować rozwiązywanie strony Cloudflare «Just a moment».

Jeśli cookie cf_clearance nie jest już ważne, Cloudflare może ponownie wyświetlić challenge zamiast udzielić dostępu do chronionej treści. W takim przypadku:

  1. Utwórz nowe żądanie createTask używając nowego htmlPageBase64 (strona HTML «Just a moment» zakodowana w Base64, wyświetlana z odpowiedzią 403) z odpowiedzi challenge
  2. Otrzymaj nową wartość cf_clearance.
  3. Ponów żądanie do docelowej witryny z nowym cookie cf_clearance.

Turnstile zazwyczaj osadza widget na stronie lub w przepływie formularza, podczas gdy Cloudflare Bot Challenge przerywa żądanie osobną stroną pośrednią przed załadowaniem docelowej witryny.

Dla Cloudflare Challenge CapMonster Cloud obsługuje dwa tryby wyniku: może zwrócić token lub cookie cf_clearance.

  • Jeśli używasz opcji opartej na tokenie, zadanie można rozwiązać z proxy CapMonster Cloud. W niektórych przypadkach możesz również użyć własnego proxy.
  • Jeśli potrzebujesz cookie cf_clearance w wyniku, musisz użyć własnego proxy podczas tworzenia zadania.

Szczegóły dotyczące użycia proxy znajdziesz w dokumentacji zadania.

CapMonster Cloud udostępnia gotowe biblioteki dla Python, JavaScript/Node.js i C#. Każda biblioteka obejmuje pełny cykl żądań, w tym tworzenie zadania rozwiązania, odpytywanie wyniku, i zwraca token lub cookie cf_clearance po rozwiązaniu challenge.