← Wszystkie wpisy

Agents.txt nie jest mechanizmem kontroli dostępu

DreamHost dokumentuje już, że plany Web Hosting automatycznie obejmują domyślne pliki robots.txt i agents.txt, jeśli witryna nie ma własnych wersji tych plików.1

Ten drobny szczegół hostingowy wskazuje na większą zmianę. Witryny internetowe mówią dziś jednocześnie do co najmniej 3 grup odbiorców: crawlerów wyszukiwarek, crawlerów AI oraz asystentów działających w czasie wnioskowania, którzy szukają uporządkowanego kontekstu. Same nazwy plików sprawiają, że ta zmiana wygląda schludnie. robots.txt określa, co zautomatyzowani klienci mogą crawlowac. llms.txt daje LLM-om wyselekcjonowaną mapę. agents.txt sugeruje politykę dla agentów. Żaden z tych plików nie powinien dawać operatorowi poczucia ochrony.

Agents.txt nie jest mechanizmem kontroli dostępu. Pliki dla crawlerów należy traktować jako publiczne wskazówki polityki i pomoce w odkrywaniu treści. Rzeczywista kontrola nadal wynika z autoryzacji po stronie serwera, weryfikacji tożsamości botów, limitów żądań, logów, zachowania pamięci podręcznej oraz dowodów, że istotne crawlery faktycznie zobaczyły aktualne pliki.

W skrócie

Standard Robots Exclusion Protocol mówi, że reguły dla crawlerów „nie są formą autoryzacji dostępu”.2 Google ostrzega również, że URL zablokowany w robots.txt nadal może pojawić się w wyszukiwarce, jeśli prowadzą do niego linki z innych stron.3 Także artykuł DreamHost o kontroli botów mówi, że pliki robots działają jak sugestie dla zgodnych wyszukiwarek, a złe boty mogą zignorować plik albo użyć mylących ciągów user-agent.1

Crawlery AI dodają kolejne wymiary polityki. OpenAI rozdziela OAI-SearchBot dla wyszukiwania w ChatGPT od GPTBot dla crawlowania związanego z treningiem i wskazuje, że ChatGPT-User reprezentuje działania wywołane przez użytkownika, w których robots.txt może nie mieć zastosowania.4 Google informuje, że Google-Extended nie ma osobnego ciągu HTTP user-agent i działa jako token produktowy w robots.txt dla preferencji dotyczących trenowania oraz grounding modeli, a nie dla obecności w Google Search.5 Plik kontroli crawlerów wymaga dziś polityki na poziomie celu, a nie jednego przełącznika „zezwól albo zablokuj”.

Warto używać agents.txt, jeśli oczekuje tego host, platforma albo ekosystem agentów. Warto używać llms.txt, jeśli narzędzia działające w czasie wnioskowania mają rozumieć najlepsze strony witryny. robots.txt powinien pozostawać poprawny, bo duże crawlery nadal z niego korzystają. Następnie należy weryfikować żądania na brzegu serwera i czytać logi. Plik tekstowy może wyrazić intencję. Nie zatrzyma niezaufanego klienta.

Najważniejsze wnioski

Dla właścicieli witryn: - Publikować robots.txt dla polityki crawlowania, llms.txt dla kontekstu czytelnego dla AI, a agents.txt wyłącznie jako wskazówkę dla agentów. - Nie umieszczać prywatnych tras, nazw tajnych plików, wewnętrznych instrukcji ani wrażliwych ścieżek w żadnym publicznym pliku dla crawlerów. - Po zmianach sprawdzać logi. Plik polityki ma znaczenie tylko wtedy, gdy właściwy crawler go pobierze i zmieni zachowanie.

Dla zespołów SEO i AIO: - Oddzielać widoczność w wyszukiwarkach od zgód na trening i pobrań wywołanych przez użytkownika. - Jawnie wskazywać listę dozwolonych botów, na których zależy witrynie, takich jak crawlery wyszukiwarek i systemy odpowiedzi AI. - Łączyć pliki dla crawlerów z weryfikacją sitemap, canonical, schema i llms.txt.

Dla zespołów bezpieczeństwa: - Traktować ciągi user-agent jako deklaracje, a nie tożsamość. - Weryfikować crawlery przez reverse DNS albo opublikowane zakresy IP tam, gdzie operator to wspiera. - Dostęp do wrażliwych zasobów egzekwować przez uwierzytelnianie, reguły WAF, politykę aplikacji i limity żądań, a nie przez etykietę crawlerów.

Co zmieniło się wraz z agents.txt?

robots.txt istnieje od dekad. RFC definiuje plik robots.txt, który właściciele usług udostępniają, aby crawlery mogły zdecydować, do których URI wolno im uzyskać dostęp.2 Podstawowa postać pliku wygląda znajomo:

User-agent: *
Disallow: /private-draft/
Sitemap: https://example.com/sitemap.xml

agents.txt pojawia się w innym momencie. Sieć nie przyjmuje już wyłącznie crawlerów wyszukiwarek. Trafiają do niej crawlery treningowe, crawlery silników odpowiedzi, crawlery bezpieczeństwa reklam, pobrania asystentów przeglądarkowych, pobrania LLM wywołane przez użytkownika, crawlery archiwizujące, narzędzia SEO oraz spam boty, które pożyczają nazwy od legalnych crawlerów.

Dokumentacja DreamHost ma znaczenie, ponieważ przesuwa agents.txt z niszowego pomysłu do domyślnego zachowania hostingu u co najmniej jednego popularnego dostawcy. Artykuł mówi, że DreamHost automatycznie dołącza domyślne pliki robots.txt i agents.txt do planów Web Hosting i pozwala właścicielom witryn nadpisać dowolny z nich przez umieszczenie własnego pliku w katalogu głównym witryny.1 Nie czyni to z agents.txt standardu o semantyce egzekwowania. Sprawia jednak, że ta nazwa pliku będzie częściej spotykana w praktyce.

Bezpieczna interpretacja jest wąska:

Plik Najlepsza rola Błędne założenie
robots.txt Preferencja crawlowania dla zgodnych crawlerów. „Zablokowane” znaczy „prywatne”.
llms.txt Wyselekcjonowana, czytelna dla LLM mapa do użycia w czasie wnioskowania. „Wymienione” znaczy „rankingowane albo cytowane”.
agents.txt Wskazówka polityki dla agentów tam, gdzie platforma jej szuka. „Bot musi jej przestrzegać”.
Sitemap Pełne odkrywanie URL-i dla publicznych stron nadających się do indeksacji. „Zgłoszone” znaczy „zaindeksowane”.
Logi serwera Dowód tego, co faktycznie się wydarzyło. „Brak widocznego referrera” znaczy „żaden crawler nie użył strony”.

Nazwy plików nie powinny ze sobą konkurować. Powinny tworzyć pakiet polityki: o co crawlery mogą poprosić, co systemy AI powinny czytać, co agenci powinni wiedzieć i co serwer faktycznie zaobserwował.

Robots.txt nadal ma znaczenie, ale nie chroni

Pliki dla crawlerów zawodzą wtedy, gdy zespoły używają ich jako granic bezpieczeństwa.

RFC jasno wyznacza tę granicę. Protokół prosi zautomatyzowanych klientów o respektowanie reguł przy dostępie do URI; nie autoryzuje dostępu.2 Google mówi to samo w praktyce operacyjnej: jeśli inna strona linkuje do niedozwolonego URL-a, Google może nadal znaleźć i zaindeksować adres URL oraz inne publiczne informacje z linków, nawet bez crawlowania treści zablokowanej strony.3 DreamHost ostrzega, że reguły robots działają jak sugestie dla zgodnych wyszukiwarek, a złe boty mogą zignorować plik albo użyć fałszywych ciągów user-agent.1

Z tych faktów wynika prosta reguła: nigdy nie należy umieszczać w robots.txt, agents.txt ani llms.txt niczego, co zaszkodziłoby witrynie po skopiowaniu do wyniku wyszukiwania, zeskrobaniu do zbioru danych albo wyświetleniu przez LLM.

Złe pliki dla crawlerów więcej ujawniają, niż chronią:

User-agent: *
Disallow: /internal-product-roadmap/
Disallow: /legal-private/
Disallow: /prompt-drafts/
Disallow: /customers/acme-renewal-risk/

Powyższy plik mówi każdemu odwiedzającemu, gdzie mogą znajdować się wrażliwe materiały. Zgodny crawler może omijać te ścieżki. Atakujący otrzymuje mapę katalogów.

Bezpieczniejszy plik wyraża publiczną politykę crawlowania bez nazywania wrażliwego inwentarza:

User-agent: *
Allow: /
Disallow: /*.md$
Sitemap: https://example.com/sitemap.xml

Ta wersja przekazuje realną preferencję bez ujawniania prywatnej struktury. Jeśli /prompt-drafts/ istnieje, serwer powinien chronić go uwierzytelnianiem oraz, tam gdzie to właściwe, nagłówkami noindex. Plik dla crawlerów nie powinien dźwigać tego ciężaru.

Crawlery AI potrzebują polityki na poziomie celu

Polityka dla crawlerów wyszukiwarek kiedyś wydawała się binarna: zezwolić Googlebot, zablokować hałaśliwe narzędzia SEO, a prywatne strony trzymać prywatnie za pomocą kontroli serwerowych.

Polityka dla crawlerów AI dodaje cel. Właściciel witryny może chcieć, aby strona pojawiała się w wynikach wyszukiwania ChatGPT, a jednocześnie wyłączyć tę samą stronę z użycia do trenowania modeli. Dokumentacja crawlerów OpenAI pokazuje ten podział wprost. OAI-SearchBot obsługuje funkcje wyszukiwania ChatGPT, natomiast GPTBot crawluje treści, które mogą być używane do trenowania bazowych modeli generatywnej AI OpenAI.4 OpenAI mówi również, że te ustawienia są niezależne: webmaster może zezwolić OAI-SearchBot i jednocześnie zablokować GPTBot.4

Google wyznacza podobną granicę innym sposobem. Dokumentacja crawlerów Google mówi, że Google-Extended nie ma osobnego ciągu user-agent dla żądania HTTP; crawl wykonują istniejące user agenty Google, a Google-Extended działa jako token produktowy w robots.txt.5 Google wskazuje, że token kontroluje, czy zcrawlowane treści z witryny mogą wspierać przyszłe trenowanie modeli Gemini i grounding, oraz że nie wpływa na obecność ani ranking w Google Search.5

Te 2 przykłady pokazują, dlaczego płaska lista blokad mija się z celem. Rzeczywista macierz polityki pyta:

Cel Przykładowy sygnał Pytanie operatora
Odkrywanie w wyszukiwarkach Googlebot, Bingbot, OAI-SearchBot Czy strona ma być pokazywana w wynikach wyszukiwania albo odpowiedziach?
Preferencja treningowa GPTBot, Google-Extended Czy strona ma być używana w przepływach pracy związanych z treningiem modeli albo groundingiem modeli?
Pobranie wywołane przez użytkownika ChatGPT-User, asystenci przeglądarkowi Czy człowiek poprosił asystenta o pobranie strony?
Zrozumienie witryny llms.txt, schema, RSS Czy systemy AI dostały jasne wyjaśnienie publicznej treści?
Ruch nadużyciowy Podszyte user agenty, narzędzia scrapingowe Czy żądanie dowiodło tożsamości i mieściło się w polityce?

Plik polityki powinien odpowiadać celowi. Nie należy blokować każdego user agenta AI, a potem zastanawiać się, dlaczego wyszukiwarki AI ignorują witrynę. Nie należy też zezwalać każdemu crawlerowi AI, a potem narzekać, że crawlery treningowe pobierają strony przeznaczone wyłącznie do wyszukiwania dla użytkowników. Trzeba rozdzielić cele, zapisać preferencję i zweryfikować zachowanie.

Llms.txt rozwiązuje inny problem

llms.txt nie zastępuje robots.txt. Propozycja Jeremy’ego Howarda opisuje /llms.txt jako sposób dostarczenia informacji, które pomagają LLM-om korzystać z witryny w czasie wnioskowania.6 Ta sama propozycja mówi, że llms.txt może współistnieć z obecnymi standardami sieci: sitemapy wymieniają strony dla wyszukiwarek, natomiast llms.txt oferuje wyselekcjonowany przegląd dla LLM-ów i może uzupełniać robots.txt kontekstem dla dozwolonej treści.6

Dla pracy AIO to istotne rozróżnienie.

robots.txt odpowiada: „Czy ten crawler może poprosić o tę ścieżkę?”.

llms.txt odpowiada: „Jeśli asystent czyta moją witrynę, co powinien zrozumieć najpierw?”.

agents.txt może odpowiadać: „Co klienci agentowi powinni wiedzieć o pożądanym zachowaniu?”.

Te pytania leżą blisko siebie, ale nie sprowadzają się do jednego pliku. Poważna witryna powinna traktować odkrywanie przez AI jak powierzchnię wydawniczą:

  1. Publikować strony kanoniczne z jasnymi tytułami i opisami.
  2. Dodawać dane strukturalne zgodne z widoczną stroną.
  3. Utrzymywać aktualny sitemap i RSS.
  4. Publikować llms.txt i llms-full.txt jako wyselekcjonowany kontekst AI.
  5. Publikować robots.txt z jawną polityką crawlerów.
  6. Dodawać agents.txt tylko wtedy, gdy platforma albo ekosystem agentów daje temu plikowi konkretnego czytelnika.
  7. Sprawdzać logi, aby potwierdzić, że crawlery pobierają zmienione pliki.

Pominięcie ostatniego kroku zamienia AIO w rytuał nadziei. Plik dla crawlerów istnieje. Trasa zwraca 200. Żaden dowód nie potwierdza, że zamierzeni klienci go zobaczyli.

Weryfikacja należy do brzegu serwera

Ciągi user-agent nie dowodzą tożsamości. Losowy skrypt może wysłać User-Agent: Googlebot. Scraper może wysłać User-Agent: GPTBot. Polityka ufająca samemu nagłówkowi najłagodniej traktuje to, co najłatwiej podrobić.

Google dokumentuje 2 ścieżki weryfikacji żądań deklarujących pochodzenie od Google: reverse DNS plus forward DNS dla pojedynczych sprawdzeń oraz dopasowanie do opublikowanych zakresów IP dla większych systemów.7 OpenAI publikuje pliki JSON adresów IP dla OAI-SearchBot, GPTBot i ChatGPT-User w dokumentacji crawlerów.4 Te mechanizmy nie obejmują każdego crawlera. Ustanawiają jednak właściwy model: tożsamość wymaga dowodu wykraczającego poza ciąg tekstowy.

Minimalna polityka brzegowa powinna rejestrować:

Dowód Dlaczego jest ważny
User-agent Pokazuje deklarację klienta.
Źródłowy IP i ASN Pomaga oddzielić scrapery z chmury od zweryfikowanych zakresów crawlerów.
Wynik reverse DNS albo zakresu IP Dowodzi tożsamości tam, gdzie operator wspiera weryfikację.
Żądana ścieżka Pokazuje, jakiej treści klient faktycznie dotknął.
Czas pobrania robots.txt Pokazuje, czy klient sprawdził politykę przed crawlowaniem.
Kod statusu i wynik cache Pokazuje, co otrzymał crawler.
Tempo i wzorzec ścieżek Ujawnia nadużycia nawet od nazwanych botów.

Taki pakiet logów zmienia politykę crawlerów z opinii w dowód. Jeśli GPTBot nadal żąda niedozwolonych ścieżek, można to udowodnić. Jeśli fałszywy Googlebot z proxy mieszkaniowego atakuje URL-e wyglądające na prywatne, można go zablokować bez karania prawdziwego Googlebot. Jeśli OAI-SearchBot nigdy nie poprosił o zmieniony artykuł, wiadomo, dlaczego strona nie pojawiła się w wyszukiwaniu ChatGPT.

Praktyczny pakiet polityki dla crawlerów AI

Nie należy zaczynać od pliku. Trzeba zacząć od wyniku.

Wynik Wymagana kontrola
Wyszukiwarki powinny indeksować publiczne strony. Sitemap, tagi canonical, schema, szybkie odpowiedzi 200 i dozwolone crawlery wyszukiwarek.
Silniki odpowiedzi AI powinny rozumieć witrynę. Przejrzyste artykuły, schema, RSS, llms.txt i strony źródłowe z jawnymi podsumowaniami.
Crawlery treningowe powinny omijać określone treści. Grupy w robots.txt specyficzne dla celu oraz egzekwowanie po stronie serwera tam, gdzie wymaga tego polityka lub prawo.
Treści prywatne muszą pozostać prywatne. Uwierzytelnianie, autoryzacja, brak publicznych linków, brak ujawniania w plikach dla crawlerów i brak wycieku cache.
Złe boty nie powinny zużywać zasobów. Limity żądań, reguły WAF, wyjątki dla zweryfikowanych botów i logi nadużyć.
Zmiany polityki powinny być audytowalne. Sprawdzenia tras, logi pobrań przez crawlery, znaczniki czasu wdrożeń i krótki pakiet przeglądu.

Taki pakiet przypisuje każdej warstwie właściwe zadanie. robots.txt komunikuje preferencję. llms.txt komunikuje kontekst. agents.txt komunikuje intencję dla agentów tam, gdzie istnieje czytelnik. Serwer egzekwuje. Logi dowodzą.

Na mojej własnej witrynie praca z crawlerami podąża za tym podziałem. Publiczny plik polityki wita legalne crawlery i blokuje surowe ścieżki Markdown, które crawlery wywnioskowały z przykładów w blokach kodu. Pliki kontekstu AI dają asystentom wyselekcjonowaną drogę do publicznych tekstów. Nocny spis crawlowania pokazuje mi, czy crawlery widziały błędy, nieświeży cache, brakujące trasy albo stare URL-e, które powinny już zwracać 410. Plik polityki przekazuje intencję. Logi rozstrzygają, czy intencja zadziałała.

Co umieścić w agents.txt

Dopóki ekosystem się nie ustabilizuje, agents.txt powinien być nudny i publiczny.

Dobre kandydatury:

  • Kontakt do witryny i URL polityki.
  • Wskaźniki do robots.txt, sitemap, llms.txt i RSS.
  • Deklaracja preferowanego użycia publicznej treści.
  • Ostrzeżenie, że trasy prywatne albo wymagające uwierzytelnienia wymagają autoryzacji.
  • Adres wsparcia dla problemów z crawlowaniem.

Złe kandydatury:

  • Tajne ścieżki.
  • Wewnętrzne reguły instrukcji.
  • Niepubliczne trasy API.
  • Nazwy klientów.
  • Wyjątki bezpieczeństwa.
  • Instrukcje, które zaszkodziłyby witrynie, gdyby skopiował je wrogi klient.

Właściwy standard dla agents.txt nie brzmi: „Czy dobry agent to doceni?”. Właściwy standard brzmi: „Czy byłoby w porządku, gdyby zły agent, wynik wyszukiwania i losowy użytkownik wszyscy przeczytali ten plik?”.

Lepszy model myślowy

Pliki dla crawlerów są znakami przy publicznej drodze.

Znak może mówić „wjazd dla dostaw”, „nie wjeżdżać” albo „zacznij tutaj”. Uważni kierowcy stosują się do znaku. Lekkomyślni go ignorują. Znak nadal pomaga, bo większość legalnego ruchu chce jasnych instrukcji. Znak zawodzi wtedy, gdy traktuje się go jak zamknięte drzwi.

Crawlery AI sprawiają, że znaki są jednocześnie ważniejsze i mniej wystarczające. Ważniejsze, bo systemy AI potrzebują jasnego publicznego kontekstu, polityki specyficznej dla celu i map tras. Mniej wystarczające, bo user agenty się mnożą, trening i wyszukiwanie rozdzielają, a źli klienci mogą podszywać się pod dobrych.

Odpowiedzią nie jest rezygnacja z plików dla crawlerów. Odpowiedzią jest obniżenie ich autorytetu do właściwego poziomu. Publikować jasną publiczną politykę. Weryfikować, kto pobiera pliki. Obserwować, co pobiera. Egzekwować prywatne granice na serwerze. Każde twierdzenie o „widoczności AI” traktować jako nieudowodnione, dopóki nie wspierają go logi i działające trasy.

Na tym polega różnica między teatrem AIO a rzeczywistą obsługą crawlerów.


FAQ

Czym jest agents.txt?

agents.txt to wyłaniający się plik tekstowy dla agentów, który niektóre hosty lub narzędzia mogą serwować w katalogu głównym witryny. DreamHost dokumentuje domyślne pliki agents.txt dla planów Web Hosting, ale ta dokumentacja nie czyni z pliku standardu kontroli dostępu. Należy traktować go jako publiczną wskazówkę, dopóki konkretna platforma agentowa nie udokumentuje dokładnie, jak czyta i stosuje ten plik.1

Czy robots.txt blokuje crawlery AI?

Zgodne crawlery mogą respektować robots.txt, a główni operatorzy dokumentują konkretne tokeny dla swoich crawlerów. OpenAI dokumentuje kontrolę OAI-SearchBot i GPTBot, natomiast Google dokumentuje Google-Extended jako token produktowy dla preferencji dotyczących treningu i groundingu.45 robots.txt nadal jednak nie uwierzytelnia klienta, nie ukrywa treści ani nie zatrzymuje bota, który zdecyduje się zignorować plik.23

Czy warto publikować llms.txt?

Warto publikować llms.txt, jeśli asystenci AI mają znaleźć wyselekcjonowaną mapę publicznej treści witryny. Propozycja przedstawia llms.txt jako kontekst czasu wnioskowania, a nie zamiennik sitemap ani robots.txt.6 Użyteczny plik wskazuje strony, które faktycznie mają być zrozumiane przez agentów.

Czy niedozwolony URL nadal może pojawić się w wyszukiwarce?

Tak. Google mówi, że URL zablokowany przez robots.txt nadal może się pojawić, jeśli linkują do niego inne strony, mimo że Google nie będzie crawlować ani indeksować treści zablokowanej strony.3 Dla stron, które muszą pozostać poza publicznymi wynikami, należy używać uwierzytelniania, noindex tam, gdzie dostęp crawlerów jest dozwolony, oraz polityki po stronie serwera.

Jak odróżnić prawdziwego crawlera od fałszywego?

Trzeba używać czegoś więcej niż ciągu user-agent. Google dokumentuje sprawdzenia reverse DNS plus forward DNS oraz dopasowanie do opublikowanych zakresów IP.7 OpenAI publikuje pliki JSON adresów IP dla udokumentowanych botów.4 Tam, gdzie operator crawlera nie publikuje danych weryfikacyjnych, należy klasyfikować żądanie jako deklarację i ograniczać jego tempo albo poddawać je wyzwaniu zgodnie z zachowaniem.

Jaka konfiguracja plików dla crawlerów jest najbezpieczniejsza dla publicznej witryny?

Używać robots.txt dla polityki crawlerów, sitemap dla odkrywania URL-i, llms.txt dla wyselekcjonowanego kontekstu AI oraz agents.txt wyłącznie dla publicznych wskazówek dla agentów. Wrażliwe ścieżki trzymać poza wszystkimi publicznymi plikami. Następnie zweryfikować działające trasy, stan cache, pobrania przez crawlery i logi serwera, zanim uzna się, że konfiguracja działa.

Źródła


  1. DreamHost, “Control bots, spiders, and crawlers,” DreamHost Knowledge Base. Dostęp: 18 maja 2026. 

  2. Koster, M., Illyes, G., Zeller, H., and Sassman, L., “RFC 9309: Robots Exclusion Protocol,” IETF, wrzesień 2022. 

  3. Google Search Central, “Introduction to robots.txt,” Google for Developers. 

  4. OpenAI, “Overview of OpenAI Crawlers,” OpenAI API Documentation. 

  5. Google Crawling Infrastructure, “Google’s common crawlers,” Google for Developers. 

  6. Jeremy Howard, “The /llms.txt file,” propozycja llms-txt, 3 września 2024. 

  7. Google Crawling Infrastructure, “Verify requests from Google crawlers and fetchers,” Google for Developers, ostatnia aktualizacja: 20 marca 2026. 

Powiązane artykuły

Fork bomb nas uratował

Atakujący LiteLLM popełnił jeden błąd implementacyjny. Ten błąd był jedynym powodem, dla którego 47 000 instalacji zosta…

5 min czytania

Kod open source nie jest granicą bezpieczeństwa

Wytyczne GDS dotyczące wykrywania podatności przez AI trafnie ujmują bezpieczeństwo kodu open source: domyślnie mniej uk…

10 min czytania

Pętla Ralph: jak uruchamiam autonomiczne agenty AI na noc

Zbudowałem system autonomicznych agentów z hookami zatrzymania, budżetami spawnowania i pamięcią opartą na systemie plik…

6 min czytania