Utilisateur Agent

Ce que a utilisateur agent est — le HTTP header robots d’exploration et navigateurs utiliser à identifier themselves, le robots.txt token vs. le complet string, et comment vérifier a bot est réel.

Première publication : 24 juin 2026 · Dernière mise à jour : 3 août 2026 · Avancé
2 indices probants sur cette page

A utilisateur agent est le HTTP header chaque client — navigateur, robot d’exploration, or bot — sends à identifier itself. Deux choses obtenir confused: le complet utilisateur-agent *string* dans la requête header, et le court utilisateur-agent *token* (Googlebot, bingbot, Google-Extended) vous cible dans robots.txt. Le token est a substring de le string (RFC 9309); some tokens, comme Google-Extended, ont aucun requête string à tout. Le string est trivially spoofed — Google dit son propre est 'souvent spoofed' — donc jamais confiance il pour accès contrôler. Vérifier Googlebot/Bingbot par reverse DNS plus a forward lookup, or contre publié IP ranges. Et watch le gotchas: AdsBot et Google-Safety ignore `User-agent: *`, version numbers et wildcards dans le token line sont ignored, matching est case-insensitive, et diffusion différent contenu à a bot UA que à utilisateurs est cloaking.

TL;DR — A utilisateur agent est le HTTP requête header quelconque client sends à identifier itself; c’est optional, client-filled metadata, pas authenticated identity. Son valeur est le utilisateur-agent string. Séparé depuis que est le utilisateur-agent token (produit token) utilisé dans robots.txt — RFC 9309 dit il DEVRAIT être a substring de le string, a strong convention avec documented exceptions (Google-Extended a aucun requête string à tout). Matching est case-insensitive, version numbers/wildcards dans le token line sont ignored, le la plupart-spécifique groupe wins, et même-token groupes merge mais jamais merge avec *. Le string est trivially spoofed — Google calls son propre “often spoofed” — donc vérifier par reverse + forward DNS (behind quelconque proxy/CDN, utiliser le réel client IP) contre googlebot.com/google.com/googleusercontent.com pour Google or search.msn.com pour Bing, or match publié IP ranges — et même a verified requête seulement proves une requête arrived, pas que lune page était indexé, retrieved, or utilisé pour AI training. AdsBot et Google-Safety ignore User-agent: *. Chrome est aussi freezing detail out de navigateur UA strings (Utilisateur-Agent reduction); Client Hints sont le structured mais opt-dans replacement, et aucun substitutes pour robot d’exploration verification. Utilisateur-agent adaptation peut être legitimate, mais deceptively showing robots d’exploration materially différent contenu peut être cloaking.

Preuve à l’appui de cette affirmation HTTP User-Agent is a request field containing product information supplied by the client; it is descriptive text and not proof of identity. Portée : HTTP semantics for User-Agent. Niveau de confiance : élevé · Vérifié : IETF RFC 9110: User-Agent Preuve à l’appui de cette affirmation robots.txt User-agent matching is defined by the Robots Exclusion Protocol and controls crawler access, not authentication or general HTTP content negotiation. Portée : RFC 9309 robots matching behavior. Niveau de confiance : élevé · Vérifié : IETF RFC 9309: Robots Exclusion Protocol

Le header, le string, et le token

Three choses, and keeping les straight is la plupart of ce topic.

  • Le header. User-Agent est an HTTP requête header. Chaque client sends il: votre navigateur, curl, a robot d’exploration, a bot. Per RFC 9110 (le core HTTP semantics standard), c’est an optional champ le client fills dans — client-supplied descriptive metadata, pas an authenticated identity le serveur a verified.
  • Le string. Le header’s valeur — a freeform line describing le software, version, rendu moteur, et parfois le OS.
  • Le token. Le court identifier utilisé dans robots.txt User-agent: lines à cible a robot d’exploration — Googlebot, bingbot, Google-Extended.

«The relationship is the part that trips people up. RFC 9309 (the formal Robots Exclusion Protocol standard) says the 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.” That’s a SHOULD, not a MUST — a strong convention the standard recommends, not a hard requirement every crawler is mechanically bound to. Google-Extended (below) is the clearest example of a documented exception to it. Don’t read the substring rule as universal just because Google follows it for most of its own tokens. The token is part of the string when a provider does supply one; you target the token in robots.txt and read the string in your logs.

Preuve à l’appui de cette affirmation 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. Portée : robots.txt parsing and matching Niveau de confiance : élevé · Vérifié : Robots Exclusion Protocol

» (Traduction) (Résumé en français de la section vingt-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Google’s own framing of how its bots identify themselves is useful here: “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.” Note that the user-agent is only one of the three — the other two are how you actually verify it. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Google-Extended: a token with aucun string

Le cleanest illustration de token ≠ string est Google-Extended. Il contrôle si Google peut utiliser votre contenu pour Gemini training et grounding — et il a aucun dedicated HTTP requête utilisateur-agent string à tout. Le exploration itself est fait avec existing Googlebot strings; Google-Extended exists seulement as a robots.txt contrôler token. Vous’ll jamais voir “Google-Extended” dans une requête header dans votre logs.

Le practical consequence: blocking Google-Extended affecte seulement AI-training utiliser de votre contenu — il fait pas arrêter Googlebot depuis exploration et indexation vous pour Recherche. ils sont séparé decisions controlled par séparé tokens. (Pour le broader picture de le bots reading votre site, voir AI robots d’exploration et robot d’exploration.)

Googlebot’s user-agent strings

Googlebot est “evergreen” — il exécute on a recent version de Chrome, et le Chrome version dans son string mises à jour periodically (il a since December 2019). c’est pourquoi le version apparaît as a W.X.Y.Z placeholder:

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

Deux choses à internalize. Premier, ne pas hardcode le version — W.X.Y.Z changements, et matching on il va break. Match le stable token Googlebot à la place. Deuxième, vous pouvez’t séparé mobile depuis desktop dans robots.txt. Les deux variants share le un Googlebot token, donc a robots.txt règle s’applique à les deux.

Google’s robot d’exploration tokens

Google exécute a entier family de robots d’exploration et fetchers, chaque avec son propre token. Le ones vous’ll meet la plupart:

Robot d’explorationrobots.txt tokenNotes
GooglebotGooglebotRecherche, Images, Video, News, Découvrir — mobile + desktop share ce token
Googlebot ImageGooglebot-ImageGoogle Images
Googlebot VideoGooglebot-VideoVideo Recherche
Googlebot NewsGooglebot-NewsUtilise various Googlebot strings
Google StoreBotStorebot-GoogleShopping
Google-InspectionToolGoogle-InspectionToolPowers Recherche testing outils
GoogleAutreGoogleOtherInternal research/fetching
Google-ExtendedGoogle-Extendedrobots.txt-seulement — Gemini training, aucun requête string

Et le ones que break le usual règles — le special-case robots d’exploration que ignore User-agent: *:

  • AdsBot (AdsBot-Google) et AdsBot Mobile (AdsBot-Google-Mobile) — ils ne pas obey le wildcard. À bloquer les vous doit nom les explicitly.
  • AdSense (Mediapartners-Google) — même; ignores le mondial *.
  • Google-Safety — utilisé pour malware/abuse detection; il ignores robots.txt entirely.

Le implication est le un personnes miss: User-agent: * ne fait pas bloquer AdsBot or Google-Safety. Si vous “block all bots” avec a wildcard et assume AdsBot est gone, il n’est pas. (Ce est exactly le kind de surprise que lands une page dans indexé though bloqué par robots.txt territory — voir robots.txt pour le complet contrôler story.)

Bingbot’s user-agent strings

Bing rebuilt Bingbot’s string dans 2022 à reflect que il renders avec Microsoft Edge. Le actuel 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)

Le robots.txt token est simplement bingbot. Le chose à watch: post-2022, Bingbot’s string semble presque exactly comme a réel Chrome/Edge navigateur — le seulement tell est le bingbot/2.0 fragment à l’intérieur il. Si vous ont quelconque logic que filters or detects bots par UA, que modifier matters.

How robots.txt en réalité matches a token

A quelques règles govern qui groupe de règles a robot d’exploration obeys (per Google’s robots.txt spec et RFC 9309):

  • La plupart-spécifique match wins. Google “determines le correct groupe de règles par finding… le groupe avec le la plupart spécifique utilisateur agent que matches le robot’s utilisateur agent.” A Googlebot groupe beats a * groupe pour Googlebot.
  • Même-token groupes merge — mais jamais avec *. Plusieurs groupes naming le même agent sont combined dans un. A spécifique-agent groupe et le * groupe sont pas merged; * est seulement le fallback quand rien spécifique matches.
  • Case-insensitive. Champ nom et valeur les deux — Googlebot, googlebot, GOOGLEBOT sont equivalent.
  • Version numbers et wildcards dans le token line sont ignored. Per Google, “les deux googlebot/1.2 et googlebot* sont equivalent à googlebot.” Vous ne peut pas écrire User-agent: Googlebot* à match a family — le * là fait rien.

So a User-agent: line takes a token and matches it as a plain (case-insensitive) substring of the crawler’s identity — aucun version pinning, aucun wildcards à l’intérieur it.

Pourquoi vous pouvez’t confiance le string — et comment vérifier

«The user-agent string is freeform text. Anything can set it. One line of curl will claim to be Googlebot, and plenty of tools and malicious bots do exactly that to slip past blocks. Google says so in its own Googlebot docs: “the HTTP user-agent request header used by Googlebot is often spoofed by other crawlers.” As I’ve put it in my Googlebot guide, “Many SEO tools and some malicious bots will pretend to be Googlebot. This may allow them to access websites that try to block them.” » (Traduction) (Résumé en français de la section cinquante-six, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

So jamais faire an accès or content decision on the string alone. Vérifier à la place.

Un prerequisite avant soit méthode: obtenir le réel source IP. Si votre site sits behind a reverse proxy, charger balancer, or CDN, le adresse dans votre par défaut accès log peut être le proxy’s IP, pas le robot’s — vous besoin le original client IP (généralement forwarded dans a header comme X-Forwarded-For, configuré correctement à votre proxy) or aucun verification méthode ci-dessous signifie n’importe quoi.

Méthode 1 — reverse + forward DNS (meilleur pour spot checks). Google’s two steps:

«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.” 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.” » (Traduction) (Résumé en français de la section soixante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Pour Bingbot, le même deux-étape dance, mais le hostname doit fin dans search.msn.com (pas a Bing-branded domain — a courant surprise). Commands sont dans le Scripts tab.

«Method 2 — published IP ranges (best at scale). Google doesn’t publish a static allowlist for hardcoding (“these IP address ranges can change”), but it does publish machine-readable CIDR JSON files you can match against (common-crawlers.json and the broader crawler files). Bing now publishes its ranges too. I built a Googlebot IP verification tool for exactly this — paste in IPs and it classifies them. Bing Webmaster Tools has a built-in “Verify Bingbot” tool as well. » (Traduction) (Résumé en français de la section soixante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

DNS est meilleur pour a un-off log vérifier; IP-range matching est meilleur pour verifying à volume. Utiliser whichever fits — mais utiliser un de les. Et treat les deux le attendu hostnames et le range fichiers as actuel as de aujourd’hui, pas permanent — Google et Bing ont modifié ces paths avant (le IP-range JSON fichiers déplacé et étaient renamed since ce article était premier written), donc re-vérifier le actif verification doc si a lookup que utilisé à fonctionner arrête matching.

A UA match n’est pas proof of downstream outcomes

Même a entièrement verified requête — réel Googlebot IP, forward-confirmed reverse DNS, everything checks out — seulement proves un chose: que requête reached votre serveur. It’s tempting to round que up into a beaucoup bigger claim, but chaque of ces is a separate fact requiring separate evidence:

  • Requête reçu — une requête avec que utilisateur agent hit votre serveur. (Ce que log verification en réalité proves.)
  • Identity confirmed — la requête vraiment came depuis le robot d’exploration il claims à être. (Ce que reverse DNS / IP-range matching ajoute on top.)
  • Contenu récupéré et rendu — le robot d’exploration successfully rendu lune page (aucun erreurs, aucun bloqué resources). Pas guaranteed simplement parce que une requête landed.
  • Indexé — l’URL fait il dans le recherche indexer. A successful récupérer ne fait pas guarantee indexation.
  • Utilisé pour retrieval, citation, or training — pour AI robots d’exploration surtout (Google-Extended, GPTBot, et le rest), a explorer n’est pas proof votre contenu était retrieved pour a spécifique réponse, cited, or utilisé dans model training. Ceux sont séparé, mostly unobservable étapes downstream de le explorer.

A verified Googlebot hit in votre logs is réel signal — simplement don’t stretch it plus loin que ce que it en réalité montre.

Web Bot Auth: où verification is heading

Dans 2026 Google began experimenting avec Web Bot Auth — “an experimental cryptographic protocol utilisé à authenticate requêtes sent par bots.” Le idea est à “déplacer au-delà easily spoofed headers à a verified identity et decouple agent identity depuis IP addresses.” Bots cryptographically sign leur requêtes; sites vérifier le signature contre Google’s publié public keys, et signed requêtes carry a Signature-Agent header. Google’s propre caveat matters: “Nous ne pas sign chaque requête de a particulier agent. Être certain que vous fall back à le established méthodes de bot verification.” Donc c’est additive, pas a replacement — reverse DNS et IP ranges remain votre baseline aujourd’hui.

«Everything above is about crawlers, but the same “don’t over-trust the string” lesson applies to browsers, and it’s getting stronger. Chrome has been rolling out User-Agent reduction: freezing or coarsening parts of its UA string (full browser version, OS version, device model) instead of reporting them exactly, so the string can’t be used to fingerprint a specific user. Google’s own framing: “The granularity and abundance of detail can lead to user identification. The default availability of this information can lead to covert tracking.” Practically, that means UA-string parsing for exact browser/OS/device version — analytics, device detection, bug triage — is increasingly unreliable and will only get more so. » (Traduction) (Résumé en français de la section soixante-douze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«The replacement Chrome recommends is User-Agent Client Hints (UA-CH): structured data the browser sends only when a server explicitly asks for it. Low-entropy hints (browser brand, major version, mobile flag) go out by default; high-entropy hints (exact version, platform version, device model) require the server to opt in via an Accept-CH response header first — an explicit negotiation, not a broadcast. Two caveats before you lean on it: it’s a Chrome/Chromium-family mechanism, not something every browser sends, and even where it’s supported, “the value may be blank, not returned, or populated with a varying value.” Client Hints solve the browser-string problem; they are not a crawler-verification mechanism — Google and Bing still verify their own crawlers via DNS and IP ranges, not Client Hints. » (Traduction) (Résumé en français de la section soixante-treize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

User-agent targeting and cloaking

Le tempting déplacer — “detect Googlebot par son UA et servir il quelque chose special” — est les deux technically fragile et a policy violation.

Fragile, parce que Google ne fait pas explorer avec un UA. Vous’d ont à correctement handle Googlebot (mobile et desktop), Google-InspectionTool, AdsBot, GoogleAutre, et plus, depuis rotating IPs — practically impossible à whitelist cleanly.

A policy violation, parce que diffusion différent contenu à a robot d’exploration que à utilisateurs est cloaking: “presenting différent contenu à utilisateurs et moteur de recherches avec le intent à manipulate recherche rankings et mislead utilisateurs.” Le penalty ranges depuis algorithmic demotion à complet deindexing. Remarque le line: legitimate adaptation (responsive layouts, contenu negotiation) est fine — c’est swapping le contenu itself entre bots et utilisateurs que crosses dans cloaking.

Pour où le utilisateur agent sits dans le bigger pipeline, voir exploration (le hub) et robot d’exploration. Pour controlling ce que ceux bots sont allowed à récupérer, voir robots.txt.

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.