pengguna agent

Apa sebuah pengguna agent adalah — header HTTP crawler dan browser gunakan untuk identify themselves, robots.txt token vs. penuh string, dan cara verify sebuah bot adalah nyata.

Pertama kali diterbitkan: 24 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan
2 sinyal bukti di halaman ini

sebuah pengguna agent adalah header HTTP setiap client — browser, crawler, atau bot — mengirim untuk identify itself. Dua hal mendapatkan confused: penuh pengguna-agent *string* di permintaan header, dan pendek pengguna-agent *token* (Googlebot, bingbot, Google-Extended) Anda target di robots.txt. token adalah sebuah substring dari string (RFC 9309); beberapa tokens, like Google-Extended, memiliki Tidak permintaan string di semua. string adalah trivially spoofed — Google says -nya own adalah 'sering spoofed' — so tidak pernah trust ini untuk access control. Verify Googlebot/Bingbot oleh reverse DNS plus sebuah forward lookup, atau terhadap published IP ranges. dan watch gotchas: AdsBot dan Google-Safety ignore `User-agent: *`, versi angka dan wildcards di token line adalah ignored, matching adalah case-insensitive, dan serving berbeda konten untuk sebuah bot UA daripada untuk pengguna adalah cloaking.

TL;DR — sebuah pengguna agent adalah HTTP permintaan header apa pun client mengirim untuk identify itself; ini adalah opsional, client-filled metadata, tidak authenticated identity. -nya nilai adalah pengguna-agent string. Terpisah dari itu adalah pengguna-agent token (product token) digunakan di robots.txt — RFC 9309 says ini seharusnya menjadi sebuah substring dari string, sebuah strong convention dengan terdokumentasi exceptions (Google-Extended memiliki Tidak permintaan string di semua). Matching adalah case-insensitive, versi angka/wildcards di token line adalah ignored, paling-spesifik group wins, dan sama-token groups gabungkan tetapi tidak pernah gabungkan dengan *. string adalah trivially spoofed — Google panggilan -nya own “often spoofed” (terjemahan) “sering spoofed” — so verify oleh reverse + forward DNS (behind apa pun proxy/CDN, gunakan nyata client IP) terhadap googlebot.com/google.com/googleusercontent.com untuk Google atau search.msn.com untuk Bing, atau match published IP ranges — dan bahkan sebuah verified permintaan hanya proves sebuah permintaan arrived, tidak itu halaman adalah terindeks, retrieved, atau digunakan untuk AI training. AdsBot dan Google-Safety ignore User-agent: *. Chrome adalah juga freezing detail out dari browser UA strings (pengguna-Agent reduction); Client Hints adalah structured tetapi opt-di replacement, dan neither substitutes untuk crawler verification. pengguna-agent adaptation dapat menjadi legitimate, tetapi deceptively menunjukkan crawler materially berbeda konten dapat menjadi cloaking.

Bukti untuk klaim ini HTTP User-Agent is a request field containing product information supplied by the client; it is descriptive text and not proof of identity. Cakupan: HTTP semantics for User-Agent. Tingkat keyakinan: tinggi · Diverifikasi: IETF RFC 9110: User-Agent Bukti untuk klaim ini robots.txt User-agent matching is defined by the Robots Exclusion Protocol and controls crawler access, not authentication or general HTTP content negotiation. Cakupan: RFC 9309 robots matching behavior. Tingkat keyakinan: tinggi · Diverifikasi: IETF RFC 9309: Robots Exclusion Protocol

header, string, dan token

Three hal, dan mempertahankan them straight adalah sebagian besar dari ini topic.

  • ** header.** User-Agent adalah sebuah HTTP permintaan header. setiap client mengirim ini: Anda browser, curl, sebuah crawler, sebuah bot. Per RFC 9110 ( core HTTP semantics standard), ini adalah sebuah opsional field client fills di — client-supplied descriptive metadata, tidak sebuah authenticated identity server memiliki verified.
  • ** string.** header’s nilai — sebuah freeform line describing software, versi, rendering mesin, dan sometimes OS.
  • ** token.** pendek identifier digunakan di robots.txt User-agent: lines untuk target sebuah crawler — 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.

Bukti untuk klaim ini 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. Cakupan: robots.txt parsing and matching Tingkat keyakinan: tinggi · Diverifikasi: Robots Exclusion Protocol

» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh enam, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

«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. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh tujuh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

Google-Extended: sebuah token dengan Tidak string

paling bersih illustration dari token ≠ string adalah Google-Extended. ini controls apakah Google dapat gunakan Anda konten untuk Gemini training dan grounding — dan ini memiliki Tidak dedicated HTTP permintaan pengguna-agent string di semua. crawling itself adalah selesai dengan existing Googlebot strings; Google-Extended ada hanya sebagai sebuah robots.txt control token. Anda’ll tidak pernah see “Google-Extended” (terjemahan) “Google-Extended” di sebuah permintaan header di Anda logs.

practical consequence: blocking Google-Extended memengaruhi hanya AI-training gunakan dari Anda konten — ini melakukan tidak berhenti Googlebot dari crawling dan pengindeksan Anda untuk Penelusuran. mereka’re terpisah decisions controlled oleh terpisah tokens. (untuk lebih luas picture dari bot reading Anda situs, see AI crawler dan crawler.)

Googlebot’s pengguna-agent strings

Googlebot adalah “evergreen” (terjemahan) “evergreen” — ini berjalan pada sebuah recent versi dari Chrome, dan Chrome versi di -nya string memperbarui periodically (ini memiliki since December 2019). itu’s mengapa versi muncul sebagai sebuah 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

Dua hal untuk internalize. pertama, jangan hardcode versi — W.X.Y.Z perubahan, dan matching pada ini akan break. Match stable token Googlebot alih-alih. kedua, Anda dapat’t terpisah mobile dari desktop di robots.txt. Keduanya variants share satu Googlebot token, so sebuah robots.txt aturan applies untuk keduanya.

Google’s crawler tokens

Google berjalan sebuah seluruh family dari crawler dan fetchers, setiap dengan -nya own token. ones Anda’ll memenuhi sebagian besar:

crawlerrobots.txt tokenNotes
GooglebotGooglebotPenelusuran, Images, Video, News, menemukan — mobile + desktop share ini token
Googlebot ImageGooglebot-ImageGoogle Images
Googlebot VideoGooglebot-VideoVideo Penelusuran
Googlebot NewsGooglebot-Newsmenggunakan various Googlebot strings
Google StoreBotStorebot-GoogleShopping
Google-InspectionToolGoogle-InspectionToolPowers Penelusuran testing alat
GoogleOtherGoogleOtherInternal research/fetching
Google-ExtendedGoogle-Extendedrobots.txt-hanya — Gemini training, Tidak permintaan string

dan ones itu break biasa aturan — special-case crawler itu ignore User-agent: *:

  • AdsBot (AdsBot-Google) dan AdsBot Mobile (AdsBot-Google-Mobile) — mereka jangan obey wildcard. untuk block them Anda harus name them explicitly.
  • AdSense (Mediapartners-Google) — sama; ignores global *.
  • Google-Safety — digunakan untuk malware/abuse detection; ini ignores robots.txt entirely.

implication adalah satu orang miss: User-agent: * melakukan tidak block AdsBot atau Google-Safety. jika Anda “block all bots” (terjemahan) “block semua bot” dengan sebuah wildcard dan assume AdsBot adalah hilang, ini tidak. (ini adalah persis jenis dari surprise itu lands sebuah halaman di terindeks though blocked oleh robots.txt territory — see robots.txt untuk penuh control story.)

Bingbot’s pengguna-agent strings

Bing rebuilt Bingbot’s string di 2022 untuk reflect itu ini renders dengan Microsoft Edge. saat ini 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)

robots.txt token adalah hanya bingbot. hal untuk watch: post-2022, Bingbot’s string looks hampir persis like sebuah nyata Chrome/Edge browser — satu-satunya tell adalah bingbot/2.0 fragment di dalam ini. jika Anda memiliki apa pun logic itu filters atau detects bot oleh UA, itu perubahan penting.

Bagaimana robots.txt sebenarnya matches sebuah token

sebuah sedikit aturan govern yang group dari aturan sebuah crawler obeys (per Google’s robots.txt spec dan RFC 9309):

  • sebagian besar-spesifik match wins. Google “determines the correct group of rules by finding… the group with the most specific user agent that matches the crawler’s user agent.” (terjemahan) “determines correct group dari aturan oleh finding… group dengan paling spesifik pengguna agent itu matches crawler’s pengguna agent.” sebuah Googlebot group beats sebuah * group untuk Googlebot.
  • sama-token groups gabungkan — tetapi tidak pernah dengan *. Multiple groups naming yang sama agent adalah combined ke satu. sebuah spesifik-agent group dan * group adalah tidak digabungkan; * adalah hanya fallback ketika tidak ada apa pun spesifik matches.
  • Case-insensitive. Field name dan nilai keduanya — Googlebot, googlebot, GOOGLEBOT adalah equivalent.
  • versi angka dan wildcards di token line adalah ignored. Per Google, “keduanya googlebot/1.2 dan googlebot* adalah equivalent untuk googlebot.” (terjemahan) “keduanya tidak terdefinisi dan tidak terdefinisi adalah equivalent untuk tidak terdefinisi.” Anda cannot tulis User-agent: Googlebot* untuk match sebuah family — * di sana melakukan tidak ada apa pun.

So sebuah User-agent: line takes sebuah token dan matches ini sebagai sebuah plain (case-insensitive) substring dari crawler’s identity — Tidak versi pinning, Tidak wildcards di dalam ini.

Mengapa Anda dapat’t trust string — dan cara verify

«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.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh enam, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

So tidak pernah membuat sebuah access atau konten decision pada string alone. Verify alih-alih.

Satu prerequisite sebelum either metode: mendapatkan nyata sumber IP. jika Anda situs sits behind sebuah proksi terbalik, muat balancer, atau CDN, address di Anda default access log dapat menjadi proxy’s IP, tidak crawler’s — Anda perlu original client IP (biasanya forwarded di sebuah header like X-Forwarded-For, configured correctly di Anda proxy) atau neither verification metode di bawah berarti apa pun.

metode 1 — reverse + forward DNS (best untuk spot memeriksa). Google’s dua langkah:

«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.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian enam puluh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

untuk Bingbot, yang sama dua-langkah dance, tetapi hostname harus end di search.msn.com (tidak sebuah Bing-branded domain — sebuah umum surprise). Commands adalah di Scripts tab.

metode 2 — published IP ranges (best di scale). Google tidak publish sebuah static allowlist untuk hardcoding (“these IP address ranges can change” (terjemahan) “ini IP address ranges dapat perubahan”), tetapi ini melakukan publish machine-readable CIDR JSON files Anda dapat match terhadap (umum-crawler.json dan lebih luas crawler files). Bing now publishes -nya ranges too. I dibangun sebuah Googlebot IP verification alat untuk persis ini — paste di IPs dan ini classifies them. Bing Webmaster alat memiliki sebuah dibangun-di “Verify Bingbot” (terjemahan) “Verify Bingbot” alat sebagai well.

DNS adalah better untuk sebuah satu kali log periksa; IP-range matching adalah better untuk verifying di volume. gunakan whichever fits — tetapi gunakan satu dari them. dan treat keduanya yang diharapkan hostnames dan range files sebagai saat ini sebagai dari hari ini, tidak permanent — Google dan Bing memiliki changed ini paths sebelum ( IP-range JSON files moved dan adalah renamed since ini artikel adalah pertama ditulis), so re-periksa langsung verification doc jika sebuah lookup itu digunakan untuk berfungsi berhenti matching.

sebuah UA match adalah tidak proof dari downstream outcomes

bahkan sebuah fully verified permintaan — nyata Googlebot IP, forward-confirmed reverse DNS, semuanya memeriksa out — hanya proves satu hal: itu permintaan reached Anda server. ini adalah tempting untuk round itu up ke sebuah banyak bigger claim, tetapi setiap dari ini adalah sebuah terpisah fact requiring terpisah evidence:

  • permintaan diterima — sebuah permintaan dengan itu pengguna agent hit Anda server. (Apa log verification sebenarnya proves.)
  • Identity confirmed — permintaan benar-benar came dari crawler ini claims untuk menjadi. (Apa reverse DNS / IP-range matching menambahkan pada top.)
  • konten fetched dan dirender — crawler successfully dirender halaman (Tidak errors, Tidak blocked resources). Tidak guaranteed hanya karena sebuah permintaan landed.
  • terindeks — URL dibuat ini ke penelusuran indeks. sebuah successful fetch tidak jaminan pengindeksan.
  • digunakan untuk retrieval, citation, atau training — untuk AI crawler terutama (Google-Extended, GPTBot, dan rest), sebuah crawl adalah tidak proof Anda konten adalah retrieved untuk sebuah spesifik jawaban, cited, atau digunakan di model training. itu adalah terpisah, mostly unobservable langkah downstream dari crawl.

sebuah verified Googlebot hit di Anda logs adalah nyata sinyal — hanya jangan stretch ini further daripada apa ini sebenarnya menampilkan.

Web bot Auth: di mana verification adalah heading

«In 2026 Google began experimenting with Web Bot Auth — “an experimental cryptographic protocol used to authenticate requests sent by bots.” The idea is to “move beyond easily spoofed headers to a verified identity and decouple agent identity from IP addresses.” Bots cryptographically sign their requests; sites verify the signature against Google’s published public keys, and signed requests carry a Signature-Agent header. Google’s own caveat matters: “We don’t sign every request of a particular agent. Be sure that you fall back to the established methods of bot verification.” So it’s additive, not a replacement — reverse DNS and IP ranges remain your baseline today. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian tujuh puluh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

browser adalah getting harder untuk parse dari UA string too

Semuanya di atas adalah tentang crawler, tetapi yang sama “don’t over-trust the string” (terjemahan) “jangan di atas-trust string” lesson applies untuk browser, dan ini adalah getting stronger. Chrome memiliki telah rolling out pengguna-Agent reduction: freezing atau coarsening bagian dari -nya UA string (penuh browser versi, OS versi, device model) alih-alih reporting them persis, so string dapat’t menjadi digunakan untuk fingerprint sebuah spesifik pengguna. 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.” (terjemahan) “ granularity dan abundance dari detail dapat lead untuk pengguna identification. default availability dari ini informasi dapat lead untuk covert tracking.” Practically, itu berarti UA-string parsing untuk tepat browser/OS/device versi — analytics, device detection, bug triage — adalah increasingly unreliable dan akan hanya mendapatkan lebih so.

replacement Chrome recommends adalah pengguna-Agent Client Hints (UA-CH): structured data browser mengirim hanya ketika sebuah server explicitly menanyakan untuk ini. rendah-entropy hints (browser brand, major versi, mobile flag) go out oleh default; tinggi-entropy hints (tepat versi, platform versi, device model) memerlukan server untuk opt di melalui sebuah Accept-CH respons header pertama — sebuah jelas negotiation, tidak sebuah broadcast. Dua caveats sebelum Anda lean pada ini: ini adalah sebuah Chrome/Chromium-family mechanism, tidak sesuatu setiap browser mengirim, dan bahkan di mana ini adalah didukung, “the value may be blank, not returned, or populated with a varying value.” (terjemahan) “ nilai dapat menjadi blank, tidak dikembalikan, atau populated dengan sebuah varying nilai.” Client Hints solve browser-string masalah; mereka adalah tidak sebuah crawler-verification mechanism — Google dan Bing masih verify mereka own crawler melalui DNS dan IP ranges, tidak Client Hints.

pengguna-agent targeting dan cloaking

tempting move — “detect Googlebot oleh its UA dan serve it sesuatu special” (terjemahan) “detect Googlebot oleh -nya UA dan sajikan ini sesuatu special” — adalah keduanya technically fragile dan sebuah policy violation.

Fragile, karena Google tidak crawl dengan satu UA. Anda’d memiliki untuk correctly tangani Googlebot (mobile dan desktop), Google-InspectionTool, AdsBot, GoogleOther, dan lebih, dari rotating IPs — practically impossible untuk whitelist cleanly.

sebuah policy violation, karena serving berbeda konten untuk sebuah crawler daripada untuk pengguna adalah cloaking: “presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.” (terjemahan) “presenting berbeda konten untuk pengguna dan mesin pencari dengan intent untuk manipulate penelusuran rankings dan mislead pengguna.” penalty ranges dari algorithmic demotion untuk penuh deindexing. Note line: legitimate adaptation (responsive layouts, konten negotiation) adalah fine — ini adalah swapping konten itself antara bot dan pengguna itu crosses ke cloaking.

untuk di mana pengguna agent sits di bigger pipeline, see crawling ( hub) dan crawler. untuk controlling apa itu bot adalah diizinkan untuk fetch, see robots.txt.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.