User-Agent

war ein user agent ist — the HTTP header crawlers und browsers verwenden zu identifizieren themselves, the robots.txt token vs. the full string, und wie zu überprüfen ein bot ist real.

Erstveröffentlicht: 24. Juni 2026 · Zuletzt aktualisiert: 3. Aug. 2026 · Fortgeschritten
Sprachen
2 Evidenzsignale auf dieser Seite

ein user agent ist the HTTP header every client — browser, crawler, oder bot — sends zu identifizieren itself. Two things erhalten confused: the full user-agent *string* in the Anfrage header, und the short user-agent *token* (Googlebot, bingbot, Google-Extended) Sie target in robots.txt. The token ist ein substring von the string (RFC 9309); einige tokens, like Google-Extended, haben kein Anfrage string bei alle. The string ist trivially spoofed — Google says its own ist 'häufig spoofed' — so never trust es für access Steuerung. überprüfen Googlebot/Bingbot durch reverse DNS plus ein forward lookup, oder against published IP ranges. und watch the gotchas: AdsBot und Google-Safety ignore `User-agent: *`, version numbers und wildcards in the token line sind ignored, matching ist case-insensitive, und serving different Inhalt zu ein bot UA than zu users ist cloaking.

TL;DR — ein user agent ist the HTTP Anfrage header any client sends zu identifizieren itself; es ist optional, client-filled metadata, nicht authenticated identity. Its Wert ist the user-agent string. Separate aus that ist the user-agent token (Produkt token) verwendet in robots.txt — RFC 9309 says es sollte sein ein substring von the string, ein strong convention mit dokumentiert exceptions (Google-Extended hat kein Anfrage string bei alle). Matching ist case-insensitive, version numbers/wildcards in the token line sind ignored, the meisten-specific group wins, und gleich-token groups merge aber never merge mit *. The string ist trivially spoofed — Google calls its own “häufig spoofed” — so überprüfen durch reverse + forward DNS (behind any proxy/CDN, verwenden the real client IP) against googlebot.com/google.com/googleusercontent.com für Google oder search.msn.com für Bing, oder match published IP ranges — und even ein verified Anfrage nur proves ein Anfrage arrived, nicht that the Seite war indexed, retrieved, oder verwendet für AI training. AdsBot und Google-Safety ignore User-agent: *. Chrome ist auch freezing detail out von browser UA strings (User-Agent reduction); Client Hints sind the structured aber opt-in replacement, und neither substitutes für crawler verification. User-agent adaptation kann sein legitimate, aber deceptively showing crawlers materially different Inhalt kann sein cloaking.

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

The header, the string, und the token

Three things, und keeping them straight ist meisten von dies topic.

  • The header. User-Agent ist ein HTTP Anfrage header. Every client sends es: Ihre browser, curl, ein crawler, ein bot. Per RFC 9110 (the core HTTP semantics standard), es ist ein optional field the client fills in — client-supplied descriptive metadata, nicht ein authenticated identity the server hat verified.
  • The string. The header’s Wert — ein freeform line describing the software, version, rendering Engine, und sometimes the OS.
  • The token. The short identifier verwendet in robots.txt User-agent: lines zu target ein crawler — Googlebot, bingbot, Google-Extended.

The relationship ist the part that trips Menschen up. RFC 9309 (the formal Robots Exclusion Protocol standard) says the token “sollte sein ein substring von the identification string that the crawler sends… in the case von HTTP, the Produkt token sollte sein ein substring in the User-Agent header.” das ist ein SHOULD, nicht ein MUST — ein strong convention the standard recommends, nicht ein hard requirement every crawler ist mechanically bound zu. Google-Extended (below) ist the clearest Beispiel von ein dokumentiert exception zu es. Don’t lesen the substring rule als universal just weil Google follows es für meisten von its own tokens. The token ist part von the string wenn ein provider tut supply one; Sie target the token in robots.txt und lesen the string in Ihre logs.

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

Google’s own framing von wie its bots identifizieren themselves ist nützlich hier: “Google’s crawlers identifizieren themselves durch three things: the HTTP user-agent Anfrage header, the Quelle IP address von the Anfrage, und the reverse DNS hostname von the Quelle IP.” Note that the user-agent ist nur one von the three — the other two sind wie Sie tatsächlich überprüfen es.

Google-Extended: ein token mit kein string

The cleanest illustration von token ≠ string ist Google-Extended. es controls whether Google kann verwenden Ihre Inhalt für Gemini training und grounding — und es hat kein dedicated HTTP Anfrage user-agent string bei alle. The crawling itself ist done mit existing Googlebot strings; Google-Extended exists nur als ein robots.txt Steuerung token. Sie’ll never sehen “Google-Extended” in ein Anfrage header in Ihre logs.

The practical consequence: blocking Google-Extended affects nur AI-training verwenden von Ihre Inhalt — es tut nicht stop Googlebot aus crawling und indexing Sie für Suche. sie sind separate decisions controlled durch separate tokens. (für the broader picture von the bots reading Ihre Website, sehen AI crawlers und crawler.)

User-Agent-Strings von Googlebot

Googlebot ist “evergreen” — es läuft auf ein recent version von Chrome, und the Chrome version in its string Aktualisierungen periodically (es hat since December 2019). das ist warum the version erscheint als ein W.X.Y.Z placeholder:

Googlebot Smartphone (mobil):

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

Two things zu internalize. erste, don’t hardcode the versionW.X.Y.Z Änderungen, und matching auf es will break. Match the stable token Googlebot stattdessen. Second, Sie kann nicht separate mobile aus desktop in robots.txt. Both variants teilen the one Googlebot token, so ein robots.txt rule applies zu both.

Crawler-Tokens von Google

Google läuft ein whole family von crawlers und fetchers, jede mit its own token. The ones Sie’ll meet meisten:

Crawlerrobots.txt tokenNotes
GooglebotGooglebotSuche, Images, Video, News, Discover — mobile + desktop teilen dies token
Googlebot ImageGooglebot-ImageGoogle Images
Googlebot VideoGooglebot-VideoVideo Suche
Googlebot NewsGooglebot-NewsUses various Googlebot strings
Google StoreBotStorebot-GoogleShopping
Google-InspectionToolGoogle-InspectionToolPowers Suche testing Tools
GoogleOtherGoogleOtherintern research/fetching
Google-ExtendedGoogle-Extendedrobots.txt-nur — Gemini training, kein Anfrage string

und the ones that break the usual rules — the special-case crawlers that ignore User-agent: *:

  • AdsBot (AdsBot-Google) und AdsBot Mobile (AdsBot-Google-Mobile) — they don’t obey the wildcard. zu block them Sie must name them explicitly.
  • AdSense (Mediapartners-Google) — gleich; ignores the global *.
  • Google-Safety — verwendet für malware/abuse detection; es ignores robots.txt entirely.

The implication ist the one Menschen miss: User-agent: * tut nicht block AdsBot oder Google-Safety. wenn Sie “block alle bots” mit ein wildcard und assume AdsBot ist gone, es ist nicht. (dies ist exactly the kind von surprise that lands ein Seite in indexed though blocked by robots.txt territory — sehen robots.txt für the full Steuerung story.)

User-Agent-Strings von Bingbot

Bing rebuilt Bingbot’s string in 2022 zu reflect that es renders mit Microsoft Edge. The current strings:

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)

The robots.txt token ist just bingbot. The thing zu watch: post-2022, Bingbot’s string looks almost exactly like ein real Chrome/Edge browser — the nur mitteilen ist the bingbot/2.0 fragment inside es. wenn Sie haben any logic that filters oder detects bots durch UA, that ändern matters.

wie robots.txt tatsächlich matches ein token

ein few rules govern welche group von rules ein crawler obeys (per Google’s robots.txt spec und RFC 9309):

  • meisten-specific match wins. Google “determines the correct group von rules durch finding… the group mit the meisten specific user agent that matches the crawler’s user agent.” ein Googlebot group beats ein * group für Googlebot.
  • gleich-token groups merge — aber never mit *. Multiple groups naming the gleich agent sind combined into one. ein specific-agent group und the * group sind nicht merged; * ist nur the fallback wenn nothing specific matches.
  • Case-insensitive. Field name und Wert both — Googlebot, googlebot, GOOGLEBOT sind equivalent.
  • Version numbers und wildcards in the token line sind ignored. Per Google, “both googlebot/1.2 und googlebot* sind equivalent zu googlebot.” Sie kann nicht schreiben User-agent: Googlebot* zu match ein family — the * dort tut nothing.

So ein User-agent: line takes ein token und matches es als ein plain (case-insensitive) substring von the crawler’s identity — kein version pinning, kein wildcards inside es.

warum Sie kann nicht trust the string — und wie zu überprüfen

The user-agent string ist freeform text. Anything kann festlegen es. One line von curl will claim zu sein Googlebot, und plenty von Tools und malicious bots tun exactly that zu slip past blocks. Google says so in its own Googlebot docs: “the HTTP user-agent Anfrage header verwendet durch Googlebot ist häufig spoofed durch other crawlers.” als I’ve put es in my Googlebot guide, “viele SEO Tools und einige malicious bots will pretend zu sein Googlebot. dies may erlauben them zu access Websites that try zu block them.”

So never machen ein access oder Inhalt decision auf the string alone. überprüfen stattdessen.

One prerequisite vor either Methode: erhalten the real Quelle IP. wenn Ihre Website sits behind ein reverse proxy, load balancer, oder CDN, the address in Ihre Standard access log may sein the proxy’s IP, nicht the crawler’s — Sie benötigen the original client IP (usually forwarded in ein header like X-Forwarded-For, configured correctly bei Ihre proxy) oder neither verification Methode below bedeutet anything.

Methode 1 — reverse + forward DNS (beste für spot prüft). Google’s two steps:

  1. “ausführen ein reverse DNS lookup auf the accessing IP address aus Ihre logs, Verwendung the host command. überprüfen that the domain name ist either googlebot.com, google.com, oder googleusercontent.com.”
  2. “ausführen ein forward DNS lookup auf the domain name retrieved in step 1… überprüfen that es ist the gleich als the original accessing IP address aus Ihre logs.”

für Bingbot, the gleich two-step dance, aber the hostname must end in search.msn.com (nicht ein Bing-branded domain — ein common surprise). Commands sind in the Scripts tab.

Methode 2 — published IP ranges (beste im großen Maßstab). Google tut nicht veröffentlichen ein static allowlist für hardcoding (“these IP address ranges kann ändern”), aber es tut veröffentlichen machine-readable CIDR JSON files Sie kann match against (common-crawlers.json und the broader crawler files). Bing now publishes its ranges too. I erstellt ein Googlebot IP verification tool für exactly dies — paste in IPs und es classifies them. Bing Webmaster Tools hat ein erstellt-in “überprüfen Bingbot” Tool als well.

DNS ist better für ein one-off log prüfen; IP-range matching ist better für verifying bei volume. verwenden whichever fits — aber verwenden one von them. und treat both the expected hostnames und the range files als current als von today, nicht permanent — Google und Bing haben changed these paths vor (the IP-range JSON files moved und waren renamed since dies article war erste written), so re-prüfen the live verification doc wenn ein lookup that verwendet zu arbeiten stops matching.

ein UA match ist nicht proof von downstream outcomes

Even ein fully verified Anfrage — real Googlebot IP, forward-confirmed reverse DNS, everything prüft out — nur proves one thing: that Anfrage reached Ihre server. es ist tempting zu round that up into ein much bigger claim, aber jede von these ist ein separate fact requiring separate Belege:

  • Anfrage received — ein Anfrage mit that user agent hit Ihre server. (war log verification tatsächlich proves.)
  • Identity confirmed — the Anfrage really came aus the crawler es claims zu sein. (war reverse DNS / IP-range matching adds auf top.)
  • Inhalt fetched und rendered — the crawler successfully rendered the Seite (kein errors, kein blocked resources). nicht guaranteed just weil ein Anfrage landed.
  • Indexed — the URL made es into the Suche index. ein successful fetch tut nicht guarantee indexing.
  • verwendet für retrieval, citation, oder training — für AI crawlers especially (Google-Extended, GPTBot, und the rest), ein crawlen ist nicht proof Ihre Inhalt war retrieved für ein specific Antwort, cited, oder verwendet in model training. diese sind separate, mostly unobservable steps downstream von the crawlen.

ein verified Googlebot hit in Ihre logs ist real signal — just don’t stretch es further than war es tatsächlich zeigt.

Web Bot Auth: wo verification ist heading

in 2026 Google began experimenting mit Web Bot Auth“ein experimental cryptographic protocol verwendet zu authenticate Anfragen sent durch bots.” The idea ist zu “move beyond easily spoofed headers zu ein verified identity und decouple agent identity aus IP addresses.” Bots cryptographically sign their Anfragen; Websites überprüfen the signature against Google’s published public keys, und signed Anfragen carry ein Signature-Agent header. Google’s own caveat matters: “wir don’t sign every Anfrage von ein particular agent. sein sure that Sie fall back zu the established methods von bot verification.” So es ist additive, nicht ein replacement — reverse DNS und IP ranges bleiben Ihre baseline today.

Browsers sind getting harder zu parse aus the UA string too

Everything above ist über crawlers, aber the gleich “don’t over-trust the string” lesson applies zu browsers, und es ist getting stronger. Chrome hat been rolling out User-Agent reduction: freezing oder coarsening parts von its UA string (full browser version, OS version, device model) statt reporting them exactly, so the string kann nicht sein verwendet zu fingerprint ein specific user. Google’s own framing: “The granularity und abundance von detail kann lead zu user identification. The Standard availability von dies Informationen kann lead zu covert tracking.” Practically, that bedeutet UA-string parsing für exact browser/OS/device version — analytics, device detection, bug triage — ist increasingly unreliable und will nur erhalten mehr so.

The replacement Chrome recommends ist User-Agent Client Hints (UA-CH): structured Daten the browser sends nur wenn ein server explicitly asks für es. Low-entropy hints (browser brand, major version, mobile flag) go out standardmäßig; high-entropy hints (exact version, Plattform version, device model) require the server zu opt in via ein Accept-CH response header erste — ein explicit negotiation, nicht ein broadcast. Two caveats vor Sie lean auf es: es ist ein Chrome/Chromium-family mechanism, nicht something every browser sends, und even wo es ist supported, “the Wert may sein blank, nicht returned, oder populated mit ein varying Wert.” Client Hints solve the browser-string problem; they sind nicht ein crawler-verification mechanism — Google und Bing still überprüfen their own crawlers via DNS und IP ranges, nicht Client Hints.

User-agent targeting und cloaking

The tempting move — “detect Googlebot durch its UA und serve es something special” — ist both technically fragile und ein policy violation.

Fragile, weil Google tut nicht crawlen mit one UA. Sie’d haben zu correctly handle Googlebot (mobile und desktop), Google-InspectionTool, AdsBot, GoogleOther, und mehr, aus rotating IPs — practically impossible zu whitelist cleanly.

ein policy violation, weil serving different Inhalt zu ein crawler than zu users ist cloaking: “presenting different Inhalt zu users und Suchmaschinen mit the intent zu manipulate Suche Rankings und mislead users.” The penalty ranges aus algorithmic demotion zu full deindexing. Note the line: legitimate adaptation (responsive layouts, Inhalt negotiation) ist fine — es ist swapping the Inhalt itself zwischen bots und users that crosses into cloaking.

für wo the user agent sits in the bigger pipeline, sehen crawling (the hub) und crawler. für controlling war diese bots sind allowed zu fetch, sehen robots.txt.

Add an expert note

Pin an expert quote

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