Podejrzewasz, że ktoś pobiera ceny z Twojego sklepu?Opieka nad WooCommerce i PrestaShop
← Blog
Bezpieczeństwo

Scraper cen w sklepie: jak go zablokować i nie wypaść z Google

Jeden produkt pobierany 365 razy na dobę, także w nocy, z serwerowni. Jak rozpoznaliśmy scraper cen, zablokowaliśmy go i sprawdziliśmy, że Google dalej widzi sklep.

Scraper cen blokuje się regułą WAF po tym, czym różni się od wyszukiwarki, a po każdej regule sprawdza się, że Googlebot, bingbot i Merchant Center dalej dostają stronę z kodem 200. Opisujemy, jak wyglądał scraper w sklepie z branży, w której konkuruje się ceną, jak go zablokowaliśmy we wrześniu 2026 r. i jak testujemy, czy sklep nie zniknął przy okazji z Google. Przykład jest anonimowy.

Po czym poznać, że konkurencja pobiera ceny ze sklepu?

Klient podejrzewał, że ktoś regularnie pobiera jego ceny. Przejrzeliśmy ruch w Cloudflare i podejrzenie się potwierdziło. Wszystkie żądania szły z jednego serwera w centrum danych, a nie z domowego łącza. Adres nie miał odwrotnego DNS i nie serwował żadnej strony.

Bot przedstawiał się trzema własnymi nazwami User-Agent udającymi narzędzia do badań katalogu. Żadnej z nich nie było w publicznych bazach botów, które sprawdziliśmy: HUMAN Security, DataDome, crawler-user-agents i user-agents.net. Prawdziwy crawler zwykle podaje w nazwie adres strony z opisem. Ten nie podawał ani maila, ani adresu strony.

Zachowanie mówiło więcej niż nazwa:

  • ok. 1300 żądań z trzech nazw User-Agent;
  • 41 kart produktów, każda pobierana ok. 20 razy na dobę, a jeden produkt 365 razy na dobę;
  • ruch w każdej godzinie, między 2 a 5 w nocy tyle samo co w dzień;
  • tylko HTML, bez CSS, JavaScriptu i obrazków;
  • ten sam produkt pobierany przez cztery różne ścieżki kategorii, czyli mapowanie całego katalogu.

Człowiek nie ogląda jednego produktu 365 razy na dobę i nie robi tego o 3 w nocy z serwerowni. Wyszukiwarka też nie, bo ma swój budżet indeksowania i nie wraca do tej samej strony co kilka minut.

Czym scraper różni się od Googlebota?

Oba to boty pobierające HTML. Różnicę widać, gdy zestawi się kilka sygnałów naraz.

SygnałScraper cen w naszym przypadkuPrawdziwy bot wyszukiwarki
Adres IP i DNSserwer w centrum danych bez odwrotnego DNSodwrotny DNS w domenie googlebot.com, google.com albo search.msn.com, potwierdzony zapytaniem w drugą stronę
User-Agentwłasne nazwy, nieobecne w publicznych bazach botównazwa opisana w dokumentacji Google albo Bing
Co pobieratylko karty produktów, tylko HTMLróżne typy stron, także CSS i JavaScript potrzebne do renderowania
Częstotliwośćok. 20 pobrań każdej karty na dobę, jedna karta 365 razyzależna od zmian na stronie i budżetu indeksowania
Porarówno przez całą dobę, w nocy tyle co w dzieńbez stałego wzorca dobowego związanego z cenami
Status w Cloudflarebot niezweryfikowanyzweryfikowany bot (verified bot)

Dlaczego robots.txt nie zatrzyma scrapera?

Plik robots.txt to instrukcja dla botów, które chcą jej słuchać. Googlebot i bingbot jej przestrzegają, scraper konkurencji nie ma powodu. Wpis „Disallow” dla nazwy scrapera niczego nie zmieni, a do tego zdradza, które adresy sklep chciałby ukryć. Zatrzymać bota może tylko serwer albo zapora przed nim, czyli reguła w nginx albo w WAF Cloudflare, która odpowiada kodem 403.

Jak zablokować scraper: po User-Agencie, po IP czy limitem żądań?

Wybraliśmy blokadę po User-Agencie. Reguła w Cloudflare odpowiada 403 na trzy nazwy scrapera i nie dotyka nikogo innego. Ma też drugą zaletę: łatwo ją cofnąć, a klient dostał opis, jak to zrobić, gdyby kiedyś okazało się, że blokuje kogoś potrzebnego.

Blokada po IP byłaby szersza i bardziej ryzykowna. Z tego samego adresu szedł czwarty profil, ok. 9 tys. żądań udających zwykłego Chrome’a z pełnym renderowaniem strony. Żeby go odciąć, trzeba by zablokować cały adres, a wtedy razem z nim mógłby odpaść prawdziwy ruch. Tego profilu nie zablokowaliśmy, jest pod obserwacją. Jeśli scraper przeniesie się na niego w całości, decyzję o blokadzie adresu podejmiemy z klientem.

Trzecia opcja to limit żądań (rate limiting), przydatny, gdy bot zmienia nazwy. Limit musi wyłączać zweryfikowane boty, bo Googlebot przy dużym sklepie potrafi pobrać sporo stron w krótkim czasie. W Cloudflare załatwia to warunek not cf.client.bot dopisany do reguły.

Przy okazji zwykle porządkujemy resztę zapory. W sklepach, którymi się opiekujemy, stosujemy m.in. takie reguły:

  • dodatkowa weryfikacja (challenge) dla panelu wp-admin przy wejściach spoza Polski;
  • blokada xmlrpc.php;
  • blokada uruchamiania PHP w katalogu uploads;
  • serwer sklepu przyjmuje połączenia tylko z adresów Cloudflare, więc zapory nie da się obejść, łącząc się z nim bezpośrednio;
  • w nginx odpowiedź 403 dla skanerów i dla prób pobrania plików .env i katalogu .git.

Masz ten sam problem? Jeśli widzisz w statystykach ruch, który nie kupuje i wraca co kilka minut, sprawdzimy, kto to jest i czy da się go odciąć bez szkody dla Google. Opisz sytuację →

Jak sprawdzić, że to prawdziwy Googlebot albo bingbot?

Nazwę „Googlebot” może wpisać w nagłówek każdy, także scraper, który liczy na to, że sklep przepuszcza wyszukiwarki. Google i Microsoft opisują więc weryfikację przez DNS w dwóch krokach:

  1. Odwrotne zapytanie DNS o adres IP z logu. Dla Googlebota wynik musi kończyć się na googlebot.com, google.com albo googleusercontent.com, dla bingbota na search.msn.com.
  2. Zwykłe zapytanie DNS o otrzymaną nazwę. Musi zwrócić ten sam adres IP, od którego wyszliśmy.
host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1

Adres w przykładzie pochodzi z dokumentacji Google. Google publikuje też listy adresów swoich crawlerów w plikach JSON, co przydaje się przy weryfikacji wielu wpisów naraz. W Cloudflare robotę wykonuje lista zweryfikowanych botów: Cloudflare sam sprawdza, czy bot pochodzi z adresów, które deklaruje, i oznacza go w polu dostępnym w regułach.

Co zrobić z botami AI: GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot?

Boty AI dzielą się na dwie grupy. Pierwsza zbiera treści do trenowania modeli, na przykład GPTBot od OpenAI i ClaudeBot od Anthropic. Druga indeksuje strony dla wyszukiwarek AI, na przykład OAI-SearchBot dla wyszukiwania w ChatGPT i PerplexityBot dla Perplexity. Blokując tę drugą grupę, sklep znika z odpowiedzi ChatGPT i Perplexity, które linkują do źródeł.

Domyślnie zostawiamy boty wyszukiwarek AI otwarte. O botach treningowych decyduje właściciel sklepu i wpisuje je do robots.txt, bo te boty go przestrzegają. Wpis dla tokenu Google-Extended wyłącza użycie treści do trenowania modeli Google i nie wpływa na Googlebota ani na wyniki wyszukiwania.

Jak sprawdzić po blokadzie, że Google i Merchant Center dalej widzą sklep?

Po wdrożeniu reguły wysłaliśmy zapytania z różnymi nagłówkami User-Agent i sprawdziliśmy kody odpowiedzi. Trzy nazwy scrapera dostały 403. Chrome, iPhone, Googlebot i bingbot dostały 200. Ten zestaw powtarzamy po każdej zmianie reguł, bo kolejna reguła dopisana za pół roku może mieć szerszy warunek, niż ktoś zamierzał.

Test z curl sprawdza tylko regułę opartą na nazwie. Prawdziwy Googlebot przychodzi z adresów Google, więc kontrolę kończymy po stronie Google:

  • Sprawdzenie adresu URL w Google Search Console z testem na żywo, dla karty produktu i kategorii. Test pobiera stronę z infrastruktury Google.
  • Diagnostyka w Merchant Center przez kolejne dni. Produkty pobiera tam także osobny crawler Storebot-Google, więc reguła musi przepuszczać i jego.
  • Raport „Statystyki indeksowania” w Search Console: nagły wzrost odpowiedzi 403 oznacza, że reguła łapie Google.

Czy podawać scraperowi fałszywe ceny?

Klient zapytał, czy zamiast blokować, nie pokazać botowi cen o 50% wyższych. Przeanalizowaliśmy to i odradziliśmy. Cena na karcie produktu występuje w sześciu miejscach: w danych strukturalnych JSON-LD, w dataLayer, w skryptach marketingowych, w widżecie rat, w atrybutach meta i w samym HTML-u. Wszystkie musiałyby się zmienić spójnie, w różnych formatach zapisu.

Do tego dochodzą trzy ryzyka. Fałszywa wersja strony może trafić do cache i zostać pokazana klientom. Jeśli reguła złapie Googlebota albo crawler Merchant Center, cena w Google rozjedzie się z ceną w pliku produktowym i produkty mogą zostać odrzucone. Zostaje też ryzyko prawne, bo podanie innej ceny niż ta, za którą sklep sprzedaje, dotyka przepisów o informowaniu o cenach (w tym dyrektywy Omnibus), którymi zajmuje się UOKiK.

Jeśli sklep naprawdę nie chce pokazywać cen botom, bezpieczniej je ukryć, na przykład napisem „Cena na zapytanie”. Odmowa podania ceny to co innego niż podanie fałszywej. U tego klienta nic takiego nie wdrożyliśmy, decyzja należy do niego.

Źródła: Verifying Googlebot and other Google crawlers (Google Search Central), Verify Bingbot (Bing Webmaster Tools), Verified bots (Cloudflare Docs).

Kamil Perzowski
Kamil Perzowski
CEO i co-founder ASAPDevs. Programuje i utrzymuje sklepy, aplikacje webowe i serwery klientów. LinkedIn · Opieka nad WooCommerce i PrestaShop
Masz ten sam problem?

Podejrzewasz, że ktoś pobiera ceny z Twojego sklepu?

Kamil Perzowski, ASAPDevs
Kamil Perzowski
CEO & Co-founder, ASAPDevs
Przejrzymy logi i ruch w Cloudflare, zablokujemy scraper i sprawdzimy, że Google, Bing i Merchant Center dalej widzą sklep. Opisz sytuację.
★★★★★
Perfekcyjnie zrobione zlecenie ! Polecam !!!!
Przemysław G., opinia w Google
  1. Czytam zgłoszenie i odpisuję z pytaniami albo propozycją terminu rozmowy.
  2. Krótka rozmowa o zakresie, dostępach i terminie.
  3. Dostajesz plan i wycenę. Decydujesz, bez zobowiązań.

Wolisz od razu porozmawiać? +48 884 220 764 · [email protected]

Wysyłając formularz, przekazujesz nam dane, żebyśmy mogli odpowiedzieć. Szczegóły w polityce prywatności.

FAQ

Pytania i odpowiedzi

Czy scraping cen ze sklepu jest legalny?

+
Ceny na publicznej stronie widzi każdy, więc samo ich odczytywanie trudno zakazać. Sklep może za to w regulaminie zabronić automatycznego pobierania treści i technicznie blokować boty, które się nie przedstawiają. Konkretny przypadek oceni prawnik, nie programista.

Czy blokada scrapera nie zaszkodzi pozycjom w Google?

+
Nie, jeśli reguła nie obejmuje wyszukiwarek. Po każdej blokadzie sprawdzamy, że Googlebot i bingbot dostają kod 200, robimy test na żywo w Google Search Console i obserwujemy diagnostykę Merchant Center przez kilka dni.

Jak odróżnić prawdziwego Googlebota od bota, który się pod niego podszywa?

+
Po DNS. Odwrotne zapytanie o adres IP musi zwrócić nazwę w domenie googlebot.com, google.com albo googleusercontent.com, a zapytanie o tę nazwę musi wrócić do tego samego IP. Dla bingbota domeną jest search.msn.com. Sama nazwa w User-Agencie niczego nie dowodzi.

Czy blokować boty AI, takie jak GPTBot czy ClaudeBot?

+
To decyzja biznesowa, nie techniczna. Boty wyszukiwarek AI, na przykład OAI-SearchBot czy PerplexityBot, przyprowadzają klientów z odpowiedzi w ChatGPT i Perplexity. Boty zbierające dane do trenowania modeli można wyłączyć w robots.txt bez wpływu na Google.

Czy scraper można zatrzymać plikiem robots.txt?

+
Nie. Robots.txt to prośba, którą szanują wyszukiwarki i większość znanych botów. Scraper konkurencji go ignoruje, a czasem czyta, żeby wiedzieć, których adresów sklep nie chce pokazywać.

Przeczytaj też