Analiza logów crawlerów AI
Jak analizować logi serwera, aby zweryfikować crawlery AI, mierzyć ich aktywność i odróżniać pobranie od cytowania.
Języki
1 sygnał dowodowy na tej stronie
- Dane źródłowe dostępne przez link`openai.com/gptbot.json`
Analiza logów crawlerów AI pokazuje, które boty AI rzeczywiście odwiedziły witrynę, jak często i co pobrały. Weryfikuj user-agenta oraz źródłowe IP, ponieważ sama nazwa bota może być podrobiona.
TL;DR — Analiza logów crawlerów AI polega na przeglądaniu surowych logów dostępu serwera, aby sprawdzić, które boty AI — takie jak OpenAI GPTBot lub Anthropic ClaudeBot — rzeczywiście odwiedziły witrynę, jak często i co pobrały. Tylko logi rejestrują te informacje. Google Search Console nie pokazuje botów AI, a Google Analytics widzi wyłącznie osoby, które kliknęły i przeszły na stronę, nie same boty. Problem polega na tym, że wiele żądań udaje ruch znanego bota AI, więc nie można ufać samej nazwie.
Czym jest plik logów
Logi dostępu serwera rejestrują żądania, które dotarły do serwera, w tym user-agent, czas, ścieżkę i szczegóły odpowiedzi, gdy są skonfigurowane. Evidence for this claim Server access logs record requests and can include fields such as request path, status, referrer, and user agent. Scope: Apache HTTP Server logging; available fields depend on server configuration. Confidence: high · Verified: Apache: Log files Dokumentacja dostawców crawlerów wskazuje user-agenty, ale sam ciąg znaków nie dowodzi, że żądanie jest autentyczne. Evidence for this claim OpenAI publishes user-agent tokens and controls for several of its crawlers. Scope: OpenAI's documented crawlers; a user-agent string is not proof of downstream training, retrieval, citation, or use. Confidence: high · Verified: OpenAI: Crawlers
Za każdym razem, gdy cokolwiek — przeglądarka człowieka, Googlebot czy GPTBot — prosi serwer o stronę, serwer zapisuje wiersz w pliku logów. Każdy wiersz zawiera czas, adres IP odwiedzającego, żądaną zawartość, „user-agenta” (etykietę, za pomocą której odwiedzający się identyfikuje, np. GPTBot) oraz kod odpowiedzi wysłany przez serwer (200 dla powodzenia, 404 dla braku strony itd.).
Analiza logów crawlerów AI polega po prostu na odczytaniu tych wierszy i odfiltrowaniu botów AI. Odpowiada na pytania, na które dosłownie nie da się odpowiedzieć w żaden inny sposób:
- Czy bot AI w ogóle odwiedził moją witrynę?
- Które strony pobrał, a które ważne strony pominął?
- Czy był to prawdziwy bot, czy coś, co go udawało?
- Co otrzymał — właściwą treść czy stronę błędu?
Jeśli chcesz poznać pełny zestaw botów AI i ich zastosowania (boty treningowe, boty wyszukiwania oraz boty typu „pobierz tę stronę teraz”), to osobny temat — zobacz artykuł AI crawlers. Ta strona dotyczy sposobu: pobierania i odczytywania logów.
Dlaczego pulpity nie pokazują tego obrazu
- Google Search Console ma raport Statystyki crawlowania, ale dotyczy on tylko Googlebota. Nie pokazuje nic o GPTBot, ClaudeBot ani PerplexityBot.
- Google Analytics (GA4) rejestruje tylko odwiedzających, którzy kliknęli link do witryny i przybyli z „referrerem”. Crawler pobierający stronę w tle w ogóle się tam nie pojawi.
Logi są więc źródłem prawdy. Nic innego nie widzi samego bota.
Jedna rzecz, którą początkujący pomijają
Etykieta GPTBot w logach nie dowodzi, że żądanie naprawdę pochodziło od OpenAI. Każdy może umieścić w żądaniu dowolny ciąg user-agenta — to jak wpisanie adresu zwrotnego na kopercie. Wiele scraperów przykleja do swojego ruchu nazwę znanego bota, aby wyglądać wiarygodnie. Jedynym sposobem potwierdzenia jest sprawdzenie adresu IP odwiedzającego na liście prawdziwych adresów publikowanej przez firmę AI. Ten etap weryfikacji jest sednem poprawnej analizy, a karta Advanced prowadzi przez cały proces.
TL;DR — Pobierz logi dostępu Apache/Nginx lub CDN-u, a następnie wykonaj cztery czynności: zweryfikuj (dopasuj user-agenta i potwierdź IP na opublikowanej liście każdego operatora — wskaźniki podszywania się wynoszą od 5,7% w badaniu HUMAN Security do samodzielnie sprawdzonych przez Duane’a Forrestera 81,8%); wybierz narzędzie według skali (grep → Screaming Frog Log File Analyser → ELK/Splunk → BigQuery/Cloudflare); mierz częstotliwość crawlowania według bota, odwiedzane strony, crawl-vs-render i kody statusu; oraz interpretuj uczciwie — pobranie jest konieczne, ale niewystarczające, więc teza „więcej crawlowania = więcej cytowań” nie jest potwierdzona. To metoda siostrzana wobec AI crawlers (który opisuje czym są boty), AI traffic attribution (strona kliknięć) i LLM visibility (obserwowane tu ramy pobrano → wspomniano → zacytowano, dotyczące pierwszego etapu).
Co obejmuje ten artykuł — a czego nie
Logi pokazują żądania, ale nie to, czy treść została użyta do treningu, pobrania albo odpowiedzi. Evidence for this claim Server access logs record requests and can include fields such as request path, status, referrer, and user agent. Scope: Apache HTTP Server logging; available fields depend on server configuration. Confidence: high · Verified: Apache: Log files Weryfikuj boty za pomocą mechanizmów publikowanych przez dostawców, gdy są dostępne, i traktuj atrybucję jako ograniczony dowód. Evidence for this claim OpenAI publishes user-agent tokens and controls for several of its crawlers. Scope: OpenAI's documented crawlers; a user-agent string is not proof of downstream training, retrieval, citation, or use. Confidence: high · Verified: OpenAI: Crawlers
Siostrzany artykuł AI crawlers zawiera już tabelę bot po bocie, trójdzielną taksonomię (trening / wyszukiwanie AI / pobranie wywołane przez użytkownika), rozróżnienie „Google-Extended to token, nie bot” oraz przepisy robots.txt. Nie odtwarzam tego tutaj. AI traffic attribution obejmuje stronę GA4/referrera — to, co bot odesłał. Ten artykuł opisuje przeciwną stronę lejka: co bot pobrał. Z kolei LLM visibility opisuje ramy pobrano → wspomniano → zacytowano; analiza logów pozwala obserwować konkretnie etap pobrano i nic później.
To kontynuacja klasycznej analizy plików logów SEO w erze AI. Gdy przeglądałem artykuł Ahrefs How to Do an SEO Log File Analysis, analizowane wymiary obejmowały częstotliwość crawlowania, crawlowane adresy URL, kody statusu i weryfikację botów względem opublikowanych adresów IP Google. Szkielet jest ten sam, ale tutaj dotyczy populacji botów, które najczęściej nie renderują JavaScriptu, są stale naśladowane i crawlują nieregularnymi falami zamiast równym strumieniem.
Krok 1 — Zdobądź logi
Logi znajdują się w jednym z dwóch miejsc albo w obu:
- Logi serwera źródłowego. Apache (
access.log), Nginx (access.log) albo serwer aplikacji. Każdy wiersz zawiera co najmniej: znacznik czasu, IP klienta, metodę i ścieżkę żądania, kod statusu, liczbę bajtów, referrer i user-agenta. - Logi CDN-u / krawędzi. Jeśli korzystasz z Cloudflare, Fastly, Akamai itd., wiele żądań botów jest obsługiwanych na krawędzi i może nigdy nie dotrzeć do źródła — dlatego log krawędzi jest pełniejszym zapisem. Cloudflare udostępnia go przez Logpush (oraz API GraphQL), a Fastly przez strumieniowanie logów w czasie rzeczywistym.
Pola faktycznie potrzebne do analizy botów AI to: znacznik czasu, IP klienta, user-agent, ścieżka żądania, kod statusu, a najlepiej także liczba bajtów i referrer.
Praktycznym problemem jest retencja. Wiele hostów przechowuje logi tylko przez kilka dni. Artykuł Lauren Busby w Search Engine Land wskazuje bezpośrednie rozwiązanie — zaplanowane pobieranie zmienia krótki okres w dane, które można analizować w czasie: zaplanowane zadanie SFTP, zbudowane w narzędziu workflow takim jak n8n albo oskryptowane, wystarczy, aby zamienić krótki okres retencji w historię możliwą do analizy (Busby, SEL). Skonfiguruj to zanim dane będą potrzebne.
Od początku pamiętaj o jednym uczciwym ograniczeniu, które podkreśla Busby: pliki logów pokazują, co dotarło do witryny, ale nie zawsze pokazują, co próbowało dotrzeć (SEL) — zablokowane żądania lub żądania obsłużone upstream mogą w ogóle nie pojawić się w logach.
Krok 2 — Zweryfikuj user-agenta, zanim mu zaufasz
To etap odróżniający analizę logów botów AI od wersji klasycznej i taki, który pomija większość konkurencyjnych poradników. Ciągi user-agent można banalnie podrobić. Dwa niezależne punkty danych pokazują skalę problemu:
- HUMAN Security przeanalizowało dwa tygodnie ruchu podającego się za jeden z 16 znanych crawlerów AI i stwierdziło, że 5,7% ruchu było podszyciem się — mniej więcej 1 na 18 żądań (opis przez SEJ).
- Duane Forrester wykonał ten sam test na własnych logach i uzyskał znacznie gorszy wynik. Spośród 33 żądań z nazwą pobierania na żądanie sześć pochodziło z IP publikowanego przez dostawcę, a 27 nie — wskaźnik podszywania wyniósł 81,8% wśród sprawdzonych żądań (SEJ). Jego wynik dla Googlebota był jeszcze gorszy: z 799 żądań z nazwą Googlebota tylko 107 pochodziło ze zweryfikowanego adresu Google — pozostałe około 87% nie pochodziło od Google (SEJ).
Traktuj te liczby jako kierunkowe wyniki różnych próbek i metod, a nie jedną uniwersalną wartość. Co ważniejsze, nie uogólniaj metody weryfikacji jednego dostawcy na każdego bota. Niektórzy operatorzy publikują zakresy adresów, inni dokumentują tokeny user-agent bez aktualnego publicznego zakresu albo procedury weryfikacji DNS (SEJ).
Metoda weryfikacji:
- Dopasuj ciąg user-agenta. GPTBot identyfikuje się jako
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.3; +https://openai.com/gptbot; OAI-SearchBot i ChatGPT-User mają własne tokeny (dokumentacja botów OpenAI). - Użyj aktualnej oficjalnej metody weryfikacji dostawcy, jeśli istnieje. OpenAI publikuje
openai.com/gptbot.json,searchbot.jsonichatgpt-user.json. Aktualna dokumentacja crawlerów Anthropic mówi, że adres znajdujący się na opublikowanej liście oznacza crawlera pochodzącego od Anthropic. Używaj bieżącej metody właściwej dla dostawcy; nie zamieniaj jej w uniwersalną regułę weryfikacji botów. - Nie wymyślaj rozwiązania zastępczego. Odwrotne i następnie forward DNS jest poprawne dla dostawcy tylko wtedy, gdy publikuje on oczekiwany wzorzec hosta i procedurę weryfikacji. Ogólne dopasowanie PTR dowodzi kontroli nad DNS, a nie tożsamości deklarowanego bota. Screaming Frog Log File Analyser może stosować publicznie potwierdzone listy tam, gdzie są dostępne; funkcja weryfikacji przy imporcie wykonuje zapytanie do publicznych list IP, aby potwierdzić autentyczność botów (Screaming Frog).
Weryfikacja powinna pomagać w ustalaniu precyzyjnej polityki i reakcji na incydenty. Do polityki crawlowania preferuj udokumentowany token robots dostawcy; kontrole sieciowe zostaw dla przypadków nadużyć lub bezpieczeństwa i oznaczaj je osobno od zgodności z robots.
Krok 3 — Wybierz narzędzie
Dopasuj je do skali zadania, mniej więcej od bezpłatnych do płatnych oraz od źródła prawdy do usług zarządzanych:
- grep / PowerShell — szybkie jednorazowe zliczanie i filtr uwzględniający weryfikację. Artykuł AI crawlers zawiera podstawowy fragment zliczający boty; karta Scripts rozszerza go o weryfikację IP, podział kodów statusu i wykrywanie crawl-vs-render.
- Screaming Frog Log File Analyser — desktopowy importer z wbudowanymi presetami botów AI (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, CCBot) oraz przełącznikiem „Verify Bots When Importing”. Karta Response Codes dzieli 2XX/3XX/4XX/5XX według adresu URL, karta User Agents pokazuje żądania i wskaźniki błędów według bota, karta URLs sortuje adresy według Num Events (najczęściej pobierane strony), a karta IPs pozwala zbadać podejrzane źródła (tutorial).
- ELK Stack (Elasticsearch / Logstash / Kibana) lub Splunk — ciągłe pobieranie na większą skalę z pulpitami i alertami, gdy pojedynczy importer desktopowy staje się zbyt wolny albo potrzebujesz stałego monitoringu zamiast okresowych eksportów.
- BigQuery — do długiej retencji i zapytań SQL na dużą skalę, zwykle zasilany przez Cloudflare Logpush albo zaplanowane pobieranie GraphQL ze zbioru
httpRequestsAdaptiveGroups, aby analizować aktywność botów według strony, daty i kodu statusu bez ponownego importowania płaskich plików. - Cloudflare AI Crawl Control (dla witryn za Cloudflare) — zarządzany pulpit aktywności crawlerów i wzorców żądań, weryfikacji botów oraz zgodności z dyrektywami, bez budowania własnego potoku (docs).
Krok 4 — Co mierzyć i jak to odczytywać
Częstotliwość crawlowania według bota. Liczba trafień dziennie lub tygodniowo dla każdej nazwy bota. Boty AI crawlują falami, a nie równym strumieniem. W 48-dniowym studium logów CDN WISLR GPTBot był nieobecny przez tygodnie, po czym wykonał 187 żądań w jednym tygodniu — 152 z nich w trzyminutowej fali, z maksimum 114 żądań na minutę (WISLR). Odczytuj częstotliwość jako wzorzec, nie tylko sumę.
Które strony są odwiedzane — a które ważne strony nie są. Sortuj według liczby żądań. Busby zauważa, że crawlery AI często pozostają płytko — często ograniczają się do stron najwyższego poziomu: strony głównej, głównej nawigacji i niewielkiej liczby ważnych adresów URL (SEL) — po czym liczba wizyt gwałtownie spada dla głębokich stron, nawet gdy właśnie one są najważniejsze dla cytowań. Głębokiej strony, która nigdy nie pojawia się w logach, nie da się pobrać.
Zależność od surowego HTML — mierz ją, nie uogólniaj. Dokumentacja dostawców nie definiuje jednego wspólnego kontraktu renderowania JavaScriptu dla GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot i innych agentów. Jedna zaobserwowana cecha nadal jest użyteczna: w próbie WISLR ChatGPT-User pobierał wyłącznie HTML — zero żądań obrazów, CSS i plików JS — podczas gdy Googlebot i OAI-SearchBot pobierały także obrazy (WISLR). Jeśli logi pokazują boty AI obciążające strony, których surowy HTML jest niemal pustą powłoką JS, to sprawdzalne ryzyko zależności, a nie dowód, że każdy dostawca zawsze działa tak samo. Porównaj dostarczony HTML z wynikami albo wykonaj testy pobierania właściwe dla dostawcy. (Podstawy renderowania opisuje JavaScript SEO.)
Podział kodów statusu i blokad. Obserwuj: 200 (sukces), 304 (niezmienione — dobre, wydajne ponowne crawlowanie), 404 (uszkodzone linki, za którymi podążył bot) oraz 403/429 (zablokowane / ograniczone). Busby szczególnie wskazuje, że pliki logów ujawniają miejsca, w których crawlery napotykają problemy, w tym odpowiedzi 403 (zablokowane żądania) i 429 (ograniczenie szybkości) (SEL). Sprawdź, czy blokada była zamierzona, czy przypadkowa.
Żądania robots.txt i llms.txt jako osobny sygnał. Sprawdź, które boty w ogóle żądają /robots.txt przed rozpoczęciem crawlowania — w próbie WISLR GPTBot i Meta-WebIndexer nie sprawdzały go przez 48 dni — oraz czy mimo to odwiedzają niedozwolone ścieżki. WISLR odnotował także zero żądań /llms.txt od dowolnego bota AI przez te 48 dni (WISLR), co jest zgodne z opisanym w artykule AI crawlers wynikiem około 97% nieodczytywania. Nie oczekuj żądań llms.txt w logach jako dowodu, że plik „działa”.
Czy więcej crawlowania oznacza więcej cytowań? Bądź uczciwy.
Żadne uznane dane nie potwierdzają tezy „crawluj więcej, a będziesz częściej cytowany”. Pobranie jest koniecznym warunkiem cytowania, ale zdecydowanie nie wystarczającym — strony mogą być stale crawlowane i nigdy niecytowane z powodu renderowania po stronie klienta, płatnych zapór, ubogiej lub zduplikowanej treści albo po prostu przegranej z lepszym źródłem na etapie pobierania/rankingu modelu. Kluczowe ramy opisuje artykuł LLM visibility: pobrano → wspomniano → zacytowano, a analiza logów obserwuje tylko pierwszy etap.
Uczciwe domknięcie pętli polega na połączeniu strony wejściowej crawlowania (logów) ze stroną wyjściową cytowania. Raport AI Performance w Bing (publiczna wersja preview, luty 2026) jest pierwszym oficjalnym narzędziem pokazującym dane o cytowaniach obok zapytań uziemiających — kluczowych fraz użytych przez AI podczas pobierania treści, do której odwołano się w odpowiedziach generowanych przez AI (Bing Webmaster Blog). Logi mówią, co pobrano; zapytania uziemiające i liczby cytowań mówią, jaki był rezultat. Żadne z tych źródeł osobno nie daje pełnego obrazu — zobacz centrum pomiarów i raportowania, aby zrozumieć, jak układają się te warstwy.
Zagadnienie skrytego crawlowania
Weryfikacja nie jest jednorazowym audytem. Według Clinta Spauldinga z Seer Interactive, po zablokowaniu crawlery skryte mogą wrócić z ogólnymi nagłówkami przeglądarki i niezwiązanymi adresami IP — takie sesje wyglądają w logach jak ludzkie, przez co liczba sesji rośnie sztucznie, ruch botów jest zaniżany, a segmentacja GEO staje się mniej wiarygodna (Seer). Jego bezpośredni wniosek brzmi: jeśli nie widzisz tych crawlerów skrytych, nie możesz mierzyć ich wpływu. Właśnie dlatego analiza logów wymaga okresowej ponownej weryfikacji i ustalania nowej bazy, a nie jednego przebiegu.
Podsumowanie AI
Skrócona wersja wariantu Advanced:
- Analiza logów crawlerów AI = odczyt surowych logów serwera/CDN-u dotyczących żądań botów AI, aby za pomocą danych pierwszej strony sprawdzić, które boty odwiedziły witrynę, czy były prawdziwe i co otrzymały. GSC (tylko Googlebot) i GA4 (tylko referrer) tego nie widzą.
- Zakres: to jest metoda. Czym są boty, opisuje AI crawlers; stronę kliknięć opisuje AI traffic attribution; ramy pobrano → wspomniano → zacytowano opisuje LLM visibility (logi obserwują tylko etap pobrano).
- Oddziel zweryfikowaną tożsamość od deklarowanego user-agenta. User-agenty są podrabiane — HUMAN Security zmierzyło 5,7% wśród 16 botów, a Duane Forrester samodzielnie sprawdził 81,8% fałszywych żądań pobierania na życzenie (87% dla Googlebota). Dopasuj UA i sprawdź źródłowy IP na aktualnej oficjalnej liście operatora, jeśli taka istnieje (np.
openai.com/gptbot.jsonlubclaude.com/crawling/bots.json). Nie wymyślaj ogólnego fallbacku reverse-DNS. - Narzędzia według skali: grep → Screaming Frog LFA (presety AI + weryfikacja przy imporcie) → ELK/Splunk → BigQuery / Cloudflare AI Crawl Control.
- Mierz: częstotliwość crawlowania według bota (falami, np. 152 żądania GPTBot WISLR w 3 minuty), odwiedzane strony, zależność od surowego HTML (w próbie WISLR ChatGPT-User pobrał zero obrazów/CSS/JS), kody statusu (403/429) oraz żądania robots.txt/llms.txt (WISLR odnotował zero trafień llms.txt przez 48 dni).
- Crawlowanie ≠ cytowanie. Pobranie jest konieczne, ale niewystarczające — „więcej crawlowania = więcej cytowań” nie jest potwierdzone. Połącz logi z zapytaniami uziemiającymi Bing, aby domknąć pętlę.
- Weryfikuj okresowo — zablokowane crawlery skryte wracają, wyglądając jak ludzie.
Oficjalna dokumentacja
Podstawowe źródła — pliki weryfikacyjne operatorów botów i dokumentacja platform.
OpenAI
- Dokumentacja botów / crawlerów OpenAI — ciągi user-agent i zachowanie GPTBot, OAI-SearchBot, ChatGPT-User i OAI-AdsBot.
- Opublikowane listy IP do weryfikacji: gptbot.json, searchbot.json, chatgpt-user.json, adsbot.json.
Anthropic
- Czy Anthropic crawluje dane z sieci? — aktualne nazwy botów, zastosowania, zasady robots i stwierdzenie, że adres na opublikowanej liście oznacza crawlera Anthropic.
- Lista IP crawlerów Anthropic — aktualne wspólne źródło weryfikacji ClaudeBot, Claude-SearchBot i Claude-User.
- Raport Statystyki crawlowania — własny widok aktywności crawlowania Google (tylko Googlebot; nie obejmuje zewnętrznych botów AI, dlatego do nich potrzebne są surowe logi).
Cloudflare
- AI Crawl Control — zarządzany pulpit aktywności crawlerów AI, weryfikacji botów i zgodności z dyrektywami.
Bing / Microsoft
- Introducing AI Performance in Bing Webmaster Tools (Public Preview) — odpowiednik strony wynikowej cytowań w analizie logów: Total Citations, Average Cited Pages, Grounding Queries i aktywność cytowań na poziomie strony.
Cytaty ze źródeł
Wypowiedzi zapisane przez operatorów i nazwanych praktyków.
Anthropic — aktualny zakres
- Aktualna strona pomocy Anthropic rozróżnia ClaudeBot, Claude-SearchBot i Claude-User, dokumentuje działanie kontroli robots oraz mówi, że adres na opublikowanej liście oznacza crawlera Anthropic. Źródło
Lauren Busby, Co-Founder, Trebletree — Search Engine Land
- “Log files are the closest thing to that missing layer. They don’t summarize or interpret activity. They record it — every request, every URL, every crawler.” (tłumaczenie) „Logi są najbliższym odpowiednikiem brakującej warstwy: nie podsumowują ani nie interpretują aktywności, tylko rejestrują każde żądanie, adres URL i crawler.”
- “Tools like Screaming Frog Log File Analyzer make it possible to process that data quickly.” (tłumaczenie) „Narzędzia takie jak Screaming Frog Log File Analyzer pozwalają szybko przetwarzać te dane.”
- On AI-crawler depth: “It’s common to see them limited to top-level pages – the homepage, primary navigation, and a small number of high-level URLs.” (tłumaczenie) „Często ograniczają się do stron najwyższego poziomu — strony głównej, głównej nawigacji i niewielkiej liczby ważnych adresów URL.”
- On what surfaces: “Log files also surface where crawlers encounter issues. This includes: 403 responses (blocked requests). 429 responses (rate limiting).” (tłumaczenie) „Logi pokazują również, gdzie crawlery napotykają problemy: odpowiedzi 403 oznaczające blokadę oraz odpowiedzi 429 oznaczające ograniczenie szybkości.”
- On retention: “A scheduled SFTP job – whether built in a workflow tool like n8n, or scripted – is enough to turn a short retention window into something you can actually analyze over time.” (tłumaczenie) „Zaplanowane zadanie SFTP — zbudowane w narzędziu workflow takim jak n8n albo oskryptowane — wystarczy, aby zmienić krótki okres retencji w dane możliwe do analizowania w czasie.”
- The honest limit: “Log files show you what reached your site. They don’t always show you what tried to.” (tłumaczenie) „Logi pokazują, co dotarło do witryny, ale nie zawsze pokazują, co próbowało do niej dotrzeć.” Source (PL: Cytaty zachowano w oryginalnym brzmieniu; dokumentują głębokość crawlowania, problemy 403/429, retencję i granice tego, co pokazują logi.)
Duane Forrester — Search Engine Journal
- “Of 33 requests carrying one of those live-fetch names. Six came from an IP the vendor publishes. Twenty-seven did not. That is an 81.8% spoof rate among the requests I could check.” (tłumaczenie) „Spośród 33 żądań z nazwą pobierania na życzenie sześć pochodziło z IP publikowanego przez dostawcę, a 27 nie; wśród sprawdzonych żądań oznaczało to 81,8% podszywania się.”
- “The real check is not complicated. The major operators publish the actual IP addresses their bots use, as plain files you can open right now, and a request is legitimate only if the name matches and the address sits inside the published list.” (tłumaczenie) „Rzeczywista kontrola nie jest skomplikowana: operatorzy publikują faktyczne adresy IP swoich botów, a żądanie jest uzasadnione tylko wtedy, gdy nazwa pasuje i adres znajduje się na opublikowanej liście.”
- On Googlebot, for scale: “Of 799 requests carrying the Googlebot name, only 107 came from a verified Google address. The other 692, roughly 87%, were not Google.” (tłumaczenie) „Spośród 799 żądań z nazwą Googlebota tylko 107 pochodziło ze zweryfikowanego adresu Google; pozostałe 692, czyli około 87%, nie pochodziły od Google.”
- His call to action: “Do not take my numbers; take the method… Pull a date range, match the names, verify the IPs against the published lists, and find your real fraction.” (tłumaczenie) „Nie przejmuj moich liczb, tylko metodę: wybierz zakres dat, dopasuj nazwy, sprawdź IP względem opublikowanych list i oblicz własny odsetek.” Source (PL: Cytaty zachowano w oryginalnym brzmieniu; opisują weryfikację IP, wskaźnik podszywania i metodę sprawdzania własnych logów.)
Clint Spaulding, Sr. Manager Technical SEO, Seer Interactive
- “Once blocked, stealth crawlers can reappear under generic browser headers and unrelated IPs.” (tłumaczenie) „Po zablokowaniu skryte crawlery mogą wrócić z ogólnymi nagłówkami przeglądarki i niepowiązanymi adresami IP.”
- “These sessions look human in logs. That means session counts get inflated, bot traffic gets undercounted, and GEO segmentation becomes less trustworthy.” (tłumaczenie) „Te sesje wyglądają w logach jak ludzkie, przez co liczba sesji rośnie, ruch botów jest zaniżany, a segmentacja GEO staje się mniej wiarygodna.”
- “If you can’t see these stealth crawlers, you can’t measure their impact.” (tłumaczenie) „Jeśli nie widzisz tych skrytych crawlerów, nie możesz zmierzyć ich wpływu.” Source (PL: Cytaty zachowano w oryginalnym brzmieniu; opisują powrót skrytych crawlerów, pozornie ludzkie sesje i skutki dla pomiaru.)
Screaming Frog — Log File Analyser tutorial (product doc)
- On verify-on-import: “Search engine bots are often spoofed, and this performs a lookup against publicly confirmed IP lists to confirm they are genuine.” (tłumaczenie) „Boty wyszukiwarek są często podrabiane, dlatego narzędzie sprawdza je względem publicznie potwierdzonych list IP, aby potwierdzić ich autentyczność.”
- “If you see high request volumes from IPs that don’t verify, you’re likely dealing with fake bot traffic that should be blocked at server level.” (tłumaczenie) „Jeśli widzisz dużo żądań z IP, których nie da się zweryfikować, prawdopodobnie masz do czynienia z fałszywym ruchem botów, który należy blokować na poziomie serwera.” Source (PL: Cytaty zachowano w oryginalnym brzmieniu; opisują weryfikację botów przy imporcie i konsekwencje niepotwierdzonych adresów.)
Bing Webmaster Tools — AI Performance report (Feb 2026 public preview)
- Grounding Queries: “Shows the key phrases the AI used when retrieving content that was referenced in AI-generated answers.” (tłumaczenie) „Pokazuje kluczowe frazy używane przez AI podczas pobierania treści, do której odwołano się w odpowiedziach generowanych przez AI.”
- Total Citations: “Shows the total number of citations that are displayed as sources in AI-generated answers during the selected time frame.” (tłumaczenie) „Pokazuje łączną liczbę cytowań wyświetlanych jako źródła w odpowiedziach generowanych przez AI w wybranym okresie.” Source (PL: Cytaty zachowano w oryginalnym brzmieniu; definiują Grounding Queries i Total Citations w raporcie AI Performance.)
„Czy to prawdziwe żądanie bota AI i co mam z nim zrobić?”
Przeprowadź pojedynczy podejrzany wiersz logu — albo cały ruch jednego bota — przez ten proces. To logika weryfikacji z kroku 2 przedstawiona jako schemat.
Lista kontrolna analizy logów crawlerów AI
Powtarzalny przebieg, od pobrania logów do ich odczytania:
- Logi są zbierane z potrzebnymi polami: znacznik czasu, IP klienta, user-agent, ścieżka żądania, kod statusu (liczba bajtów i referrer pomagają).
- Pobierasz dane z właściwej warstwy — logi CDN-u/krawędzi, jeśli korzystasz z Cloudflare/Fastly (wiele ruchu botów nigdy nie dociera do źródła).
- Zaplanowane pobieranie (SFTP/n8n/skrypt) wykracza poza okno retencji, więc masz historię, a nie tylko kilka ostatnich dni.
- Każde żądanie bota AI jest zweryfikowane: dopasowano user-agenta i sprawdzono źródłowy IP na opublikowanej liście operatora (reverse-DNS jako kopia zapasowa).
- Żądania podszywające się lub niezweryfikowane wykluczono z metryk crawlowania AI, zamiast liczyć je jako nazwany bot.
- Ustalono bazową częstotliwość crawlowania według bota (obserwuj fale i stałe wzorce).
- Zidentyfikowano najczęściej pobierane strony — i potwierdzono, że ważne głębokie strony w ogóle są crawlowane.
- Sprawdzono crawl-vs-render: czy boty AI pobierają tylko HTML na stronach, których treść jest renderowana przez JS? (Zapisz to jako test zależności od surowego HTML; zachowanie zależy od agenta i może być nieudokumentowane.)
- Przejrzano kody statusu:
200/304zdrowe;404to uszkodzone linki;403/429potwierdzone jako zamierzone albo naprawione. - Sprawdzono obecność żądań robots.txt (czy boty pobierają plik przed crawlowaniem?) i brak niespodziewanych trafień na niedozwolone ścieżki.
- Połączono dane z cytowań (zapytania uziemiające Bing / funkcje AI GSC), zanim wyciągnięto wniosek „czy to działa”.
- Zaplanowano ponowną weryfikację — to nie jest audyt jednorazowy (crawlery skryte wracają, wyglądając jak ludzie).
Ściąga analizy logów crawlerów AI
Pliki weryfikacyjne (dodaj do zakładek)
| Operator | Opublikowany plik IP | Uwagi |
|---|---|---|
| OpenAI — GPTBot | openai.com/gptbot.json | Crawler treningowy |
| OpenAI — OAI-SearchBot | openai.com/searchbot.json | Indeksator wyszukiwania AI |
| OpenAI — ChatGPT-User | openai.com/chatgpt-user.json | Pobranie wywołane przez użytkownika |
| OpenAI — OAI-AdsBot | openai.com/adsbot.json | Reklamy |
| Anthropic — wszystkie nazwane boty | claude.com/crawling/bots.json | Wspólna aktualna lista dostawcy; dopasuj UA i adres źródłowy |
| Google (dla porównania) | googlebot.json (developers.google.com) | Tylko Googlebot — Statystyki crawlowania GSC obejmują ten bot |
Kody statusu do obserwowania
| Kod | Znaczenie | Odczyt |
|---|---|---|
200 | OK | Bot otrzymał stronę |
304 | Not Modified | Dobrze — wydajne ponowne crawlowanie |
403 | Forbidden | Zablokowane — czy celowo? |
404 | Not Found | Uszkodzony link, za którym podążył bot |
429 | Too Many Requests | Ograniczono szybkość — sprawdź, czy tak miało być |
5xx | Błąd serwera | Serwer ma trudności — boty zwalniają |
Weryfikuj, nie ufaj
- Sam user-agent = brak weryfikacji. Dopasuj UA i dane weryfikacyjne publikowane przez dostawcę, gdy są dostępne; w przeciwnym razie zachowaj niepewność.
- Zaobserwowane wskaźniki podszywania się: 5,7% (HUMAN, 16 botów) → 81,8% (logi pobierania na życzenie Forrestera); 87% fałszywego Googlebota w tym samym audycie.
Sygnał zależności od surowego HTML
- Bot pobierający wyłącznie HTML, bez żądań
.js/.css/obrazów, to zaobserwowany wzorzec pobierania. Na stronie zależnej od JS jest sygnałem ryzyka, a nie uniwersalnym dowodem możliwości.
Szybkie fakty
- Częstotliwość crawlowania ≠ prawdopodobieństwo cytowania. Pobranie jest konieczne, ale niewystarczające.
- Używaj udokumentowanych tokenów robots do polityki crawlowania; blokowanie sieci traktuj jako osobną kontrolę nadużyć/bezpieczeństwa.
Skrypty do analizy logów crawlerów AI
Artykuł AI crawlers zawiera podstawowy fragment „zlicz trafienia bota”. Poniższe skrypty idą dalej: ekstrakcja, weryfikacja, podział kodów statusu oraz wykrywanie crawl-vs-render.
1. Wyodrębnij każdy wiersz bota AI (grep + regex)
macOS / Linux — jedna alternatywa obejmująca typowe user-agenty AI:
# Pull all AI-bot requests from a combined-format access log
grep -Ei 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Applebot|Amazonbot|Bytespider|CCBot|Meta-ExternalAgent' \
access.log > ai-bots.log
# Count requests per bot (which token, how many hits)
grep -Eoi 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|PerplexityBot|Perplexity-User|CCBot|Bytespider' \
access.log | sort | uniq -c | sort -rnPowerShell w systemie Windows:
Select-String -Path .\access.log -Pattern 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|PerplexityBot|CCBot|Bytespider' |
ForEach-Object { ($_ -match '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|PerplexityBot|CCBot|Bytespider)') | Out-Null; $Matches[1] } |
Group-Object | Sort-Object Count -Descending | Select-Object Count, Name2. Zweryfikuj IP deklarowanego GPTBot względem opublikowanej listy OpenAI
Sam user-agent niczego nie dowodzi — sprawdź IP. Ten fragment pobiera listę OpenAI i testuje, czy IP z logów mieści się w którymś z opublikowanych CIDR:
# Requires jq and (for CIDR math) grepcidr — brew/apt install both
IP="203.0.113.45" # the IP from your log line
curl -s https://openai.com/gptbot.json \
| jq -r '.prefixes[].ipv4Prefix // .prefixes[].ipv6Prefix' \
| while read -r cidr; do
echo "$IP" | grepcidr "$cidr" >/dev/null 2>&1 && echo "VERIFIED in $cidr"
done
# No output = the IP is NOT in OpenAI's published range → treat as spoofed.W przypadku Anthropic pobierz aktualną listę https://claude.com/crawling/bots.json i dostosuj ścieżkę jq do udokumentowanego kształtu. Jeśli inny operator nie publikuje aktualnego źródła weryfikacji, zachowaj wynik jako deklarowany user-agent.
3. Zastępcze odwrotne i forward DNS (adresy spoza listy)
Używaj tego tylko wtedy, gdy nazwany dostawca publikuje oczekiwany sufiks hosta i procedurę weryfikacji odwrotne-plus-forward. Nie jest to ogólny dowód tożsamości bota:
IP="203.0.113.45"
HOST=$(host "$IP" | awk '/pointer/ {print $NF}' | sed 's/\.$//')
echo "PTR: $HOST"
host "$HOST" | grep -q "$IP" && echo "FORWARD-CONFIRMED" || echo "MISMATCH → suspect"4. Podział kodów statusu według bota
Znajdź blokady 403/429 i błędy braku strony, na które trafiają boty:
# For GPTBot: tally status codes (combined log format; $9 is the status)
grep -i 'GPTBot' access.log | awk '{print $9}' | sort | uniq -c | sort -rn
# → e.g. "812 200 / 47 404 / 15 403" — the 403s are worth investigating5. Sygnał zależności od surowego HTML — jakie typy plików pobiera bot?
Jeśli deklarowany bot pobiera wyłącznie .html// i nigdy .js/.css/obrazów, a treść jest renderowana przez JS, to sygnał zależności wymagający zbadania:
# What extensions is ChatGPT-User actually requesting?
grep -i 'ChatGPT-User' access.log \
| awk '{print $7}' \
| grep -oE '\.(html?|js|css|png|jpe?g|webp|svg|woff2?)(\?|$)' \
| sort | uniq -c | sort -rn
# All HTML, zero subresources = compare the raw body with provider-specific outcomes.6. Konsola Chrome DevTools — wykryj pobierających AI na działającej stronie
To nie jest zapytanie do logów, ale szybki test tego, co strona wysyła w surowym HTML w porównaniu z tym, co pojawia się po JS (co bot AI zobaczy, a czego nie). Wklej do konsoli:
// Compare rendered text length to what's in the initial HTML source.
// A big gap means most content depends on JS; provider behavior must be verified separately.
(async () => {
const raw = await (await fetch(location.href, { cache: "no-store" })).text();
const rawText = new DOMParser().parseFromString(raw, "text/html").body.innerText.trim().length;
const renderedText = document.body.innerText.trim().length;
console.log({ rawText, renderedText, jsDependentRatio: +(1 - rawText / renderedText).toFixed(2) });
})();
// jsDependentRatio near 1 = almost all content is JS-injected; flag dependency, not invisibility.7. Bookmarklet — otwórz naraz listy IP wszystkich botów
Przeciągnij to jako zakładkę, aby otworzyć pliki weryfikacyjne w kartach i szybko je sprawdzić:
javascript:(function(){["https://openai.com/gptbot.json","https://openai.com/searchbot.json","https://openai.com/chatgpt-user.json","https://claude.com/crawling/bots.json"].forEach(u=>window.open(u,"_blank"));})(); SOP: comiesięczny przegląd logów crawlerów AI
Powtarzalna procedura wykonywana cyklicznie (co miesiąc dla większości witryn, co tydzień, jeśli ruch AI ma dla Ciebie znaczenie). Za każdym razem tworzy porównywalną bazę.
Przygotowanie
- Pobierz okno logów od ostatniego przeglądu z właściwej warstwy (logi CDN-u/krawędzi, jeśli jesteś za CDN-em, w przeciwnym razie logi źródła). Potwierdź, że zaplanowane pobieranie SFTP/n8n rzeczywiście się wykonało — luki w tym miejscu po cichu psują trendy.
- Wczytaj dane do głównego narzędzia (Screaming Frog LFA przy okresowych importach; BigQuery/ELK, jeśli masz potok).
Weryfikacja (nigdy nie pomijaj)
3. Odśwież każde aktualne źródło weryfikacji publikowane przez dostawcę (gptbot.json, searchbot.json, chatgpt-user.json, adsbot.json oraz claude.com/crawling/bots.json) — te dane się zmieniają.
4. Włącz weryfikację przy imporcie (Screaming Frog) albo uruchom sprawdzanie IP w CIDR (karta Scripts) dla każdego żądania bota AI.
5. Podziel ruch na zweryfikowany i niezweryfikowany. Zgłoś odsetek niezweryfikowany — to wskaźnik podszywania w tym okresie. Sam wzrost jest już ustaleniem.
Pomiar (tylko zweryfikowany ruch)
6. Częstotliwość crawlowania według bota w porównaniu z poprzednim okresem — odnotuj nowe i znikające boty oraz fale.
7. Najczęściej pobierane strony; potwierdź, że priorytetowe/głębokie strony w ogóle są crawlowane.
8. Punktowa kontrola zależności od surowego HTML na 2–3 szablonach ciężkich od JS (czy boty pobierają tylko HTML?).
9. Podział kodów statusu według bota; zbadaj nowe skupiska 403/429/404.
10. Obecność żądań robots.txt / llms.txt i wszelkie trafienia na niedozwolone ścieżki.
Raportowanie i działanie 11. Zapisuj liczby okresu w bieżącym arkuszu (zweryfikowane trafienia według bota, odsetek podszywania, najczęściej pobierane strony, skupiska błędów), aby mieć trendy, nie migawki. 12. Połącz dane z cytowań (zapytania uziemiające Bing / funkcje AI GSC), zanim wyciągniesz wnioski o widoczności. 13. Zapisuj konkretne poprawki: zamierzone i przypadkowe blokady, luki renderowania JS, uszkodzone linki oraz precyzyjne reguły user-agent dla potwierdzonych podszyć.
Uwaga dotycząca cyklu: ponawiaj weryfikację w każdym okresie — nie zapisuj na stałe „znanej dobrej” listy IP. Crawlery skryte wracają z nowymi IP i ogólnymi UA przeglądarek.
Playbook: „GPTBot (albo ClaudeBot) dostaje 403/429 i nie wiem, czy to zamierzone”
Liniowa instrukcja dla typowego incydentu — zweryfikowany bot AI trafia w logach na błędy. Wykonuj kroki po kolei.
Krok 1 — Najpierw potwierdź, że to prawdziwy bot. Zanim zrobisz cokolwiek innego, użyj aktualnej oficjalnej metody weryfikacji nazwanego dostawcy. Jeśli taka metoda nie istnieje, tożsamość pozostaje niezweryfikowana; nie awansuj jej po cichu do „prawdziwej” ani nie oznaczaj jako podszycia. 403 może nadal oznaczać, że WAF działa prawidłowo.
Krok 2 — Ustal dokładną odpowiedź i jej źródło.
Pobierz podział kodów statusu dla tego bota (karta Scripts). Czy to 403 (zablokowane), 429 (ograniczone) czy 503? Zapisz, czy blokada pochodzi z CDN-u/WAF, konfiguracji serwera czy reguł sąsiadujących z robots.txt.
Krok 3 — Zdecyduj: czy blokada jest zamierzona?
- Chcesz blokować tego bota (np. crawlera treningowego, z którego zrezygnowałeś) → 403 działa zgodnie z projektem. Oddziel udokumentowaną politykę robots od reguły sieciowej nadużyć/bezpieczeństwa. Koniec.
- Nie chcesz go blokować (np. to OAI-SearchBot / PerplexityBot i zależy Ci na widoczności w wyszukiwaniu AI) → przejdź dalej.
Krok 4 — Znajdź przypadkową regułę. Typowi winowajcy to zbyt szeroka reguła WAF „bot”, próg ograniczania ustawiony zbyt nisko dla crawlera działającego falami (przypomnij sobie skok GPTBot WISLR do 114 żądań/minutę — limit minutowy może zadziałać przy legalnej fali), zapomniana dyrektywa disallow w robots.txt albo blokada GEO/ASN obejmująca zakresy operatora.
Krok 5 — Napraw precyzyjnie. Dodaj zweryfikowanego bota do białej listy po user-agencie i opublikowanym zakresie IP albo zwiększ limit szybkości wyłącznie dla tego zweryfikowanego bota. Nie rozluźniaj ochrony dla wszystkich.
Krok 6 — Zweryfikuj poprawkę w logach.
Po wdrożeniu pobierz ponownie logi tego bota. Chcesz, aby skupisko 403/429 zmieniło się w 200/304 na ważnych stronach.
Krok 7 — Ustal nową bazę i obserwuj. Zapisz zmianę w bieżącym arkuszu. Sprawdź ponownie w kolejnym okresie — i uważaj na powrót bota z innym UA, jeśli wcześniej celowo go blokowałeś (skryte crawlowanie).
Błędy analizy logów prowadzące do fałszywych wniosków
Każdy z nich to przekonanie spotykane w praktyce, wyjaśnienie, dlaczego jest błędne, i właściwe działanie.
Mit: „Jeśli robots.txt blokuje bota, nie będzie go w logach / to nie jest problem”.
Dlaczego to błędne: robots.txt jest żądaniem, a nie egzekwowaniem. Pobierający na żądanie użytkownika jawnie wyłączają się z tej reguły, a niektóre crawlery zgłaszano jako omijające blokady (skryte crawlowanie Perplexity, Cloudflare, sierpień 2025). Blokada może zostać całkowicie zignorowana.
Zamiast tego: Użyj logów, aby sprawdzić, czy reguła jest respektowana — szukaj trafień na niedozwolone ścieżki i sprawdź, czy bot w ogóle żąda /robots.txt.
Mit: „User-agent GPTBot / ClaudeBot w logach oznacza, że to naprawdę OpenAI / Anthropic”. Dlaczego to błędne: User-agenty można banalnie podrobić — HUMAN Security zmierzyło 5,7% fałszywego ruchu wśród 16 botów, a Duane Forrester znalazł 81,8% fałszywych żądań w swoim ruchu pobierania na życzenie. Zamiast tego: Dopasuj user-agenta i użyj aktualnej oficjalnej metody weryfikacji operatora, jeśli istnieje; w przeciwnym razie oznacz tożsamość jako niezweryfikowaną.
Mit: „Więcej trafień crawlerów AI = większa szansa na cytowanie”. Dlaczego to błędne: Nie ma uznanych danych o związku przyczynowym ani korelacji, które by to potwierdzały. Pobranie jest konieczne, ale niewystarczające — intensywnie crawlowane strony stale pozostają niecytowane. Zamiast tego: Traktuj logi jako wgląd tylko w etap pobrano i połącz je z danymi po stronie cytowań (zapytania uziemiające Bing, funkcje AI GSC).
Mit: „Każdy crawler AI renderuje w ten sam sposób”. Dlaczego to błędne: Dostawcy nie publikują jednego wspólnego kontraktu JavaScriptu i zasobów podrzędnych, a zaobserwowane zachowanie różni się według agenta i próbki. Zamiast tego: Porównaj surową odpowiedź ze stroną wyrenderowaną, sprawdź żądania zasobów według nazwanego bota i oznacz wynik jako zaobserwowany, a nie uniwersalny.
Mit: „Boty AI przynajmniej sprawdzają mój llms.txt”.
Dlaczego to błędne: W 48-dniowej próbie WISLR odnotowano zero żądań /llms.txt od dowolnego bota AI, zgodnie z wynikiem około 97% nieodczytywania opisanym w artykule AI crawlers.
Zamiast tego: Nie traktuj żądań llms.txt jako oczekiwanej walidacji; mierz to, co boty rzeczywiście pobierają.
Mit: „Blokowanie sieci i polityka robots to ta sama kontrola”. Dlaczego to błędne: robots komunikuje preferencje crawlowania; firewall egzekwuje dostęp sieciowy i może wpływać na niezwiązany ruch. Zamiast tego: Do polityki używaj udokumentowanej reguły user-agent, a blokowanie sieci rezerwuj dla osobno uzasadnionej reakcji na nadużycia lub bezpieczeństwo.
Rzeczywiste przypadki
Duane Forrester — samodzielnie sprawdzone wskaźniki podszywania we własnych logach. Forrester zastosował tę metodę na własnej stronie i opublikował liczby. Spośród 33 żądań pobierania na życzenie tylko 6 pochodziło z IP opublikowanego przez dostawcę — wskaźnik podszywania wyniósł 81,8%; spośród 799 żądań nazwanych Googlebotem tylko 107 zostało zweryfikowanych — około 87% było fałszywych (SEJ). Przed: zaufanie do user-agenta sprawiało, że ruch „asystenta AI” wyglądał na prawdziwy. Po: dopasowanie nazw do opublikowanych list IP pokazało, że większość stanowiło podszywanie. Wniosek: metoda jest ważniejsza niż jego konkretne liczby — jak mówi, pobierz własny zakres dat i znajdź własny odsetek.
WISLR — 48 dni logów CDN-u, sygnatura crawl-vs-render.
Tony Castillo przeanalizował 288 566 wierszy logów CDN-u (12 099 żądań AI/botów) przez 48 dni (WISLR). Konkretne ustalenia: GPTBot był nieobecny przez tygodnie, po czym wykonał falę 152 żądań w trzy minuty (szczyt 114 żądań/min); ChatGPT-User pobrał zero obrazów, CSS i JS — czysta ekstrakcja HTML; nie było też żadnych żądań /llms.txt w całym oknie. Przed: można by założyć stałe crawlowanie i boty świadome JS. Po: logi pokazały falowe zachowanie i pobieranie wyłącznie HTML — n=1, dane z jednej witryny, ale wyraźny obraz tego, co ujawnia prawdziwa analiza. Wniosek: wzorzec zero-JS jest bezpośrednim dowodem stojącym za kontrolą crawl-vs-render.
Cloudflare — współczynnik crawl-to-referral na poziomie sieci. Dane zagregowane Cloudflare pokazują, jak niewiele crawlowania przekłada się na ruch: na każdego odwiedzającego odesłanego przez Anthropic do witryny crawlery tej firmy odwiedziły już dziesiątki tysięcy stron (Cloudflare). Przed: intuicja podpowiadałaby, że intensywne crawlowanie oznacza zaangażowanie. Po: na poziomie sieci proporcja jest skrajnie nierówna — trening odpowiada obecnie za większość aktywności botów AI, a boty treningowe nie mają wysyłać ruchu z powrotem (Cloudflare). Wniosek: strona intensywnie crawlowana bez żadnego referrera to norma, a nie oznaka sukcesu — właśnie dlatego częstotliwość crawlowania nie przewiduje cytowania.
Gotowe prompty AI
Prompty do skopiowania i wklejenia, które pomagają LLM przyspieszyć analizę logów crawlerów AI. Zawsze sprawdzaj wynik względem surowych logów — LLM halucynują, a potok weryfikacji ufający zmyślonemu dopasowaniu IP jest gorszy niż jego brak.
Szkic parsera logów uwzględniającego weryfikację
Write a Python script that parses combined-format Nginx access logs and, for each
request whose user-agent matches a known AI bot (GPTBot, OAI-SearchBot,
ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, CCBot,
Bytespider), does the following:
1. Extract timestamp, client IP, request path, status code, user-agent.
2. Fetch and cache OpenAI's current IP lists (gptbot.json, searchbot.json,
chatgpt-user.json, adsbot.json) and Anthropic's current bots.json list.
3. Mark an OpenAI or Anthropic request VERIFIED only if the user-agent matches AND
the client IP falls inside the matching provider-published ranges; mark providers
without an official method UNVERIFIED, not spoofed.
4. Output two CSVs: verified requests and unverified ("spoofed") requests.
5. Print a summary: verified vs. unverified count per bot, and the top 20 fetched
paths (verified only).
Do NOT count unverified requests in any per-bot metric. Add clear comments.Podsumowanie raportu kodów statusu + crawl-vs-render
I'll paste a table of AI-bot log data (columns: bot, path, status_code,
file_extension). Produce:
- A per-bot status-code breakdown, flagging any 403/429/404 clusters.
- A raw-HTML dependency read: for each bot, the ratio of HTML requests to
JS/CSS/image requests, and a note on whether the bot appears to fetch only HTML
in this sample. Treat HTML-only on a JS-rendered page as a dependency risk, not
proof of a universal no-JavaScript capability.
Keep every conclusion tied to a number from the data — do not infer beyond it.
DATA:
[paste]Triaging podejrzanego IP
A request in my logs claims to be [BOT NAME] from IP [IP ADDRESS]. Walk me through
verifying it: which operator IP-list file to check, how to test whether the IP is
in range, and the reverse+forward DNS fallback if it's not on a published list.
Tell me explicitly what result means "verified" vs. "treat as spoofed." Do not
guess whether this specific IP is legitimate — give me the steps to check. Narzędzia do analizy logów crawlerów AI
W przybliżeniu od bezpłatnych/źródła prawdy do płatnych/zarządzanych:
- grep / PowerShell — najszybszy sposób na zliczenie trafień bota i filtr uwzględniający weryfikację w surowym logu dostępu. Zero konfiguracji; zobacz kartę Scripts.
- Screaming Frog Log File Analyser — desktopowy importer z wbudowanymi presetami botów AI i przełącznikiem „Verify Bots When Importing”, który sprawdza publicznie potwierdzone listy IP. Karty Response Codes, User Agents, URLs (sortuj po Num Events) i IPs. Najlepszy do okresowych importów.
- ELK Stack (Elasticsearch / Logstash / Kibana) lub Splunk — ciągłe pobieranie, pulpity i alerty, gdy import desktopowy staje się zbyt wolny albo potrzebujesz stałego monitoringu.
- BigQuery — długa retencja i SQL na dużą skalę, zwykle zasilane przez Cloudflare Logpush albo zaplanowane pobieranie GraphQL ze zbioru
httpRequestsAdaptiveGroups. - Cloudflare AI Crawl Control — dla witryn za Cloudflare: zarządzane widoki aktywności crawlerów, weryfikacji botów i zgodności z dyrektywami bez własnego potoku.
- Google Search Console — Statystyki crawlowania — nie dla botów AI (tylko Googlebot), ale wzór podziału według crawlera i kodu odpowiedzi, który odbudowujesz dla botów AI z surowych logów.
- Bing Webmaster Tools — AI Performance — odpowiednik wyników cytowań; połącz jego zapytania uziemiające i liczby cytowań z logami wejściowymi crawlowania.
Deklarowany ruch botów AI nagle rośnie w nocy
Objaw: liczba żądań z user-agentem znanego crawlera nagle rośnie. Prawdopodobna przyczyna: podszywanie się, ruch monitoringu albo rzeczywista zmiana crawlowania. Naprawa: przed przypisaniem ruchu zweryfikuj źródłowe IP aktualną metodą operatora, a następnie podziel dane według ASN, ścieżki, statusu i czasu.
Logi pokazują crawlowanie, ale treść nigdy nie jest cytowana
Objaw: zweryfikowane boty pobierają strony bez widocznego wzrostu cytowań. Prawdopodobna przyczyna: crawlowanie jest tylko dowodem kwalifikacji; pobranie i wybór odpowiedzi to osobne etapy. Naprawa: potwierdź, że bot otrzymał treściwy HTML, a następnie oceń indeksowalność, jakość fragmentu, dopasowanie do zapytania i potwierdzenie zewnętrzne, nie traktując liczby crawli jako rankingu.
Każde żądanie wygląda na zakończone kodem 200
Objaw: brakujące adresy URL i zablokowana treść są zapisywane jako sukces. Prawdopodobna przyczyna: powłoka aplikacji, reguła CDN-u albo własna strona błędu zwraca miękkie 404. Naprawa: pobierz próbki treści odpowiedzi i końcowych nagłówków, a następnie popraw obsługę statusów zamiast ufać samemu kodowi.
Zweryfikowane boty otrzymują pustą powłokę
Objaw: przeglądarka renderuje treść, ale pobrania dopasowane w logach otrzymują niewiele użytecznego HTML. Prawdopodobna przyczyna: strona zależy od JavaScriptu po stronie klienta, którego crawler nie wykonuje. Naprawa: porównaj wynik surowy i wyrenderowany oraz dostarczaj krytyczną treść i linki w HTML przez SSR, renderowanie statyczne albo inną niezawodną strategię dostarczania.
Metryki dla logów crawlerów AI
| Metryka | Co mówi | Jak pobrać | Benchmark lub realistyczny zakres | Częstotliwość |
|---|---|---|---|---|
| Zweryfikowane żądania według operatora | Rzeczywista wielkość crawlowania po odfiltrowaniu podszyć | Dopasuj user-agenta i dowody weryfikacji operatora, a następnie agreguj żądania | Użyj własnej bazy witryny; wielkości różnią się według witryny i operatora | Tygodniowo lub miesięcznie |
| Unikalne udane kanoniczne adresy URL | Zasięg użytecznych stron, do których dotarto | Znormalizuj żądane adresy URL, połącz końcowy status/kanoniczny adres i policz zweryfikowane sukcesy | Porównuj z kwalifikującym się inwentarzem, nie ze wszystkimi wariantami URL | Miesięcznie |
| Rozkład kodów statusu | Marnowanie crawlowania, błędy dostępu i brakująca treść | Grupuj zweryfikowane żądania według końcowego statusu i klasy ścieżki | Badaj nieoczekiwane zmiany; nie wymyślaj uniwersalnego współczynnika | Tygodniowo |
| Dostarczone bajty lub treściwy HTML | Czy udane żądania zawierały użyteczną treść | Pobierz próbkę rozmiaru/ciała odpowiedzi albo połącz telemetrię aplikacji | Porównuj z bazą szablonu; kod 200 sam nie wystarcza | Przy wydaniu i miesięcznie |
| Relacja crawl-to-referral | Czy zweryfikowane crawlowanie zbiega się z obserwowalnymi wizytami | Porównaj logi botów z osobno kodowanymi referralami AI w czasie | Korelacja opisuje, ale nie dowodzi cytowania ani przyczynowości | Miesięcznie |
Zasoby warte Twojego czasu
Moje powiązane teksty
- Jak przeprowadzić analizę pliku logów SEO (Ahrefs, po przeglądzie Patricka Stoxa i Michala Pecánka) — szablon z ery przed AI, którego ten artykuł jest sequelem dotyczącym AI: co mierzyć, narzędzia i weryfikacja botów.
- Czym jest analiza pliku logów? (glosariusz Ahrefs) — tekst definicyjny.
- Poznaj nowe crawlery internetowe: boty AI zbliżają się do botów wyszukiwarek — moja analiza udziału crawlowania botów AI w Cloudflare Radar.
- Boty AI najczęściej blokowane przez około 140 milionów witryn — dane o blokadach robots.txt w otwartej sieci.
- 80% naszego ruchu z wyszukiwania AI trafia na stronę główną, strony produktów i darmowe narzędzia — analiza aktywności AI według typu strony, odpowiednik pytania „które strony są crawlowane”.
Moje wystąpienia
- Jak działa wyszukiwanie (SlideShare) — moje omówienie crawlowania, renderowania, indeksowania i rankingu, przydatne do odczytywania zachowania botów w logach. (Obowiązuje stałe zastrzeżenie: to moje rozumienie systemów, nie gwarancja, że jest w 100% kompletne lub dokładne.)
Z branży
- Dlaczego analiza logów ma znaczenie dla crawlerów AI i widoczności w wyszukiwaniu — Lauren Busby (Trebletree), Search Engine Land: „logi są brakującą warstwą”, okno retencji i ujęcie 403/429.
- 81,8% mojego ruchu „asystenta AI” było fałszywe. Wynik Googlebota był jeszcze gorszy — Duane Forrester, Search Engine Journal: wyróżniające się studium weryfikacji pierwszej strony i metoda.
- Perplexity, skryte crawlowanie AI i wpływ na GEO oraz analizę logów — Clint Spaulding, Seer Interactive: dlaczego zablokowane boty wracają, wyglądając jak ludzie.
- Jak monitorować boty AI w Log File Analyser — Screaming Frog: praktyczny przewodnik po narzędziu i weryfikacji przy imporcie.
- Luka między crawlowaniem a kliknięciami: dane Cloudflare o botach AI, treningu i odesłaniach — Cloudflare: sieciowe współczynniki crawl-to-referral i podział trening/wyszukiwanie.
- Czy Anthropic crawluje dane z sieci? — aktualna dokumentacja Anthropic o przeznaczeniu botów i kontroli robots.
- Dokumentacja botów i crawlerów OpenAI — ciągi user-agent i opublikowane pliki IP do weryfikacji.
Statystyki warte cytowania
- Wskaźnik podszywania — 5,7% wśród 16 crawlerów AI. Dwutygodniowa analiza HUMAN Security ruchu podającego się za jeden z 16 znanych crawlerów AI wykazała, że podszyto około 1 na 18 żądań (dane dostawcy przekazane przez SEJ).
- Wskaźnik podszywania — 81,8% w logach jednego praktyka. Samodzielny audyt Duane’a Forrestera wykazał, że 27 z 33 żądań pobierania na życzenie pochodziło z IP, których dostawcy nie publikują; jego wynik dla Googlebota wyniósł około 87% fałszu (SEJ).
- Crawl-to-referral, ClaudeBot kontra OpenAI. Dane Cloudflare (tydzień 25 maja–1 czerwca 2026 r.) wskazywały około 11 122 stron crawlowanych na referral dla ClaudeBot i około 857:1 dla OpenAI, wobec około 5:1 dla Googlebota (Cloudflare).
- Trening napędza większość aktywności botów AI. Według Cloudflare trening odpowiada obecnie za prawie 80% aktywności botów AI, wobec 72% rok wcześniej — to kontekst wyjaśniający, dlaczego intensywne crawlowanie bez referrera jest normą (Cloudflare).
- Jedno rzeczywiste okno logów: 288 566 wierszy, 12 099 żądań botów, 48 dni. Studium WISLR — z falą 152 żądań GPTBot w trzy minuty i zerowym pobieraniem obrazów/CSS/JS przez ChatGPT-User (WISLR).
Sprawdź się: analiza logów crawlerów AI
Pięć krótkich pytań o pobieranie i odczytywanie logów botów AI. Wybierz odpowiedź na każde, a następnie sprawdź wynik.
Dziennik zmian
Zaktualizowano 6 sie 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.