Agent użytkownika

Czym jest user agent — nagłówek HTTP, za pomocą którego roboty indeksujące i przeglądarki identyfikują siebie, token w robots.txt a pełny ciąg znaków oraz jak zweryfikować, czy bot jest prawdziwy.

Opublikowano po raz pierwszy: 24 cze 2026 · Ostatnia aktualizacja: 3 sie 2026 · Advanced
Języki
2 sygnałów dowodowych na tej stronie

User agent to nagłówek HTTP, który każdy klient — przeglądarka, robot indeksujący lub bot — wysyła, aby się zidentyfikować. Dwie rzeczy są mylone: pełny *ciąg* user agenta w nagłówku żądania oraz krótki *token* user agenta (Googlebot, bingbot, Google-Extended), który celujesz w robots.txt. Token jest podciągiem ciągu (RFC 9309); niektóre tokeny, jak Google-Extended, nie mają w ogóle ciągu żądania. Ciąg jest trywialnie podrabiany — Google mówi, że jego własny jest 'często podrabiany' — więc nigdy nie ufaj mu przy kontroli dostępu. Zweryfikuj Googlebota/Bingbota przez odwrotny DNS plus sprawdzenie w przód lub przez opublikowane zakresy IP. I uważaj na pułapki: AdsBot i Google-Safety ignorują `User-agent: *`, numery wersji i symbole wieloznaczne w linii tokena są ignorowane, dopasowanie nie rozróżnia wielkości liter, a serwowanie różnych treści botowi UA niż użytkownikom to cloaking.

TL;DR — User agent to nagłówek żądania HTTP, który każdy klient wysyła, aby się zidentyfikować; to opcjonalne, wypełniane przez klienta metadane, a nie uwierzytelniona tożsamość. Jego wartość to ciąg user-agenta. Osobno od tego istnieje token user-agenta (token produktu) używany w robots.txt — RFC 9309 mówi, że POWINIEN być podciągiem ciągu, co jest silną konwencją z udokumentowanymi wyjątkami (Google-Extended nie ma żadnego ciągu żądania). Dopasowywanie nie uwzględnia wielkości liter, numery wersji/wildcardy w linii tokena są ignorowane, najbardziej specyficzna grupa wygrywa, a grupy z tym samym tokenem łączą się, ale nigdy nie łączą się z *. Ciąg można trywialnie sfałszować — Google nazywa swój własny “często sfałszowany” — więc weryfikuj przez odwrotny i bezpośredni DNS (za jakimkolwiek proxy/CDN, użyj prawdziwego IP klienta) względem googlebot.com/google.com/googleusercontent.com dla Google lub search.msn.com dla Binga, albo dopasuj opublikowane zakresy IP — a nawet zweryfikowane żądanie tylko dowodzi, że żądanie dotarło, a nie że strona została zaindeksowana, pobrana lub użyta do trenowania AI. AdsBot i Google-Safety ignorują User-agent: *. Chrome również zamraża szczegóły w ciągach UA przeglądarek (redukcja User-Agent); Client Hints to strukturalny, ale opcjonalny zamiennik, a żaden z nich nie zastępuje weryfikacji crawlera. Adaptacja user-agenta może być uzasadniona, ale zwodnicze pokazywanie crawlerom znacząco innych treści może być cloakingiem.

Evidence for this claim HTTP User-Agent is a request field containing product information supplied by the client; it is descriptive text and not proof of identity. Scope: HTTP semantics for User-Agent. Confidence: high · Verified: IETF RFC 9110: User-Agent Evidence for this claim robots.txt User-agent matching is defined by the Robots Exclusion Protocol and controls crawler access, not authentication or general HTTP content negotiation. Scope: RFC 9309 robots matching behavior. Confidence: high · Verified: IETF RFC 9309: Robots Exclusion Protocol

Nagłówek, ciąg i token

Trzy rzeczy, a ich rozróżnienie to większość tego tematu.

  • Nagłówek. User-Agent to nagłówek żądania HTTP. Wysyła go każdy klient: twoja przeglądarka, curl, crawler, bot. Zgodnie z RFC 9110 (podstawowy standard semantyki HTTP) to opcjonalne pole wypełniane przez klienta — dostarczane przez klienta metadane opisowe, a nie uwierzytelniona tożsamość zweryfikowana przez serwer.
  • Ciąg. Wartość nagłówka — swobodna linia opisująca oprogramowanie, wersję, silnik renderujący, a czasem system operacyjny.
  • Token. Krótki identyfikator używany w liniach User-agent: w robots.txt do kierowania do crawlera — Googlebot, bingbot, Google-Extended.

Relacja to część, która sprawia ludziom problemy. RFC 9309 (formalny standard Robots Exclusion Protocol) mówi, że token “SHOULD be a substring of the identification string that the crawler sends… in the case of HTTP, the product token SHOULD be a substring in the User-Agent header.” (tłumaczenie) „POWINIEN być podciągiem ciągu identyfikacyjnego, który wysyła crawler… w przypadku HTTP token produktu POWINIEN być podciągiem w nagłówku User-Agent.” To SHOULD, a nie MUST — silna konwencja zalecana przez standard, a nie twardy wymóg, do którego każdy crawler jest mechanicznie zobowiązany. Google-Extended (poniżej) to najczystszy przykład udokumentowanego wyjątku od tego. Nie czytaj reguły podciągu jako uniwersalnej tylko dlatego, że Google stosuje ją do większości swoich własnych tokenów. Token jest częścią ciągu, gdy dostawca taki dostarcza; kierujesz do tokena w robots.txt i czytasz ciąg w swoich logach.

Evidence for this claim A robots.txt user-agent line selects a crawler product token, not an arbitrary full HTTP User-Agent string; RFC 9309 says the token should be a substring of the identification string, but this SHOULD-level convention has documented product-specific exceptions and is not authentication. Scope: robots.txt parsing and matching Confidence: high · Verified: Robots Exclusion Protocol

Własne ujęcie Google dotyczące tego, jak identyfikują się jego boty, jest tutaj przydatne: “Google’s crawlers identify themselves through three things: the HTTP user-agent request header, the source IP address of the request, and the reverse DNS hostname of the source IP.” (tłumaczenie) „Crawlery Google identyfikują się przez trzy rzeczy: nagłówek żądania HTTP user-agent, źródłowy adres IP żądania oraz odwrotną nazwę DNS źródłowego IP.” Zauważ, że user-agent to tylko jedna z trzech — pozostałe dwie to jak faktycznie go weryfikujesz.

Google-Extended: token bez ciągu

Najczystszą ilustracją token ≠ ciąg jest Google-Extended. Kontroluje on, czy Google może używać twoich treści do trenowania Gemini i uziemiania — i nie ma żadnego dedykowanego ciągu user-agenta w żądaniu HTTP. Samo indeksowanie odbywa się z istniejącymi ciągami Googlebot; Google-Extended istnieje tylko jako token kontrolny robots.txt. Nigdy nie zobaczysz „Google-Extended” w nagłówku żądania w swoich logach.

Praktyczna konsekwencja: zablokowanie Google-Extended wpływa tylko na wykorzystanie Twoich treści do szkolenia AI — nie powstrzymuje Googlebota przed indeksowaniem i skanowaniem Twojej witryny pod kątem wyszukiwarki. To osobne decyzje kontrolowane przez osobne tokeny. (Szerszy obraz botów czytających Twoją witrynę znajdziesz w artykułach o botach AI i o botach indeksujących.)

Ciągi znaków user-agenta Googlebota

Googlebot jest „evergreen” — działa na najnowszej wersji Chrome, a wersja Chrome w jego ciągu znaków jest aktualizowana okresowo (od grudnia 2019). Dlatego wersja pojawia się jako symbol zastępczy W.X.Y.Z:

Googlebot Smartphone (mobile):

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Googlebot Desktop:

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z Safari/537.36

Dwie rzeczy do zapamiętania. Po pierwsze, nie koduj na sztywno wersjiW.X.Y.Z się zmienia, a dopasowanie do niej się zepsuje. Zamiast tego dopasowuj stabilny token Googlebot. Po drugie, nie możesz rozdzielić mobile od desktop w robots.txt. Obie wersje dzielą jeden token Googlebot, więc reguła w robots.txt dotyczy obu.

Tokeny robotów Google

Google prowadzi całą rodzinę robotów i pobieraczy, każdy z własnym tokenem. Te, które spotkasz najczęściej:

RobotToken robots.txtUwagi
GooglebotGooglebotWyszukiwarka, Grafika, Wideo, Wiadomości, Discover — mobile + desktop dzielą ten token
Googlebot ImageGooglebot-ImageGrafika Google
Googlebot VideoGooglebot-VideoWyszukiwarka wideo
Googlebot NewsGooglebot-NewsUżywa różnych ciągów Googlebota
Google StoreBotStorebot-GoogleZakupy
Google-InspectionToolGoogle-InspectionToolZasila narzędzia testowania wyszukiwarki
GoogleOtherGoogleOtherWewnętrzne badania/pobieranie
Google-ExtendedGoogle-Extendedtylko robots.txt — szkolenie Gemini, brak ciągu żądania

Oraz te, które łamią zwykłe zasady — specjalne roboty, które ignorują User-agent: *:

  • AdsBot (AdsBot-Google) i AdsBot Mobile (AdsBot-Google-Mobile) — nie przestrzegają symbolu wieloznacznego. Aby je zablokować, musisz je wymienić jawnie.
  • AdSense (Mediapartners-Google) — to samo; ignoruje globalny *.
  • Google-Safety — używany do wykrywania złośliwego oprogramowania/nadużyć; całkowicie ignoruje robots.txt.

Implikacja, którą ludzie przeoczają: User-agent: * nie blokuje AdsBota ani Google-Safety. Jeśli „zablokujesz wszystkie boty” symbolem wieloznacznym i założysz, że AdsBot zniknął, to tak nie jest. (To dokładnie ten rodzaj niespodzianki, który prowadzi do sytuacji, gdy strona jest zaindeksowana, ale zablokowana przez robots.txt — zobacz robots.txt, aby poznać pełną historię kontroli.)

Ciągi znaków user-agenta Bingbota

Bing przebudował ciąg Bingbota w 2022, aby odzwierciedlić, że renderuje on w Microsoft Edge. Obecne ciągi:

Bingbot Desktop:

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/W.X.Y.Z Safari/537.36

Bingbot Mobile:

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

Token robots.txt to po prostu bingbot. Na co uważać: po 2022 ciąg Bingbota wygląda prawie jak prawdziwa przeglądarka Chrome/Edge — jedyną wskazówką jest fragment bingbot/2.0 w środku. Jeśli masz jakąkolwiek logikę, która filtruje lub wykrywa boty po UA, ta zmiana ma znaczenie.

Jak robots.txt faktycznie dopasowuje token

Kilka zasad określa, której grupy reguł przestrzega robot (zgodnie ze specyfikacją robots.txt Google i RFC 9309):

  • Najbardziej szczegółowe dopasowanie wygrywa. Google „określa właściwą grupę reguł, znajdując… grupę z najbardziej szczegółowym user-agentem, który pasuje do user-agenta robota.” Grupa Googlebot wygrywa z grupą * dla Googlebota.
  • Grupy z tym samym tokenem łączą się — ale nigdy z *. Wiele grup wymieniających tego samego agenta jest łączonych w jedną. Grupa dla konkretnego agenta i grupa * nie są łączone; * jest tylko fallbackiem, gdy nic konkretnego nie pasuje.
  • Niewrażliwe na wielkość liter. Zarówno nazwa pola, jak i wartość — Googlebot, googlebot, GOOGLEBOT są równoważne.
  • Numery wersji i symbole wieloznaczne w linii tokena są ignorowane. Według Google, „zarówno googlebot/1.2, jak i googlebot* są równoważne z googlebot.” Nie możesz napisać User-agent: Googlebot*, aby dopasować rodzinę — * tam nic nie robi.

Zatem linia User-agent: przyjmuje token i dopasowuje go jako zwykły (niezależny od wielkości liter) podciąg tożsamości crawlera — bez przypinania wersji, bez wildcardów w środku.

Dlaczego nie możesz ufać temu stringowi — i jak to zweryfikować

String user-agenta to dowolny tekst. Cokolwiek może go ustawić. Jedna linia curl może udawać Googlebota, a wiele narzędzi i złośliwych botów robi dokładnie to, aby ominąć blokady. Google mówi o tym w swojej dokumentacji Googlebota: “the HTTP user-agent request header used by Googlebot is often spoofed by other crawlers.” (tłumaczenie) „nagłówek żądania HTTP user-agent używany przez Googlebota jest często podszywany przez inne crawlerów.” Jak ująłem to w moim przewodniku po Googlebocie, “Many SEO tools and some malicious bots will pretend to be Googlebot. This may allow them to access websites that try to block them.” (tłumaczenie) „Wiele narzędzi SEO i niektóre złośliwe boty udają Googlebota. Może im to pozwolić na dostęp do stron, które próbują je zablokować.”

Więc nigdy nie podejmuj decyzji o dostępie ani treści na podstawie samego stringa. Zamiast tego zweryfikuj.

Jeden warunek wstępny przed obiema metodami: zdobądź prawdziwy adres IP źródła. Jeśli Twoja strona jest za odwrotnym proxy, load balancerem lub CDN, adres w domyślnym logu dostępu może być adresem proxy, a nie crawlera — potrzebujesz oryginalnego adresu IP klienta (zwykle przekazywanego w nagłówku takim jak X-Forwarded-For, poprawnie skonfigurowanym na Twoim proxy), w przeciwnym razie żadna z poniższych metod weryfikacji nie ma sensu.

Metoda 1 — odwrotny + zgodny DNS (najlepsza do pojedynczych sprawdzeń). Dwa kroki Google:

  1. “Run a reverse DNS lookup on the accessing IP address from your logs, using the host command. Verify that the domain name is either googlebot.com, google.com, or googleusercontent.com.” (tłumaczenie) „Wykonaj odwrotne wyszukiwanie DNS dla adresu IP z logów, używając polecenia host. Sprawdź, czy nazwa domeny to googlebot.com, google.com lub googleusercontent.com.”
  2. “Run a forward DNS lookup on the domain name retrieved in step 1… Verify that it’s the same as the original accessing IP address from your logs.” (tłumaczenie) „Wykonaj zgodne wyszukiwanie DNS dla nazwy domeny uzyskanej w kroku 1… Sprawdź, czy jest taka sama jak oryginalny adres IP z logów.”

Dla Bingbota ten sam dwukrokowy taniec, ale hostname musi kończyć się na search.msn.com (nie domena z marką Bing — częsta niespodzianka). Polecenia są w zakładce Skrypty.

Metoda 2 — opublikowane zakresy IP (najlepsza na dużą skalę). Google nie publikuje statycznej listy dozwolonych adresów do hardkodowania (“these IP address ranges can change” (tłumaczenie) „te zakresy adresów IP mogą się zmieniać”), ale publikuje maszynowo czytelne pliki CIDR JSON, które możesz dopasowywać (common-crawlers.json i szersze pliki crawlerów). Bing również publikuje swoje zakresy. Zbudowałem narzędzie do weryfikacji IP Googlebota właśnie do tego — wklejasz adresy IP, a ono je klasyfikuje. Bing Webmaster Tools ma też wbudowane narzędzie „Verify Bingbot”.

DNS jest lepszy do jednorazowego sprawdzenia logu; dopasowanie zakresów IP jest lepsze do weryfikacji na dużą skalę. Użyj tego, co pasuje — ale użyj jednego z nich. I traktuj zarówno oczekiwane hostname, jak i pliki zakresów jako aktualne na dziś, nie stałe — Google i Bing zmieniały te ścieżki wcześniej (pliki JSON z zakresami IP zostały przeniesione i przemianowane od czasu pierwszej publikacji tego artykułu), więc sprawdź ponownie aktualny dokument weryfikacji, jeśli wyszukiwanie, które działało, przestaje pasować.

Dopasowanie UA nie jest dowodem na dalsze wyniki

Nawet w pełni zweryfikowane żądanie — prawdziwy adres IP Googlebota, potwierdzony zgodnym DNS, wszystko się zgadza — dowodzi tylko jednego: to żądanie dotarło do Twojego serwera. Kusi, aby zaokrąglić to do znacznie większego twierdzenia, ale każde z poniższych to osobny fakt wymagający osobnych dowodów:

  • Żądanie odebrane — żądanie z tym agentem użytkownika trafiło na Twój serwer. (To faktycznie dowodzi weryfikacja logów.)
  • Tożsamość potwierdzona — żądanie naprawdę pochodzi od robota, za którego się podaje. (To dodaje dopasowanie odwrotnego DNS / zakresów IP.)
  • Treść pobrana i wyrenderowana — robot pomyślnie wyrenderował stronę (bez błędów, bez zablokowanych zasobów). Nie jest to gwarantowane tylko dlatego, że żądanie dotarło.
  • Zaindeksowane — URL trafił do indeksu wyszukiwarki. Udane pobranie nie gwarantuje indeksowania.
  • Użyte do wyszukiwania, cytowania lub trenowania — szczególnie w przypadku robotów AI (Google-Extended, GPTBot i inne), przeszukanie nie jest dowodem, że Twoje treści zostały pobrane dla konkretnej odpowiedzi, zacytowane lub użyte w trenowaniu modelu. To osobne, w większości nieobserwowalne kroki po przeszukaniu.

Zweryfikowane trafienie Googlebota w Twoich logach to realny sygnał — tylko nie rozciągaj go dalej, niż faktycznie pokazuje.

Web Bot Auth: dokąd zmierza weryfikacja

W 2026 roku Google zaczął eksperymentować z Web Bot Auth“eksperymentalnym protokołem kryptograficznym używanym do uwierzytelniania żądań wysyłanych przez boty.” Chodzi o to, aby “wyjść poza łatwe do sfałszowania nagłówki w kierunku zweryfikowanej tożsamości i oddzielić tożsamość agenta od adresów IP.” Boty podpisują kryptograficznie swoje żądania; witryny weryfikują podpis względem opublikowanych kluczy publicznych Google, a podpisane żądania niosą nagłówek Signature-Agent. Zastrzeżenie Google ma znaczenie: “Nie podpisujemy każdego żądania konkretnego agenta. Upewnij się, że korzystasz z ustalonych metod weryfikacji botów.” Więc to rozszerzenie, a nie zamiennik — odwrotny DNS i zakresy IP pozostają Twoim punktem wyjścia.

Przeglądarki też są coraz trudniejsze do sparsowania z ciągu UA

Wszystko powyżej dotyczy robotów, ale ta sama zasada “nie ufaj za bardzo ciągowi” dotyczy przeglądarek i jest coraz silniejsza. Chrome wdraża redukcję User-Agent: zamrażanie lub zgrubianie części ciągu UA (pełna wersja przeglądarki, wersja systemu operacyjnego, model urządzenia) zamiast raportowania ich dokładnie, aby ciąg nie mógł być użyty do identyfikacji konkretnego użytkownika. Ujęcie Google: “Stopień granularności i bogactwo szczegółów mogą prowadzić do identyfikacji użytkownika. Domyślna dostępność tych informacji może prowadzić do ukrytego śledzenia.” Praktycznie oznacza to, że parsowanie ciągu UA pod kątem dokładnej wersji przeglądarki/systemu/urządzenia — analityka, wykrywanie urządzeń, triage błędów — jest coraz mniej niezawodne i będzie tylko gorzej.

Zamiennikiem, który zaleca Chrome, są User-Agent Client Hints (UA-CH): dane strukturalne, które przeglądarka wysyła tylko wtedy, gdy serwer wyraźnie o nie poprosi. Wskazówki o niskiej entropii (marka przeglądarki, główna wersja, flaga mobilna) są wysyłane domyślnie; wskazówki o wysokiej entropii (dokładna wersja, wersja platformy, model urządzenia) wymagają, aby serwer wyraził zgodę za pomocą nagłówka odpowiedzi Accept-CH — to wyraźne negocjowanie, a nie rozgłaszanie. Dwa zastrzeżenia, zanim na tym polegniesz: to mechanizm rodziny Chrome/Chromium, nie coś, co wysyła każda przeglądarka, a nawet tam, gdzie jest obsługiwany, “wartość może być pusta, niezwrócona lub wypełniona zmienną wartością.” Client Hints rozwiązują problem ciągu przeglądarki; nie są mechanizmem weryfikacji robotów — Google i Bing nadal weryfikują swoje roboty przez DNS i zakresy IP, a nie przez Client Hints.

Targetowanie na User-Agent i cloaking

Kuszący ruch — “wykryj Googlebota po UA i serwuj mu coś specjalnego” — jest zarówno technicznie kruchy, jak i naruszeniem polityki.

Kruchy, bo Google nie indeksuje jednym UA. Musiałbyś poprawnie obsłużyć Googlebota (mobilnego i desktopowego), Google-InspectionTool, AdsBot, GoogleOther i inne, z rotujących adresów IP — praktycznie niemożliwe do czystego whitelistowania.

Naruszenie zasad, ponieważ serwowanie różnych treści robotowi indeksującemu i użytkownikom to cloaking: “przedstawianie różnych treści użytkownikom i wyszukiwarkom w celu manipulowania rankingami wyszukiwania i wprowadzania użytkowników w błąd.” Kara obejmuje od obniżenia pozycji algorytmicznej po całkowite usunięcie z indeksu. Zwróć uwagę na granicę: uzasadniona adaptacja (responsywne układy, negocjacja treści) jest w porządku — to zamiana samej treści między botami a użytkownikami przekracza granicę cloakingu.

Aby zobaczyć, gdzie w większym potoku znajduje się user agent, zobacz crawling (centrum) i crawler. Aby kontrolować, co te boty mogą pobierać, zobacz robots.txt.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.