W zeszłym tygodniu spędziłem 40 minut na debugowaniu perfekcyjnie działającego skryptu w Pythonie, który bez problemu przechodził przez trzy testowe strony — tylko po to, by odkryć, że czwarta jest chroniona przez Cloudflare. Scraper zapętlał się na stronie „Checking your browser…” i zwracał wyłącznie HTML z wyzwaniem. Brzmi znajomo?
Jeśli trafiłeś na ten mur, nie jesteś sam. Ponad 24 miliony aktywnych witryn korzysta dziś z Cloudflare, w tym około 22% wszystkich stron w internecie. To sprawia, że Cloudflare jest najczęstszą przeszkodą dla każdego, kto chce zbierać dane z sieci — czy to do generowania leadów, monitorowania cen, analizy rynku nieruchomości czy analizy konkurencji.
Problem w tym, że większość poradników wrzuca wszystkie techniki obejścia do jednego worka, nie tłumacząc, którą metodę warto wypróbować najpierw w Twojej sytuacji. Ten przewodnik idzie inną drogą: uporządkowane drzewo decyzyjne, uczciwe szacunki skuteczności i ścieżka no-code, którą większość artykułów całkowicie pomija.
- Poziom trudności: od początkującego do średnio zaawansowanego (w zależności od metody)
- Czas potrzebny: ok. 10–30 minut dla ścieżki no-code; w metodach kodowych zależy od podejścia
- Czego potrzebujesz: przeglądarki Chrome (dla ścieżki no-code), opcjonalnie Python 3.9+ (dla metod kodowych) oraz docelowego adresu URL
Czym jest ochrona Cloudflare i dlaczego blokuje Twój scraper?

Cloudflare działa jako odwrotny proxy, który stoi pomiędzy odwiedzającym a serwerem źródłowym strony. Każde żądanie trafia najpierw do Cloudflare, a dopiero on decyduje, czy wyświetlić stronę, wystawić wyzwanie użytkownikowi, czy zablokować dostęp. Kluczowa rzecz do zrozumienia: Cloudflare nie musi wiedzieć, że Twój scraper jest złośliwy. Wystarczy, że zaklasyfikuje ruch jako wystarczająco zautomatyzowany albo podejrzany.
System Bot Management od Cloudflare działa warstwowo — to nie jeden zamek, lecz cały punkt kontrolny bezpieczeństwa. Sprawdza reputację IP, nagłówki HTTP, fingerprint TLS, wykonywanie JavaScriptu, fingerprint przeglądarki i wzorce zachowań. Gdy Twoja biblioteka Python requests wysyła żądanie GET do strony chronionej przez Cloudflare, przegrywa na kilku poziomach jednocześnie: nieprawidłowy handshake TLS, brak wykonania JavaScriptu, brak ciasteczek, brak fingerprintu przeglądarki. Dlatego proste podszywanie się pod nagłówki przestało działać lata temu.
Najczęstsze objawy, które możesz zobaczyć: 403 Forbidden, 503 z komunikatem „Checking your browser…”, 1020 Access Denied, nieskończone pętle wyzwania, widgety Turnstile, które nigdy się nie rozwiązują, oraz strony HTML z wyzwaniem tam, gdzie spodziewałeś się JSON-a.
Wykrywanie pasywne: co Cloudflare sprawdza, zanim strona w ogóle się załaduje
Zanim zobaczysz jakąkolwiek stronę, warstwa pasywna Cloudflare już oceniła Twoje żądanie:
- Reputacja IP: adresy z centrów danych, zakresy chmurowe i znane wyjścia proxy są oznaczane jako podejrzane. Adresy z sieci domowych i komórkowych są znacznie bardziej zaufane. W raportach społeczności z 2026 roku regularnie pojawia się motyw, że lokalne przeglądanie z domowego internetu przechodzi, podczas gdy środowiska Docker lub VPS są blokowane.
- Analiza nagłówków HTTP: Cloudflare porównuje User-Agent, Accept-Language, kolejność nagłówków i wersję HTTP. Niezgodność — na przykład deklarowanie Chrome 136, podczas gdy handshake TLS krzyczy „Python” — od razu zdradza automatyzację.
- Fingerprint TLS (JA3/JA4): podczas handshake TLS klient ujawnia zestaw obsługiwanych szyfrów, rozszerzeń i preferencji protokołów. JA3/JA4 kompresują to do identyfikatora. Prawdziwy Chrome i skrypt w Pythonie
requestszostawiają zupełnie inne „kształty”. - Fingerprint HTTP/2: przeglądarki i biblioteki HTTP różnią się ramek SETTINGS HTTP/2, kolejnością pseudo-nagłówków i zachowaniem priorytetów. Prace Cloudflare nad JA4 Signals wykraczają poza identyfikację pojedynczego żądania i śledzą wzorce między żądaniami w czasie.
- AI Labyrinth: to nowsza pułapka Cloudflare. Zamiast blokować podejrzane crawlery, kieruje je do stron-pułapek generowanych przez AI, które wyglądają wiarygodnie, ale marnują zasoby crawlera. Twój scraper może nawet nie zauważyć, że wpadł w sidła.
Wykrywanie aktywne: wyzwania uruchamiane w przeglądarce
Gdy kontrole pasywne nie dają jednoznacznej odpowiedzi, Cloudflare przechodzi do wyzwań aktywnych:
- Wyzwania JavaScript: klasyczny ekran „Checking your browser…”. System JavaScript Detections od Cloudflare uruchamia niewidoczne skrypty, by rozpoznawać zautomatyzowane żądania.
- Turnstile: zamiennik CAPTCHA od Cloudflare. Tryby widgetu Turnstile obejmują Managed, Non-Interactive i Invisible. Analizuje ruch myszy, środowisko przeglądarki, fingerprint TLS i więcej — niekoniecznie pokazując widoczną łamigłówkę.
- Fingerprinting Canvas i WebGL: te kontrole wykrywają headless browsery, które renderują się inaczej niż prawdziwe przeglądarki.
- Sygnały behawioralne: timing żądań, wzorce przewijania, sekwencje kliknięć. Scraper pobierający 50 stron w 3 sekundy bez ruchu myszą nie przypomina człowieka.
Praktyczny wniosek: jeśli Cloudflare przeszedł do aktywnego wyzwania, zwykłe klienty HTTP typu requests, httpx, a nawet curl_cffi nie wystarczą. Potrzebujesz czegoś, co uruchomi prawdziwe środowisko przeglądarki.
Poziomy ochrony Cloudflare: dlaczego ten sam skrypt działa na jednej stronie, a na innej nie
To jest coś, co większość poradników o obchodzeniu Cloudflare pomija całkowicie. Ochrona Cloudflare nie jest jednolita. Strona na darmowym planie Cloudflare z „Security Level: Medium” to zupełnie inne wyzwanie niż witryna na Enterprise z Bot Management i włączonym Turnstile. Ten sam skrypt, który gładko przejdzie przez jedną, na drugiej rozbije się o mur.
| Poziom Cloudflare | Typowe zabezpieczenia | Trudność obejścia | Co zwykle działa |
|---|---|---|---|
| Plan Free (niski poziom bezpieczeństwa) | Bot Fight Mode, podstawowe reguły WAF, reputacja IP | ⭐ Niska | wykrywanie wewnętrznego API, curl_cffi z poprawnymi nagłówkami, prawdziwa sesja przeglądarki |
| Plan Pro (średni) | Super Bot Fight Mode, Managed Challenge, wykrywanie JavaScriptu | ⭐⭐ Średnia | prawdziwa sesja przeglądarki, stealth browser automation, proxy z sieci domowej |
| Business | Silniejszy WAF, Bot Analytics, ostrzejsze wyzwania na kluczowych ścieżkach | ⭐⭐⭐ Średnio–wysoka | ekstrakcja z sesji przeglądarki, utrzymywanie sesji, proxy domowe/mobilne, płatne API do scrapowania |
| Enterprise / Bot Management | bot score, pola JA3/JA4, reguły per endpoint, Turnstile, AI Labyrinth | ⭐⭐⭐⭐ Wysoka | wewnętrzne API (jeśli dostępne), narzędzia oparte na sesji użytkownika, profesjonalne API do scrapowania |

Strona z cennikiem Cloudflare podaje Free za 0 USD, Pro za 20 USD/mies., Business za 200 USD/mies. i Enterprise z ceną ustalaną indywidualnie. Bot Fight Mode to prosty przełącznik dla Free; Super Bot Fight Mode dodaje więcej kontroli dla Pro/Business; Enterprise Bot Management zapewnia granularne bot score i reguły specyficzne dla endpointów.
Jak mniej więcej rozpoznać poziom ochrony: błąd 403 z komunikatem Cloudflare i bez skryptu wyzwania często oznacza blokadę przez WAF albo odrzucenie fingerprintu. cf-turnstile div albo skrypt challenges.cloudflare.com/turnstile/v0/api.js oznacza Turnstile. Ekran „Checking your browser” sugeruje Managed Challenge. Błędy tylko na konkretnych ścieżkach po poprawnym załadowaniu strony głównej często wskazują na reguły WAF albo Bot Management zależne od endpointu.
Rozpoznaj poziom ochrony zanim wybierzesz metodę. Oszczędzi Ci to godzin debugowania.
Drzewo decyzyjne „spróbuj tego najpierw” dla obchodzenia Cloudflare
Zamiast losowo testować metody, trzymaj się uporządkowanej kolejności. Zacznij od najprostszej i najbardziej niezawodnej, a dopiero potem eskaluj:
| Krok | Spróbuj najpierw | Dlaczego | Jeśli nie działa → |
|---|---|---|---|
| 1 | Sprawdź, czy istnieje wewnętrzne/niedokumentowane API | Omija Cloudflare całkowicie; najszybsze i najpewniejsze | Krok 2 |
| 2 | Użyj narzędzia no-code z wbudowanym renderowaniem przeglądarki (np. Thunderbit) | Bez konfiguracji, automatycznie obsługuje wyzwania JS | Krok 3 |
| 3 | Podszywanie się pod fingerprint TLS (curl_cffi) | Szybkie, lekkie, bez potrzeby uruchamiania przeglądarki | Krok 4 |
| 4 | Stealth browser automation (SeleniumBase UC / Puppeteer stealth) | Obsługuje wyzwania JS i fingerprinting | Krok 5 |
| 5 | FlareSolverr + Docker | Open source, przyjazne dla serwera | Krok 6 |
| 6 | Płatne API do scrapowania (ScrapingBee, ZenRows, Scrapfly itd.) | Przenosi cały wyścig zbrojeń na dostawcę | — |

Logika jest prosta: najpierw darmowe i najmniej pracochłonne, kod i płatne rozwiązania na końcu. Przeskocz do kroku, który pasuje do Twojej sytuacji.
Wynik społecznościowego benchmarku z marca 2026 sugerował, że curl_cffi przeszedł 16 z 20 testowanych domen (80%), FlareSolverr pokrywał około 55–70%, a płatne agregatory proxy osiągały średnio około 97% skuteczności — ale ta sama dyskusja ostrzega, że wyniki zmieniają się wraz z aktualizacjami Cloudflare. Traktuj wszystkie wskaźniki skuteczności jako orientacyjne, nie gwarantowane.
Krok 1: Omiń walkę — znajdź wewnętrzne API ukryte za Cloudflare
Cztery różne wątki na forach, na które trafiłem, polecają znalezienie wewnętrznego API strony zamiast frontalnej walki z Cloudflare. I szczerze? To najrozsądniejszy pierwszy ruch. Jeśli witryna ma wewnętrzne API, omijasz Cloudflare całkowicie — bez sztuczek, bez podszywania się pod fingerprint, bez stealth pluginów.

Oto uporządkowane podejście:
- Otwórz Chrome DevTools → przejdź do zakładki Network → filtruj po XHR/Fetch.
- Wejdź w interakcję ze stroną: wyszukuj, filtruj, przechodź między stronami, przewijaj. Obserwuj, czy w Network pojawiają się odpowiedzi JSON.
- Sprawdź URL żądania i nagłówki. Często endpoint API ma słabszą ochronę niż strona frontendowa albo nie ma jej wcale.
- Kliknij prawym przyciskiem na żądanie → Copy → Copy as cURL. Wklej do terminala lub Postmana i przetestuj.
- Odtwórz żądanie w Pythonie (używając
requestslubcurl_cffi) z tymi samymi nagłówkami, ciasteczkami i parametrami zapytania.
Jeśli API zwraca uporządkowany JSON, możesz w ogóle nie potrzebować tradycyjnego scrapera. Wątek na Reddicie ze stycznia 2026 opisywał dokładnie taki przypadek: użytkownik zablokowany przez Cloudflare mimo curl_cffi odkrył, że jedyną działającą drogą było bezpośrednie przechwycenie odpowiedzi API.
Praktyczna wskazówka: gdy kopia cURL zacznie działać, zacznij usuwać zbędne nagłówki. Nagłówki typu sec-ch-ua, ciasteczka, tokeny CSRF i referer mogą być potrzebne; kontrolki cache przeglądarki zwykle nie. Zachowaj spójny fingerprint TLS z User-Agentem, jeśli przechodzisz z cURL skopiowanego z przeglądarki do kodu.
Ograniczenia: nie każda strona ma dostępne API. Niektóre wymagają logowania, tokenów CSRF, podpisanych parametrów żądania lub ciasteczek powiązanych z sesją. Ale gdy to działa, jest to metoda z niemal 99% skutecznością i bez utrzymania.
Wypróbuj Thunderbit do scrapowania w przeglądarce
Krok 2: Ścieżka no-code — obejdź Cloudflare za pomocą rozszerzenia do przeglądarki (Thunderbit)
Większość konkurencyjnych poradników zakłada, że czytelnik pisze w Pythonie albo JavaScript. Ale ten temat interesuje też zespoły sprzedażowe budujące listy leadów, działy e-commerce monitorujące ceny konkurencji oraz analityków nieruchomości pobierających dane o ofertach. Ci ludzie nie chcą stawiać kontenerów Docker.
Omiń Cloudflare za pomocą rozszerzenia do przeglądarki Get Started Free
Rozszerzenie Chrome, takie jak Thunderbit, naturalnie radzi sobie z wieloma kontrolami Cloudflare, ponieważ działa wewnątrz Twojej prawdziwej sesji przeglądarki. Dziedziczy prawdziwy fingerprint TLS Chrome, Twoje ciasteczka, stan zalogowania i sygnały behawioralne — dokładnie to, czemu Cloudflare ufa. Bez stealth pluginów, bez xvfb-run, bez poleceń terminala.

Instrukcja krok po kroku
- Zainstaluj rozszerzenie Thunderbit do Chrome z Chrome Web Store.
- Otwórz w Chrome stronę chronioną przez Cloudflare. Jeśli Cloudflare wystawi wyzwanie, przejdź je jak zwykły użytkownik — kliknij checkbox Turnstile, poczekaj aż strona „Checking your browser” zniknie. Jesteś prawdziwą osobą w prawdziwej przeglądarce; Cloudflare Cię przepuści.
- Kliknij „AI Suggest Fields” w panelu bocznym Thunderbit. AI przeanalizuje stronę i zaproponuje kolumny danych, takie jak „Nazwa produktu”, „Cena”, „Ocena” lub inne odpowiednie pola.
- Sprawdź sugerowane pola. Usuń niepotrzebne, dodaj własne, opisując po angielsku lub po polsku, czego potrzebujesz.
- Kliknij „Scrape”. Thunderbit wyciągnie dane z widocznej strony.
- Eksportuj do Google Sheets, Excel, Airtable, Notion, CSV lub JSON.
W przypadku stron z paginacją Thunderbit obsługuje zarówno przewijanie po kliknięciu, jak i infinite scroll. Dla stron szczegółów (na przykład gdy masz listę linków do produktów i chcesz pobrać parametry z każdej podstrony), użyj scrapowania podstron — Thunderbit odwiedzi każdy link i wzbogaci Twoją tabelę.
Z mojego doświadczenia cały proces od instalacji do wyeksportowanego arkusza dla typowego zbioru 50–100 wierszy zajmuje około 5–10 minut.
Kiedy scrapowanie w przeglądarce sprawdza się najlepiej, a kiedy nie
Chcę być uczciwy wobec ograniczeń. Scrapowanie oparte na przeglądarce jest związane z szybkością Twojej sesji. Idealnie nadaje się do zadań średniej skali — od setek do niskich tysięcy stron. Jeśli musisz crawlować miliony stron według harmonogramu, lepsze będą metody kodowe albo API.
Opcja Cloud Scraping w Thunderbit może przyspieszyć pracę, scrapując do 50 stron jednocześnie dla publicznie dostępnych witryn. A w workflow deweloperskich albo przy większej skali Web Scraper API Thunderbit obsługuje renderowanie JavaScriptu, ochronę anty-bot i rotację proxy, z przetwarzaniem wsadowym do 50–100 URL-i na żądanie.
Ale dla użytkownika biznesowego, który zbiera leady, dane cenowe lub oferty nieruchomości na rozsądną skalę? To często jedyna metoda, której potrzebujesz. Bez kodu, bez proxy, bez utrzymania.
Krok 3: Podszywanie się pod fingerprint TLS z curl_cffi (lekka metoda kodowa)
Jeśli dobrze czujesz się w Pythonie i ścieżka no-code nie pasuje do Twojego workflow, curl_cffi to najlżejsza opcja kodowa. To biblioteka Pythona oparta na libcurl, która potrafi udawać fingerprint TLS prawdziwych przeglądarek. W przeciwieństwie do requests czy httpx, Twój handshake TLS wygląda tak, jakby pochodził z Chrome albo Safari.
Na 2026 rok obsługiwane profile impersonacji obejmują chrome136, safari184 i wiele historycznych profili. Biblioteka miała wydanie PyPI jeszcze w kwietniu 2026, więc jest aktywnie rozwijana.
Kiedy używać: strony z ochroną Cloudflare na poziomie Free lub Pro, które bazują głównie na pasywnym fingerprintingu — bez aktywnego wyzwania JavaScript ani Turnstile.
Prosty przykład:
from curl_cffi import requests
url = "https://example.com/products"
resp = requests.get(
url,
impersonate="chrome136",
headers={
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"accept-language": "en-US,en;q=0.9",
},
timeout=30,
)
print(resp.status_code)
print(resp.text[:500])
Jedna rzecz, która często sprawia problemy: dopasuj User-Agent do profilu impersonacji. Jeśli podszywasz się pod Chrome 136, nie wysyłaj User-Agentu dla Chrome 120. Taka rozbieżność sama w sobie jest sygnałem.
Ograniczenia: curl_cffi nie wykonuje JavaScriptu. Jeśli strona wyświetla wyzwanie „Checking your browser” albo widget Turnstile, ta metoda zawiedzie. Nie nadaje się też do stron, które wymagają stanu sesji opartego na ciasteczkach z wyzwania przeglądarkowego. Traktuj ją jako szybki, tani pierwszy strzał przeciwko ochronie wyłącznie pasywnej.
Alternatywy z tej samej rodziny: tls-client i curl-impersonate oferują podobne możliwości impersonacji TLS.
Krok 4: Stealth browser automation (Puppeteer Stealth i SeleniumBase UC)
Podszywanie się pod TLS nie wystarczy, gdy strona wymaga uruchamiania JavaScriptu, aktywnych wyzwań albo Turnstile. Wtedy potrzebujesz pełnej przeglądarki. Dwie główne opcje:
- SeleniumBase UC Mode (Python): dokumentacja wprost opisuje UC Mode jako sposób, by automatyzacja wyglądała bardziej ludzko i omijała usługi anty-bot. Zawiera przykłady obsługi Turnstile od Cloudflare.
- Puppeteer z
puppeteer-extra-plugin-stealth(Node.js): nadal szeroko używany, ale w 2026 coraz bardziej kruchy. W społeczności pojawiają się raporty o wykrywaniu przez flagi CDP (Chrome DevTools Protocol) i o niedopasowanych profilach przeglądarki.
Oba narzędzia uruchamiają prawdziwą przeglądarkę Chromium, ale maskują wykrywalne sygnały automatyzacji: navigator.webdriver, metadane WebGL, listy pluginów i wiele innych.
Wskazówki konfiguracyjne, które naprawdę mają znaczenie:
- Używaj trybu z oknem (nie headless). Dokumentacja SeleniumBase ostrzega, że UC Mode jest wykrywalny w headless. Na serwerach Linux użyj wirtualnego wyświetlacza.
- Losuj rozmiar okna i User-Agent, ale utrzymuj ich spójność ze sobą i z geolokalizacją proxy.
- Dodawaj realistyczne opóźnienia między akcjami. 200 ms między ładowaniami stron krzyczy „bot”.
- Zachowuj ciasteczka i profile przeglądarki po przejściu pierwszego wyzwania. Nie rozwiązuj wyzwania od nowa przy każdym żądaniu.
- Połącz z proxy z sieci domowej, by poprawić reputację IP.
Ryzyko tej metody to utrzymanie. Stosy automatyzacji przeglądarki psują się, gdy Chrome się aktualizuje, Cloudflare dodaje nowy sygnał, stealth plugin nie nadąża albo cel dodaje Turnstile zależny od ścieżki. Benchmark ScrapeOps pokazał, że wiele konfiguracji stealth-browser oblewa testy fingerprintu przez kombinacje typu „franken-fingerprint” — niedopasowane strefy czasowej, języka i geolokalizacji proxy.
Ta metoda jest mocna, ale operacyjnie droga. Zarezerwuj czas na ciągłe poprawki.
Rotacja proxy: dlaczego IP ma znaczenie tak samo jak fingerprint
Nawet przy idealnym stealth przeglądarki zbyt wiele żądań z jednego IP wywoła limity. Cloudflare znacznie bardziej ufa IP z sieci domowych i mobilnych niż adresom z centrów danych.
- Proxy domowe: około 1,50–8+ USD/GB przy wejściowych wolumenach w 2026 roku. Bardziej zaufane, ale droższe.
- Proxy z centrów danych: tańsze, ale szybko zawodzą na poważnych celach chronionych przez Cloudflare.
- Strategia rotacji: zmieniaj IP per sesja, nie per żądanie. Rotacja przy każdym requestcie psuje ciasteczka powiązane z sesją i
cf_clearance. W ramach jednej sesji utrzymuj spójność IP, ciasteczek i fingerprintu.
Nie istnieje magiczna „minimalna wielkość puli proxy”. Niskonakładowe scrapowanie leadów może działać na kilku trwałych sesjach domowych; monitor cen na dużą skalę może wymagać setek wyjść i logiki ponawiania.
Krok 5: FlareSolverr — open-source’owy serwer do omijania Cloudflare
FlareSolverr to open-source’owy serwer proxy, który używa Chromium z undetected-chromedriver w kontenerze Docker, aby rozwiązywać wyzwania Cloudflare i zwracać cookies/nagłówki do ponownego wykorzystania. Miał wydanie v3.5.0 w maju 2026, więc nadal jest aktywnie rozwijany.
Kiedy używać: po stronie serwera, w pipeline’ach scrapujących, gdzie potrzebujesz trwałej usługi do rozwiązywania wyzwań — na przykład automatycznego zadania nocnego, które wymaga świeżych ciasteczek cf_clearance.
Jak to działa: Twój scraper wysyła URL do API FlareSolverr. FlareSolverr otwiera stronę w przeglądarce, próbuje rozwiązać wyzwanie i zwraca HTML oraz cookies. Następnie możesz użyć tych cookies w zwykłym kliencie HTTP przy kolejnych żądaniach.
Przegląd konfiguracji: Docker Compose, uruchomienie kontenera, wysyłanie żądań POST do lokalnego endpointu API. ScrapeOps ma solidny poradnik.
Ograniczenia, o których chcę jasno powiedzieć:
- Nie rozwiązuje niezawodnie interaktywnych wyzwań Turnstile ani Enterprise Bot Management.
- Problemy na GitHubie i wątki na Reddicie pokazują niespójne zachowanie: błędy wykrywania wyzwań, timeouty Turnstile, crashe stron.
- Wymaga infrastruktury Docker i stałego utrzymania.
- Jest zasobożerny — każde rozwiązanie wyzwania uruchamia nowy kontekst przeglądarki.
Szacowana skuteczność: 60–80% przy celach o średniej ochronie. Niżej dla Enterprise, wyżej dla prostszych stron z wyzwaniami. Jeśli FlareSolverr nie wystarcza, czas rozważyć płatne API.
Krok 6: Płatne API do scrapowania, które załatwiają Cloudflare za Ciebie
Czasem zwykła kalkulacja pokazuje, że utrzymywanie własnej infrastruktury stealth kosztuje więcej w roboczogodzinach inżynierów niż abonament. Płatne API do scrapowania przenoszą cały wyścig zbrojeń do wyspecjalizowanego dostawcy — wysyłasz URL, a oni zajmują się fingerprintingiem, proxy, rozwiązywaniem wyzwań i ponawianiem prób.
Jak je porównywać:
| Dostawca | Obsługa Cloudflare | Renderowanie JS | Proxy domowe | Ustrukturyzowany wynik | Model cenowy |
|---|---|---|---|---|---|
| ScrapingBee | Tak | Tak | Tak | tylko HTML | kredyty per request |
| ZenRows | Tak (deklaruje >99% skuteczności) | Tak | Tak (premium) | HTML, częściowe parsowanie | CPM z mnożnikami |
| Scrapfly | Tak (wymienia CF, Akamai, DataDome) | Tak | Tak | HTML, częściowe parsowanie | model kredytowy |
| Browserless | Tak | Tak (headless Chrome) | Tak (wbudowane) | HTML, zrzuty ekranu | model jednostkowy |
| Thunderbit API | Tak | Tak | Tak | ustrukturyzowany JSON/CSV z AI schema | darmowy plan + płatne pakiety |
Kiedy to ma sens: scrapowanie na dużą skalę, wymagania niezawodności klasy enterprise albo sytuacje, gdy zespół nie chce utrzymywać infrastruktury scrapującej. Koszt: mniej więcej 30–500+ USD/mies. dla małego i średniego użycia, rosnący przy większych wolumenach enterprise.
Warto osobno wspomnieć o Thunderbit API, bo zwraca ustrukturyzowane dane, a nie tylko surowy HTML. Jego endpoint Extract potrafi przetwarzać wsadowo do 50 URL-i na request i zwracać JSON/CSV na podstawie schematu napędzanego przez AI — przydatne, jeśli potrzebujesz czystych danych gotowych do analizy, a nie HTML do samodzielnego parsowania.
Uczciwa tabela skuteczności: co naprawdę działa, a co się psuje
Przez cały 2025–2026 śledziłem raporty społeczności, zgłoszenia na GitHubie i deklaracje dostawców. Poniżej szczere porównanie. To szacunki orientacyjne, nie wyniki laboratoryjne:

| Metoda | Szac. skuteczność | Nakład na utrzymanie | Psuje się, gdy… | Zakres kosztów |
|---|---|---|---|---|
| Wewnętrzne API (jeśli istnieje) | ~90–99% | Niski | API się zmienia, dochodzi uwierzytelnianie, tokeny stają się podpisane | Darmowe |
| Rozszerzenie do przeglądarki (Thunderbit) | ~85–95% (prawdziwa sesja) | Niski (AI dostosowuje się do zmian layoutu) | Strona wymaga specjalnego flow logowania, agresywne Turnstile przy każdej akcji | Dostępny darmowy plan |
curl_cffi / podszywanie TLS | ~70–85% | Średni (aktualizacje fingerprintu) | Cloudflare zmienia kontrole JA3, wymagane aktywne wyzwanie JS | Darmowe |
| Puppeteer + stealth plugin | ~70–90% | Wysoki (pluginy aktualizują się z opóźnieniem) | wykrywanie CDP, nowe sygnały fingerprintu, wykrywanie headless | Darmowe + koszt proxy |
| FlareSolverr | ~60–80% | Wysoki (Docker, dryf zależności) | ochrona klasy Enterprise, interakcja z Turnstile | Darmowe + koszt infrastruktury |
| Płatne API do scrapowania | ~85–95% | Niski (utrzymuje je dostawca) | dostawca nie zaktualizował rozwiązania; przekroczony budżet | ok. ~$30–500+/mies. |
Najważniejsza nie jest kolumna z procentem skuteczności — tylko „Psuje się, gdy…”. Każda metoda ma swój punkt awarii. Najlepsza strategia to wybrać najmniej kosztowne rozwiązanie, które działa na Twój cel, i mieć plan awaryjny.
Nie istnieje rozwiązanie permanentne. Cloudflare stale się rozwija. Wyścig zbrojeń jest realny.
Jak pozostać poza radarem Cloudflare (niezależnie od metody)
Niezależnie od tego, którą metodę wybierzesz, kilka nawyków pozwala dłużej pozostać poza radarem Cloudflare:
- Szanuj limity żądań. Dodawaj realistyczne opóźnienia między requestami — minimum 2–5 sekund przy przeglądaniu w stylu użytkownika. Uderzanie w stronę z prędkością maszyny to najszybsza droga do blokady.
- Utrzymuj spójny fingerprint. User-Agent, fingerprint TLS, wersja przeglądarki, strefa czasowa, locale i geografia IP powinny opowiadać tę samą historię. Chrome 136 z niemieckiego IP, locale
en-USi handshake TLS z Pythona to sprzeczność. - Używaj ponownie ciasteczek i sesji po przejściu wyzwania. Nie rozwiązuj wyzwania od nowa przy każdym requestcie.
- Nie zmieniaj IP w trakcie sesji. Cloudflare śledzi ciągłość sesji.
- Korzystaj z IP domowych lub mobilnych, jeśli przypadek użycia i budżet to uzasadniają.
- Monitoruj miękkie blokady: HTML z wyzwaniem tam, gdzie spodziewałeś się JSON, puste tabele, przekierowania do logowania albo strony, które wyglądają podejrzanie jak pułapki z AI Labyrinth.
- Unikaj godzin największego ruchu, gdy operatorzy mogą zaostrzać reguły WAF.
- Zbuduj ścieżki awaryjne: najpierw API → potem sesja przeglądarki → potem płatny dostawca.
Dla użytkowników Thunderbit szczególnie ważne jest to, że AI automatycznie dostosowuje się do zmian układu strony, więc spędzasz mniej czasu na utrzymywaniu selektorów CSS, a więcej na realnym korzystaniu z danych.
Krótka uwaga o kwestiach prawnych i etycznych
To nie jest główny temat artykułu, ale zbyt ważny, by go pominąć.
Scraping publicznie dostępnych danych ma w niektórych kontekstach korzystne orzecznictwo w USA — uzasadnienie hiQ v. LinkedIn w sprawie CFAA przetrwało odesłanie przez Sąd Najwyższy, choć strony zawarły ugodę w 2022 roku i pełen obraz jest bardziej złożony. Później Reddit pozwał Anthropic w 2025 roku za rzekome scrapowanie komentarzy użytkowników, a Reddit pozwał też Perplexity i firmy zajmujące się scrapingiem danych jeszcze w tym samym roku.
W UE GDPR ma zastosowanie zawsze, gdy w grę wchodzą dane osobowe, a AI Act UE nakłada dodatkowe obowiązki związane z nieselektywnym scrapingiem do trenowania AI.
Praktyczne zasady:
- Zawsze sprawdzaj regulamin strony.
- Ochrona Cloudflare jest sygnałem, że właściciel strony chce kontrolować automatyczny dostęp — uszanuj ten zamiar.
- Unikaj zbierania danych osobowych bez odpowiedniej podstawy prawnej.
- W komercyjnych lub wysokowolumenowych workflow preferuj oficjalne API, licencjonowane dane lub pisemną zgodę, jeśli jest dostępna.
- Gdy masz wątpliwości, skonsultuj się z prawnikiem w odniesieniu do swojego konkretnego przypadku i jurysdykcji.
Thunderbit jest projektowany z myślą o legalnych zastosowaniach biznesowych — generowaniu leadów, monitorowaniu cen, badaniach rynku — z wykorzystaniem publicznie dostępnych danych.
Podsumowanie: od czego zacząć i co wypróbować później
Największą oszczędnością czasu w całym tym artykule nie jest narzędzie ani fragment kodu — lecz rozpoznanie poziomu ochrony, zanim zaczniesz. Sam ten krok oszczędza godziny debugowania metody, która nigdy nie miała prawa zadziałać.
Zacznij tutaj:
- Sprawdź, czy istnieje wewnętrzne API (jest darmowe, szybkie i często pomijane).
- Jeśli jesteś użytkownikiem biznesowym i nie piszesz kodu, wypróbuj rozszerzenie Thunderbit do Chrome — Twoja prawdziwa sesja przeglądarki to najlepszy atut przeciwko Cloudflare.
- Jeśli jesteś deweloperem i cel używa tylko pasywnego fingerprintingu, spróbuj
curl_cffi. - Przechodź do stealth browserów, FlareSolverr lub płatnych API dopiero wtedy, gdy prostsze metody zawiodą.
Żadna pojedyncza metoda nie jest wieczna. Połącz narzędzie dopasowane do skali z planem awaryjnym, a spędzisz znacznie mniej czasu, patrząc na strony 403.
Jeśli chcesz zgłębić temat, na blogu Thunderbit napisaliśmy także o scrapowaniu bez kodu, AI web scrapingu i najlepszych AI web scraperach. A jeśli chcesz zobaczyć rozszerzenie w akcji, zajrzyj na kanał Thunderbit na YouTube po filmy instruktażowe.
Wypróbuj Thunderbit na stronach chronionych przez Cloudflare
Wypróbuj Thunderbit AI Web Scraper Get Started Free
FAQ
1. Czy da się całkowicie obejść ochronę Cloudflare?
Żadna pojedyncza metoda nie gwarantuje 100% skuteczności, zwłaszcza przy Enterprise Bot Management z Turnstile, fingerprintingiem JA4 i AI Labyrinth. Najbardziej niezawodne podejścia łączą prawdziwy fingerprint przeglądarki z dobrą reputacją IP. Znalezienie wewnętrznego API jest najbliższe „pełnemu” obejściu, bo omija Cloudflare całkowicie — ale nie każda strona takie API ma.
2. Czy obchodzenie Cloudflare podczas scrapowania jest legalne?
To zależy od jurysdykcji, regulaminu strony i tego, jakie dane zbierasz. Scraping publicznie dostępnych danych ma w niektórych kontekstach korzystne orzecznictwo w USA (hiQ v. LinkedIn), ale omijanie technicznych mechanizmów kontroli dostępu, łamanie ToS albo zbieranie danych osobowych bez podstawy prawnej może rodzić ryzyko prawne. W workflow komercyjnych preferuj oficjalne API lub licencjonowane dane, jeśli są dostępne, i skonsultuj się z prawnikiem, jeśli masz wątpliwości.
3. Jaki jest najprostszy sposób na ominięcie Cloudflare bez kodowania?
Rozszerzenia do przeglądarki, takie jak Thunderbit, które działają w Twojej prawdziwej sesji Chrome, automatycznie obsługują wyzwania Cloudflare — wchodzisz w interakcję ze stroną jak zwykły użytkownik, a potem pozwalasz rozszerzeniu wyciągnąć i wyeksportować dane. Bez Pythona, bez Dockera, bez konfiguracji proxy.
4. Dlaczego mój scraper działa na niektórych stronach chronionych przez Cloudflare, a na innych nie?
Poziom ochrony Cloudflare bardzo się różni w zależności od planu (Free, Pro, Business, Enterprise) i konfiguracji. Metoda, która radzi sobie z podstawowym wyzwaniem JS na stronie z planem Free, może polec na Turnstile albo pełnym Bot Management na stronie Enterprise. Zawsze najpierw rozpoznaj poziom ochrony — sprawdź, czy widzisz prosty check JS, Managed Challenge, czy widget Turnstile — dopiero potem wybierz metodę obejścia.
5. Jak często metody obejścia Cloudflare przestają działać?
Metody oparte na kodzie, takie jak stealth pluginy i podszywanie TLS, mogą pogarszać skuteczność co kilka tygodni lub miesięcy na trudnych celach, gdy Cloudflare aktualizuje wykrywanie. Płatne API i narzędzia oparte na prawdziwej sesji przeglądarki są zwykle bardziej odporne, bo dostosowują się na poziomie infrastruktury lub sesji użytkownika. Wewnętrzne API rzadko się psują, chyba że strona przebudowuje backend albo zmienia model uwierzytelniania. Najbezpieczniejsza strategia długoterminowa to mieć kilka metod awaryjnych zamiast polegać na jednej.
Dowiedz się więcej


