Artykuł · 9 sierpnia 2026 · Maciek, VIAM Agency
Trzy strony, które odsyłały roboty AI. Kod 403, którego nikt nie widział
Sprawdziliśmy dziewięć stron prawdziwym zapukaniem pod adres, podszywając się kolejno pod cztery roboty. Trzy firmy odsyłały roboty AI błędem 403, a Googlebotowi oddawały stronę normalnie. Blokada siedziała po stronie firmy, która trzyma serwer i nie dało się jej zdjąć z naszej strony. Pomiar z 9 sierpnia 2026, dziewięć adresów, cztery roboty.
Co jest w tym tekście
Zero linków to nie jest mało linków
Szóstego sierpnia robiłem coś zupełnie innego. Zastanawialiśmy się nad nawigacją wstrzykiwaną JavaScriptem — takim menu, które w kodzie strony nie istnieje, a pojawia się dopiero, kiedy przeglądarka uruchomi skrypt. Chciałem policzyć, ile linków widzi na stronie głównej robot, który nie odpala skryptów. Dziewięć adresów, dziesięć minut, nudna robota na koniec dnia.
Gabinet weterynaryjny pokazał zero linków. Salon wykończeń wnętrz — też zero. Przeglądarce te same strony oddawały trzynaście i dziewiętnaście.
I tu jest cała rzecz, bo te dwie liczby wyglądają podobnie, a znaczą coś zupełnie innego. Trzy linki to jest „mało linków”. Zero linków to jest „nie dostałem strony”. Nie ma takiej strony, na której nie byłoby ani jednego odnośnika. Skoro robot nie zobaczył żadnego, to znaczy, że nie zobaczył niczego.
Zajrzałem w kod odpowiedzi. I wtedy zrobiło się ciekawie.
Cztery kody obok siebie
Ten sam adres. Ta sama minuta. Jedyna różnica jest w jednym wierszu nagłówka żądania, w miejscu, w którym program przedstawia się serwerowi.
$ curl -A "GPTBot" https://gabinet-weterynaryjny.pl → 403 $ curl -A "ClaudeBot" https://gabinet-weterynaryjny.pl → 403 $ curl -A "PerplexityBot" https://gabinet-weterynaryjny.pl → 403 $ curl -A "Googlebot" https://gabinet-weterynaryjny.pl → 200 $ curl https://gabinet-weterynaryjny.pl → 200 # 403 = „odmawiam". 200 = „proszę bardzo".
Strona działała. Telefon dzwonił. Wizytówka w Google świeciła. Klienci wchodzili, czytali, umawiali wizyty. Wszystko było w porządku — poza tym, że dla ChatGPT, Claude'a i Perplexity ta strona fizycznie nie istniała.
Sprawdziłem pozostałe siedem. Trzeci przypadek okazał się ciekawszy od dwóch pierwszych i wymaga precyzji, bo tu bardzo łatwo powiedzieć o jedno słowo za dużo.
| Firma | GPTBot | ClaudeBot | PerplexityBot | Googlebot |
|---|---|---|---|---|
| gabinet weterynaryjny | 403 | 403 | 403 | 200 |
| salon wykończeń wnętrz | 403 | 403 | 403 | 200 |
| pogotowie wod-kan 24h | 200 | 403 | 200 | 200 |
| pozostałych sześć firm | 200 | 200 | 200 | 200 |
Przesuń tabelę w bok →
Pomiar 2026-08-09, prawdziwe zapukanie pod adres, nie odczyt deklaracji z pliku. Nazwy firm zamienione na branże, liczby bez zmian.
Trzy firmy odsyłały roboty AI błędem 403. Dwie z nich blokowały wszystkie trzy roboty naraz. Trzecia blokowała wyłącznie ClaudeBota — GPTBot i PerplexityBot dostawały u niej normalne 200.
Ta różnica ma znaczenie i dlatego stoi tu osobno, w trzech zdaniach zamiast w jednym. Napisanie „trzy firmy odsyłały ChatGPT błędem 403” byłoby krótsze, ładniejsze i nieprawdziwe. Pierwsza wersja tej strony, którą napisaliśmy, miała dokładnie takie zdanie — i dwa akapity niżej sama sobie zaprzeczała tabelą.
Dlaczego nasza własna kontrola świeciła na zielono
Teraz najbardziej niewygodna część.
Mieliśmy narzędzie, które sprawdzało dostępność stron dla robotów AI. Chodziło regularnie, obejmowało wszystkich klientów i meldowało zielone „w porządku” dla wszystkich dziewięciu firm. Także dla tych trzech.
Bo sprawdzało robots.txt.
Robots.txt to plik tekstowy, w którym właściciel strony wypisuje, których robotów sobie życzy,
a których nie. Wszystkie trzy strony miały w nim grzeczne
User-agent: * / Allow: /, czyli „wchodźcie wszyscy”. Narzędzie odczytywało tę
deklarację, porównywało z listą nazw i stawiało zieloną plakietkę.
Tylko że robots.txt to prośba. Serwer to bramkarz. Można mieć na drzwiach tabliczkę „zapraszamy wszystkich”, a przy drzwiach ochroniarza, który nie wpuszcza trzech konkretnych osób. Tabliczka nie kłamie. Ona po prostu nie ma nic do gadania.
To jest podręcznikowy przykład tego, co u siebie nazywamy cichym fałszywym sukcesem: system melduje „sprawdzone, wszystko gra”, bo sprawdził wyłącznie to, co potrafi sprawdzić. Nie skłamał. Odpowiedział na inne pytanie niż to, które mu zadaliśmy.
Skąd wzięła się ta blokada
Pierwsza hipoteza była taka, że ktoś kiedyś coś wpisał w plikach strony. Sprawdziliśmy przez FTP:
w .htaccess obu stron nie ma ani jednej reguły odwołującej się do nazwy robota.
Nikt tego nie wpisywał.
Druga hipoteza okazała się trafna. Kod 403 generował serwer, zanim żądanie zdążyło dotknąć jakiegokolwiek pliku. Obie te firmy stoją u innego operatora serwera niż reszta naszych klientów, a tam blokada robotów AI jest włączona domyślnie — jako element zabezpieczeń. Nikt jej nie włączał u siebie. Nikt o niej nie wiedział. Nikt nie mógł jej zobaczyć, patrząc na stronę.
Z punktu widzenia właściciela gabinetu wygląda to dokładnie tak: nic się nie stało. Żadnego alertu, żadnego maila, żadnego objawu.
Próba naprawy, która nie zmieniła nic
Siódmego sierpnia sprawdziliśmy, czy da się to obejść z naszej strony. Wybraliśmy jednego
klienta, zrobiliśmy kopię zapasową pliku, ustawiliśmy automatyczne cofnięcie zmiany
i dopisaliśmy do .htaccess regułę jawnie przepuszczającą te trzy roboty.
Wynik: 403 przed, 403 po, 403 po cofnięciu.
Blokada działa wyżej, niż sięgają nasze pliki. Reguła w .htaccess jest
przetwarzana przez serwer dopiero po tym, jak żądanie przejdzie przez warstwę zabezpieczeń —
a ono do tego momentu nie dochodzi. Zostaje jedna droga: zgłoszenie u operatora serwera
i pilnowanie go do skutku.
Dlatego w naszej ofercie nie ma słowa „naprawiamy”. Jest „wykrywamy” i „prowadzimy sprawę”. Ta różnica kosztowała nas jeden wieczór testów i jest warta każdej minuty, bo alternatywą było sprzedawanie czegoś, czego nie umiemy zrobić.
Jak sprawdzić to u siebie, dziś, za darmo
Nie potrzebujesz do tego żadnego narzędzia ani żadnego dostępu. Potrzebujesz terminala — na Macu to program Terminal, na Windowsie PowerShell — i adresu własnej strony. Wklej to, podmieniając adres:
# pięć pytań do Twojego serwera, jedno po drugim for UA in GPTBot ClaudeBot PerplexityBot OAI-SearchBot Googlebot; do echo -n "$UA: " curl -s -o /dev/null -w "%{http_code}\n" -A "$UA" https://twojafirma.pl done # wynik, którego chcesz: GPTBot: 200 ClaudeBot: 200 PerplexityBot: 200 OAI-SearchBot: 200 Googlebot: 200
Pięć razy 200 i temat jest zamknięty. Jedno 403 znaczy, że masz problem, o którym nie wiedziałeś.
Dwie rzeczy warto przy tym wiedzieć. Po pierwsze, ten test pyta wyłącznie o stronę główną.
Blokada założona na jeden katalog nam umknie i to jest ograniczenie także naszego narzędzia —
piszemy o tym również na stronie Puchacza. Po drugie, wynik z jednego dnia jest wynikiem
z jednego dnia. Ustawienia hostingu bywają zmieniane bez ogłoszenia, a stary
robots.txt potrafi wrócić przy aktualizacji WordPressa.
Co zrobić, jeśli u Ciebie też jest 403
- Sprawdź, czy Googlebot dostaje 200. Jeśli tak, Twoja strona działa i nie ma awarii. To zawęża sprawę do jednej rzeczy: blokady wymierzonej w roboty AI.
- Zajrzyj do własnego
robots.txtpod adresemtwojafirma.pl/robots.txt. Jeśli są tam nazwy robotów przy słowieDisallow, sprawa jest prosta i kończy się na jednym pliku. - Jeśli robots.txt jest czysty, napisz do hostingu. W zgłoszeniu podaj konkret: adres, nazwę robota, kod odpowiedzi i datę pomiaru. Poproś o wyłączenie blokady robotów AI na Twoim koncie. Ogólne „coś nie działa” utknie na pierwszej linii wsparcia.
- Po odpowiedzi hostingu zapukaj jeszcze raz. Deklaracja, że zmiana została wprowadzona, nie jest tym samym, co kod 200 na ekranie. To jest dokładnie ten sam błąd, który popełniliśmy my, ufając plikowi zamiast serwerowi.
Czy w ogóle warto się tym przejmować
Uczciwa odpowiedź brzmi: dziś ten kanał jest mały. U wszystkich naszych klientów razem ruch z asystentów AI to 21 sesji przez 28 dni, wszystkie z ChatGPT. U dwóch firm to około 2,6–2,7% wszystkich wejść, u reszty ułamek procenta, u trzech dokładnie zero.
Gdyby ktoś sprzedawał Ci dziś „ruch z AI” jako źródło klientów, pokaż mu tę liczbę i poproś o jego własną.
A mimo to sprawdzamy to przy każdym pomiarze i uważamy, że warto. Z jednego powodu: zamknięte drzwi zostają zamknięte. Blokada z lipca będzie działać w grudniu, jeśli nikt do nich nie zapuka. Koszt sprawdzenia to kilka sekund. Koszt niesprawdzenia jest nieznany, bo nie widać go w żadnym raporcie — a to jest najgorszy rodzaj kosztu.
I jeszcze jedno, mniej oczywiste. Ta sama warstwa zabezpieczeń, która odsyła GPTBota, odsyła też sporo innych rzeczy: narzędzia do sprawdzania szybkości, walidatory, podglądy linków w komunikatorach. Jeśli ktoś wklei Twój adres na Messengerze i nie wyświetli się żaden podgląd, to bywa ten sam problem.
Robots.txt to prośba, nie przepustka. I nikt tego nie sprawdza, dopóki nie zapuka.
Zaczęliśmy od liczenia linków, a skończyliśmy na tym, że przez tygodnie trzech naszych klientów było dla ChatGPT nie do pobrania, a nasze narzędzie meldowało, że wszystko gra. Nie dlatego, że narzędzie było złe. Dlatego, że pytało o deklarację zamiast o rzeczywistość.
Cały moduł Puchacz powstał z tego jednego wieczoru.
Nie chcesz otwierać terminala
Podaj adres, zapukam za Ciebie i odeślę cztery kody odpowiedzi z datą i godziną pomiaru. Bez karty, bez rozmowy sprzedażowej i bez żadnego dostępu do Twoich systemów.
Sprawdź, czy ChatGPT może pobrać Twoją stronęJeśli wszystko jest w porządku, napiszę to jednym zdaniem i nie będę Ci niczego sprzedawał.
Nazwy robotów i sposób ich rozpoznawania podają sami dostawcy: OpenAI · Anthropic · Google.