pengguna agent
What sebuah pengguna agent adalah — header HTTP crawler dan browser gunakan untuk identify themselves, robots.txt token vs. full string, dan cara verify sebuah bot adalah nyata.
Bahasa
2 sinyal bukti di halaman ini
- Data sumber tertautumum-crawler.json
- Alat aktif terkaitGooglebot Verifier
sebuah pengguna agent adalah header HTTP setiap client — browser, crawler, atau bot — mengirim untuk identify itself. Two things get confused: full 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 no 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.
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 ProtocolTL;DR — sebuah pengguna agent adalah sebuah little line dari text setiap browser dan setiap bot mengirim dengan setiap permintaan untuk say “here’s who I am.” (terjemahan) “here’s who I am.” Google’s crawler says ini adalah Googlebot; Bing’s says bingbot. di
robots.txtAnda tidak write whole line — Anda gunakan pendek name (sebuah “token” (terjemahan) “token”) likeGooglebot. dan here’s catch: itu line adalah hanya text, so anyone dapat fake ini. satu-satunya nyata cara untuk know sebuah bot adalah who ini claims untuk menjadi adalah untuk periksa where -nya permintaan actually came dari.
What sebuah pengguna agent adalah
setiap time Anda browser memuat sebuah halaman, ini mengirim along sebuah pendek text label itu says what ini adalah — something like “I’m Chrome on a Mac.” (terjemahan) “I’m Chrome pada sebuah Mac.” itu label adalah pengguna agent, dan ini travels di sebuah header HTTP pada setiap permintaan. server dapat read ini dan react untuk ini.
penting catch up front: client fills di itu label itself. Nothing memeriksa ini. ini adalah sebuah claim, not sebuah credential — so sebuah pengguna agent itu says “Googlebot” (terjemahan) “Googlebot” adalah not sama thing sebagai sebuah permintaan itu’s actually verified sebagai Googlebot.
crawler melakukan yang sama thing. When Googlebot fetches Anda halaman, ini mengirim sebuah pengguna agent
itu mencakup Googlebot. When Bingbot fetches ini, pengguna agent mencakup
bingbot. itu’s how sebuah bot announces itself di Anda server logs.
string vs. pendek name
ada really two things people berarti oleh “user agent,” (terjemahan) “pengguna agent,” dan mixing them up causes sebuah lot dari confusion:
- ** pengguna-agent string** adalah full line di permintaan header. Googlebot’s adalah panjang dan looks sebuah lot like sebuah browser.
- ** pengguna-agent token** adalah pendek name Anda gunakan di
robots.txtuntuk target sebuah bot — likeGooglebotataubingbot. token adalah hanya sebuah piece dari full string, not whole thing.
So when Anda write sebuah aturan di robots.txt, Anda gunakan pendek token:
User-agent: Googlebot
Disallow: /private/Anda tidak paste giant browser-looking string di there.
Anda dapat’t trust string
ini adalah one thing untuk remember. pengguna-agent line adalah plain text, so anything dapat fake ini. apa pun script dapat claim untuk menjadi Googlebot di sebuah single line dari code — dan plenty melakukan, untuk sneak past blocks. Google itself says Googlebot header adalah “often spoofed.” (terjemahan) “sering spoofed.”
itu berarti Anda harus tidak pernah decide who gets access untuk Anda situs based hanya pada pengguna agent. jika Anda actually perlu untuk confirm sebuah pengunjung adalah nyata Googlebot (say, Anda’re reading Anda logs), Anda verify oleh memeriksa where permintaan came dari — not what ini says ini adalah. Advanced tab walks melalui exactly how.
sebuah few gotchas
robots.txtpengguna-agent names adalah case-insensitive —Googlebotdangooglebotadalah yang sama.- Blocking everything dengan
User-agent: *melakukan not block semua dari Google’s bot — -nya ad crawler dan safety crawler ignore wildcard. - Showing one versi dari sebuah halaman untuk sebuah crawler dan sebuah berbeda one untuk nyata people adalah cloaking, dan Google treats ini sebagai spam.
ingin full picture — token tables, setiap Google dan Bing crawler, exact verification commands, dan cloaking aturan — switch untuk Advanced tab.
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 ProtocolTL;DR — sebuah pengguna agent adalah HTTP permintaan header apa pun client mengirim untuk identify itself; ini adalah optional, client-filled metadata, not authenticated identity. -nya nilai adalah pengguna-agent string. Separate 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 documented exceptions (Google-Extended memiliki no permintaan string di semua). Matching adalah case-insensitive, versi angka/wildcards di token line adalah ignored, paling-spesifik group wins, dan sama-token groups merge tetapi tidak pernah merge 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) terhadapgooglebot.com/google.com/googleusercontent.comuntuk Google atausearch.msn.comuntuk Bing, atau match published IP ranges — dan bahkan sebuah verified permintaan hanya proves sebuah permintaan arrived, not itu halaman adalah terindeks, retrieved, atau digunakan untuk AI training. AdsBot dan Google-Safety ignoreUser-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 showing crawler materially berbeda konten dapat menjadi cloaking.
header, string, dan token
Three things, dan keeping them straight adalah sebagian besar dari ini topic.
- ** header.**
User-Agentadalah 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 optional field client fills di — client-supplied descriptive metadata, not 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.txtUser-agent:lines untuk target sebuah crawler —Googlebot,bingbot,Google-Extended.
relationship adalah bagian itu trips people up. RFC 9309 ( formal Robots
Exclusion Protocol standard) says 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.” (terjemahan) “seharusnya menjadi sebuah substring dari
identification string itu crawler mengirim… di case dari HTTP, product token
seharusnya menjadi sebuah substring di pengguna-Agent header.” itu’s sebuah SHOULD, not sebuah MUST —
sebuah strong convention standard recommends, not sebuah hard requirement setiap crawler adalah
mechanically bound untuk. Google-Extended (below) adalah clearest contoh dari sebuah
documented exception untuk ini. Don’t read substring aturan sebagai universal hanya because
Google mengikuti ini untuk sebagian besar dari -nya own tokens. token adalah bagian dari string when
sebuah provider melakukan supply one; Anda target token di robots.txt dan read string
di Anda logs.
Google’s own framing dari how -nya bot identify themselves adalah berguna 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.” (terjemahan) “Google’s
crawler identify themselves melalui three things: HTTP undefined permintaan
header, source IP address dari permintaan, dan reverse DNS hostname dari
source IP.” Note itu pengguna-agent adalah hanya one dari three — lainnya two adalah
how Anda actually verify ini.
Google-Extended: sebuah token dengan no string
cleanest illustration dari token ≠ string adalah Google-Extended. ini controls
whether Google dapat gunakan Anda konten untuk Gemini training dan grounding — dan ini memiliki
no dedicated HTTP permintaan pengguna-agent string di semua. crawling itself adalah done
dengan existing Googlebot strings; Google-Extended exists 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 affects hanya AI-training gunakan
dari Anda konten — ini melakukan not stop Googlebot dari crawling dan pengindeksan Anda untuk
Search. mereka’re separate decisions controlled oleh separate tokens. (untuk broader
picture dari bot reading Anda situs, see AI crawler dan crawler.)
Googlebot’s pengguna-agent strings
Googlebot adalah “evergreen” (terjemahan) “evergreen” — ini runs pada sebuah recent versi dari Chrome, dan Chrome
versi di -nya string updates periodically (ini memiliki since December 2019). itu’s why
versi appears 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.36Two things untuk internalize. pertama, don’t hardcode versi — W.X.Y.Z perubahan,
dan matching pada ini akan break. Match stable token Googlebot instead. kedua,
Anda dapat’t separate mobile dari desktop di robots.txt. Both variants share one
Googlebot token, so sebuah robots.txt aturan applies untuk both.
Google’s crawler tokens
Google runs sebuah whole family dari crawler dan fetchers, setiap dengan -nya own token. ones Anda’ll meet sebagian besar:
| crawler | robots.txt token | Notes |
|---|---|---|
| Googlebot | Googlebot | Search, Images, Video, News, menemukan — mobile + desktop share ini token |
| Googlebot Image | Googlebot-Image | Google Images |
| Googlebot Video | Googlebot-Video | Video Search |
| Googlebot News | Googlebot-News | menggunakan various Googlebot strings |
| Google StoreBot | Storebot-Google | Shopping |
| Google-InspectionTool | Google-InspectionTool | Powers Search testing alat |
| GoogleOther | GoogleOther | Internal research/fetching |
| Google-Extended | Google-Extended | robots.txt-hanya — Gemini training, no permintaan string |
dan ones itu break usual aturan — special-case crawler itu ignore
User-agent: *:
- AdsBot (
AdsBot-Google) dan AdsBot Mobile (AdsBot-Google-Mobile) — mereka don’t 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 one people miss: User-agent: * melakukan not block AdsBot atau
Google-Safety. jika Anda “block all bots” (terjemahan) “block semua bot” dengan sebuah wildcard dan assume AdsBot adalah hilang,
ini isn’t. (ini adalah exactly jenis dari surprise itu lands sebuah halaman di terindeks though
blocked oleh robots.txt territory — see robots.txt untuk full 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.36Bingbot 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. thing untuk watch: post-2022, Bingbot’s
string looks almost exactly like sebuah nyata Chrome/Edge browser — satu-satunya tell adalah
bingbot/2.0 fragment inside ini. jika Anda memiliki apa pun logic itu filters atau detects bot
oleh UA, itu perubahan penting.
How robots.txt actually matches sebuah token
sebuah few aturan govern which 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
Googlebotgroup beats sebuah*group untuk Googlebot. - sama-token groups merge — tetapi tidak pernah dengan
*. Multiple groups naming yang sama agent adalah combined ke one. sebuah spesifik-agent group dan*group adalah not merged;*adalah hanya fallback when nothing spesifik matches. - Case-insensitive. Field name dan nilai both —
Googlebot,googlebot,GOOGLEBOTadalah equivalent. - versi angka dan wildcards di token line adalah ignored. Per Google,
“both
googlebot/1.2andgooglebot*are equivalent togooglebot.” (terjemahan) “both undefined dan undefined adalah equivalent untuk undefined.” Anda cannot writeUser-agent: Googlebot*untuk match sebuah family —*there melakukan nothing.
So sebuah User-agent: line takes sebuah token dan matches ini sebagai sebuah plain (case-insensitive)
substring dari crawler’s identity — no versi pinning, no wildcards inside ini.
Why Anda dapat’t trust string — dan cara verify
pengguna-agent string adalah freeform text. Anything dapat set ini. One line dari curl
akan claim untuk menjadi Googlebot, dan plenty dari alat dan malicious bot melakukan exactly itu untuk
slip past blocks. Google says so di -nya own Googlebot docs: “the HTTP user-agent
request header used by Googlebot is often spoofed by other crawlers.” (terjemahan) “ HTTP pengguna-agent
permintaan header digunakan oleh Googlebot adalah sering spoofed oleh lainnya crawler.” sebagai I’ve put ini
di 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) “banyak SEO alat dan beberapa malicious bot akan pretend untuk menjadi
Googlebot. ini dapat allow them untuk access situs web itu try untuk block them.”
So tidak pernah membuat sebuah access atau konten decision pada string alone. Verify instead.
One prerequisite sebelum either metode: get nyata source IP. jika Anda situs sits
behind sebuah reverse proxy, muat balancer, atau CDN, address di Anda default access log
dapat menjadi proxy’s IP, not 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 below berarti anything.
metode 1 — reverse + forward DNS (best untuk spot memeriksa). Google’s two langkah:
- “Run a reverse DNS lookup on the accessing IP address from your logs, using the
hostcommand. Verify that the domain name is eithergooglebot.com,google.com, orgoogleusercontent.com.” (terjemahan) “Run sebuah reverse DNS lookup pada accessing IP address dari Anda logs, menggunakan undefined command. Verify itu domain name adalah either undefined, undefined, atau undefined.” - “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) “Run sebuah forward DNS lookup pada domain name retrieved di langkah 1… Verify itu ini adalah yang sama sebagai original accessing IP address dari Anda logs.”
untuk Bingbot, yang sama two-langkah dance, tetapi hostname harus end di search.msn.com
(not sebuah Bing-branded domain — sebuah umum surprise). Commands adalah di Scripts tab.
metode 2 — published IP ranges (best di scale). Google doesn’t 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 broader crawler files). Bing now publishes -nya ranges too. I dibangun sebuah Googlebot IP verification alat untuk exactly 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 one-off log periksa; IP-range matching adalah better untuk verifying di volume. gunakan whichever fits — tetapi gunakan one dari them. dan treat both expected hostnames dan range files sebagai saat ini sebagai dari today, not permanent — Google dan Bing memiliki changed ini paths sebelum ( IP-range JSON files moved dan adalah renamed since ini artikel adalah pertama written), so re-periksa live verification doc jika sebuah lookup itu digunakan untuk berfungsi stops matching.
sebuah UA match adalah not proof dari downstream outcomes
bahkan sebuah fully verified permintaan — nyata Googlebot IP, forward-confirmed reverse DNS, everything memeriksa out — hanya proves one thing: itu permintaan reached Anda server. ini adalah tempting untuk round itu up ke sebuah much bigger claim, tetapi setiap dari ini adalah sebuah separate fact requiring separate evidence:
- permintaan diterima — sebuah permintaan dengan itu pengguna agent hit Anda server. (What log verification actually proves.)
- Identity confirmed — permintaan really came dari crawler ini claims untuk menjadi. (What reverse DNS / IP-range matching menambahkan pada top.)
- konten fetched dan rendered — crawler successfully rendered halaman (no errors, no blocked resources). Not guaranteed hanya because sebuah permintaan landed.
- terindeks — URL dibuat ini ke search indeks. sebuah successful fetch doesn’t guarantee pengindeksan.
- digunakan untuk retrieval, citation, atau training — untuk AI crawler terutama (Google-Extended, GPTBot, dan rest), sebuah crawl adalah not proof Anda konten adalah retrieved untuk sebuah spesifik jawaban, cited, atau digunakan di model training. itu adalah separate, mostly unobservable langkah downstream dari crawl.
sebuah verified Googlebot hit di Anda logs adalah nyata signal — hanya don’t stretch ini further daripada what ini actually menampilkan.
Web bot Auth: where verification adalah heading
di 2026 Google began experimenting dengan Web bot Auth — “an experimental
cryptographic protocol used to authenticate requests sent by bots.” (terjemahan) “sebuah experimental
cryptographic protocol digunakan untuk authenticate permintaan dikirim oleh bot.” idea adalah untuk
“move beyond easily spoofed headers to a verified identity and decouple agent
identity from IP addresses.” (terjemahan) “move beyond easily spoofed headers untuk sebuah verified identity dan decouple agent
identity dari IP addresses.” bot cryptographically sign mereka permintaan; situs verify
signature terhadap Google’s published public keys, dan signed permintaan carry sebuah
Signature-Agent header. Google’s own caveat penting: “We don’t sign every request
of a particular agent. Be sure that you fall back to the established methods of bot
verification.” (terjemahan) “kami don’t sign setiap permintaan
dari sebuah particular agent. menjadi sure itu Anda fall back untuk established metode dari bot
verification.” So ini adalah additive, not sebuah replacement — reverse DNS dan IP ranges remain
Anda baseline today.
browser adalah getting harder untuk parse dari UA string too
Everything above adalah tentang crawler, tetapi yang sama “don’t over-trust the string” (terjemahan) “don’t 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 (full browser versi, OS versi, device model) alih-alih reporting them exactly, 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 exact browser/OS/device versi — analytics, device detection, bug triage — adalah increasingly unreliable dan akan hanya get more so.
replacement Chrome recommends adalah pengguna-Agent Client Hints (UA-CH): structured
data browser mengirim hanya when sebuah server explicitly menanyakan untuk ini. rendah-entropy hints
(browser brand, major versi, mobile flag) go out oleh default; tinggi-entropy hints
(exact versi, platform versi, device model) memerlukan server untuk opt di via sebuah
Accept-CH respons header pertama — sebuah explicit negotiation, not sebuah broadcast. Two
caveats sebelum Anda lean pada ini: ini adalah sebuah Chrome/Chromium-family mechanism, not something
setiap browser mengirim, dan bahkan where ini adalah didukung, “the value may be blank, not
returned, or populated with a varying value.” (terjemahan) “ nilai dapat menjadi blank, not
dikembalikan, atau populated dengan sebuah varying nilai.” Client Hints solve browser-string
masalah; mereka adalah not sebuah crawler-verification mechanism — Google dan Bing masih
verify mereka own crawler via DNS dan IP ranges, not Client Hints.
pengguna-agent targeting dan cloaking
tempting move — “detect Googlebot by its UA and serve it something special” (terjemahan) “detect Googlebot oleh -nya UA dan sajikan ini something special” — adalah both technically fragile dan sebuah policy violation.
Fragile, because Google doesn’t crawl dengan one UA. Anda’d memiliki untuk correctly handle Googlebot (mobile dan desktop), Google-InspectionTool, AdsBot, GoogleOther, dan more, dari rotating IPs — practically impossible untuk whitelist cleanly.
sebuah policy violation, because 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 search rankings dan mislead pengguna.” penalty ranges dari algorithmic demotion untuk full 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 where pengguna agent sits di bigger pipeline, see crawling ( hub) dan crawler. untuk controlling what itu bot adalah allowed untuk fetch, see robots.txt.
AI summary
sebuah condensed take pada Advanced versi:
- Three things, dipertahankan straight:
User-Agentpermintaan header — optional, client-filled metadata per RFC 9110, not authenticated identity; -nya nilai, pengguna-agent string; dan token digunakan dirobots.txt. Per RFC 9309 token seharusnya menjadi sebuah substring dari string — sebuah strong convention, not sebuah universal aturan. - beberapa tokens memiliki no string.
Google-Extendedadalah documented exception: ini exists hanya sebagai sebuah robots.txt control (Gemini training); crawling menggunakan normal Googlebot strings. Blocking ini doesn’t affect Search pengindeksan. - Googlebot/Bingbot strings adalah evergreen — Chrome versi menampilkan sebagai
W.X.Y.Zdan perubahan; match stable token (Googlebot,bingbot), tidak pernah versi. Mobile dan desktop Googlebot share one token. Post-2022 Bingbot looks like sebuah nyata browser except untukbingbot/2.0fragment. - robots.txt matching: sebagian besar-spesifik group wins; sama-token groups merge tetapi tidak pernah
dengan
*; matching adalah case-insensitive; versi angka dan wildcards diUser-agent:line adalah ignored (Googlebot*=Googlebot). - AdsBot dan Google-Safety ignore
User-agent: *— block them oleh name atau not di semua. - ** string adalah trivially spoofed** (Google panggilan -nya own “often spoofed” (terjemahan) “sering spoofed”). Get
nyata client IP pertama (proxies/CDNs dapat mask ini di Anda logs), lalu verify oleh
reverse + forward DNS (
googlebot.com/google.com/googleusercontent.com; Bing →search.msn.com) atau published IP ranges — files Google memiliki renamed/moved sebelum, so re-periksa live doc jika sebuah lookup stops matching. tidak pernah trust string untuk access control. - sebuah verified permintaan masih isn’t proof dari everything downstream. permintaan diterima, identity confirmed, konten rendered, halaman terindeks, dan konten retrieved/cited/trained-pada adalah separate claims needing separate evidence — sebuah log hit proves pertama, nothing else automatically.
- Web bot Auth (2026, experimental) signs permintaan cryptographically — additive, dengan DNS/IP masih fallback.
- browser UA strings adalah getting harder untuk parse too: Chrome’s pengguna-Agent reduction freezes exact versi/OS/device detail out dari string; Client Hints adalah structured, opt-di replacement — tetapi mereka’re Chrome-spesifik dan don’t substitute untuk crawler verification.
- Serving berbeda konten oleh UA adalah cloaking — sebuah spam-policy violation, dan fragile because Google melakukan crawl dengan banyak UAs.
Official documentation
Primary-source documentation dari mesin pencari dan standard.
- Overview dari Google crawler dan fetchers (pengguna agents) — three identification signals dan full crawler list.
- Google’s umum crawler — token + pengguna-agent-string table.
- Google Special-Case crawler — AdsBot, Mediapartners-Google, Google-Safety dan
*exceptions. - Verify permintaan dari Google crawler dan Fetchers — two-langkah DNS metode dan IP-range files.
- What adalah Googlebot — Googlebot strings dan “often spoofed” (terjemahan) “sering spoofed” note.
- How Google Interprets robots.txt Specification — token matching, case-insensitivity, ignored wildcards.
- Authenticating permintaan dengan Web bot Auth (Experimental) — cryptographic signing protocol.
- Updating pengguna agent dari Googlebot (2019) — why string menampilkan
W.X.Y.Z. - Spam Policies — Cloaking — definition dan penalty.
Bing / Microsoft
- Announcing pengguna-agent perubahan untuk Bingbot (Apr 2022) — saat ini desktop + mobile strings (Fabrice Canel).
- cara Verify itu Bingbot adalah Bingbot (Aug 2012) —
*.search.msn.comreverse-DNS metode. - Bing Webmaster alat — Verify Bingbot — dibangun-di verification alat.
** standard**
- RFC 9110 — HTTP Semantics, §10.1.5 pengguna-Agent — core HTTP spec:
User-Agentadalah sebuah optional, client-supplied field, not authenticated identity. - RFC 9309: Robots Exclusion Protocol — formal
SHOULD-tingkat definition dari product token sebagai sebuah substring dari pengguna-agent string. - MDN — pengguna-Agent header — HTTP syntax dari header itself.
browser UA strings
- Chrome Privacy Sandbox — pengguna-Agent reduction — what gets frozen/coarsened di Chrome’s UA string, dan why.
- Chrome untuk Developers — pengguna-Agent Client Hints — rendah- vs. tinggi-entropy hints dan
Accept-CHopt-di.
Quotes dari source
pada—record statements dari Google, Bing, dan RFC. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage pada source halaman.
Google — how crawler identify themselves
- “Google’s crawlers identify themselves through three things: the HTTP
user-agentrequest header, the source IP address of the request, and the reverse DNS hostname of the source IP.” (terjemahan) “Google’s crawler identify themselves melalui three things: HTTP undefined permintaan header, source IP address dari permintaan, dan reverse DNS hostname dari source IP.” — Google Search Central docs. Jump untuk quote
Google — string adalah spoofed
- “The HTTP user-agent request header used by Googlebot is often spoofed by other crawlers.” (terjemahan) “ HTTP pengguna-agent permintaan header digunakan oleh Googlebot adalah sering spoofed oleh lainnya crawler.” — Google Search Central docs. Jump untuk quote
Google — verifying oleh DNS
- “Run a reverse DNS lookup on the accessing IP address from your logs, using the
hostcommand. Verify that the domain name is eithergooglebot.com,google.com, orgoogleusercontent.com.” (terjemahan) “Run sebuah reverse DNS lookup pada accessing IP address dari Anda logs, menggunakan undefined command. Verify itu domain name adalah either undefined, undefined, atau undefined.” Jump untuk quote - “Google doesn’t post a public list of IP addresses for website owners to allowlist because these IP address ranges can change.” (terjemahan) “Google doesn’t post sebuah public list dari IP addresses untuk situs web owners untuk allowlist because ini IP address ranges dapat perubahan.” Jump untuk quote
Google — robots.txt token matching
- “All non-matching text is ignored (for example, both
googlebot/1.2andgooglebot*are equivalent togooglebot).” (terjemahan) “semua non-matching text adalah ignored (misalnya, both undefined dan undefined adalah equivalent untuk undefined).” — Google’s robots.txt spec. Jump untuk quote
Google — Web bot Auth
- “An experimental cryptographic protocol used to authenticate requests sent by bots.” (terjemahan) “sebuah experimental cryptographic protocol digunakan untuk authenticate permintaan dikirim oleh bot.” Jump untuk quote
- “We don’t sign every request of a particular agent. Be sure that you fall back to the established methods of bot verification.” (terjemahan) “kami don’t sign setiap permintaan dari sebuah particular agent. menjadi sure itu Anda fall back untuk established metode dari bot verification.” Jump untuk quote
Google — cloaking
- “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users.” (terjemahan) “Cloaking refers untuk practice dari presenting berbeda konten untuk pengguna dan mesin pencari dengan intent untuk manipulate search rankings dan mislead pengguna.” — Google Search Essentials, Spam Policies. Jump untuk quote
RFC 9309 — token adalah sebuah substring dari string
- “The product token SHOULD be a substring of the identification string that the crawler sends to the service. For example, in the case of HTTP, the product token SHOULD be a substring in the User-Agent header.” (terjemahan) “ product token seharusnya menjadi sebuah substring dari identification string itu crawler mengirim untuk service. misalnya, di case dari HTTP, product token seharusnya menjadi sebuah substring di pengguna-Agent header.” Jump untuk quote
Patrick Stox — pada spoofing
- “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) “banyak SEO alat dan beberapa malicious bot akan pretend untuk menjadi Googlebot. ini dapat allow them untuk access situs web itu try untuk block them.” — dari my Googlebot guide pada Ahrefs. Read ini
crawler → token → string → verify
reference table. token adalah what Anda put di robots.txt; verify
hostname adalah what sebuah genuine permintaan reverse-resolves untuk.
| crawler | robots.txt token | UA string berisi | Verify hostname (reverse DNS) |
|---|---|---|---|
| Googlebot (Search) | Googlebot | Googlebot/2.1 | googlebot.com / google.com / googleusercontent.com |
| Googlebot Image | Googlebot-Image | Googlebot-Image/1.0 | sama sebagai Googlebot |
| Googlebot Video | Googlebot-Video | Googlebot-Video/1.0 | sama sebagai Googlebot |
| Google StoreBot | Storebot-Google | Storebot-Google/1.0 | sama sebagai Googlebot |
| Google-InspectionTool | Google-InspectionTool | Google-InspectionTool/1.0 | sama sebagai Googlebot |
| GoogleOther | GoogleOther | GoogleOther | varies (see Google’s IP files) |
| Google-Extended | Google-Extended | none — robots.txt-hanya token | n/sebuah (no permintaan string) |
| AdsBot | AdsBot-Google | AdsBot-Google | ignores User-agent: * |
| AdSense | Mediapartners-Google | Mediapartners-Google | ignores User-agent: * |
| Google-Safety | (ignores robots.txt) | Google-Safety | ignores robots.txt entirely |
| Bingbot | bingbot | bingbot/2.0 | search.msn.com |
robots.txt matching aturan di sebuah glance
| aturan | What ini berarti |
|---|---|
| sebagian besar-spesifik group wins | sebuah Googlebot group beats * untuk Googlebot |
| sama-token groups merge | Multiple Googlebot groups combine ke one |
…tetapi tidak pernah merge dengan * | * adalah hanya fallback when nothing spesifik matches |
| Case-insensitive | Googlebot = googlebot = GOOGLEBOT |
| versi/wildcards di token ignored | Googlebot/1.2 dan Googlebot* both = Googlebot |
Fast facts
- Token = substring dari UA string (RFC 9309). Not whole string.
- Mobile dan desktop Googlebot share one token — Anda dapat’t split them di robots.txt.
- Chrome versi di string adalah
W.X.Y.Z— ini perubahan; tidak pernah hardcode ini. - UA string adalah trivially spoofed — verify oleh DNS atau IP, tidak pernah trust string.
Verify sebuah bot oleh reverse + forward DNS
pengguna-agent string dapat menjadi faked di one line dari curl. Confirm sebuah bot adalah genuine oleh
memeriksa IP ini actually came dari. pattern adalah yang sama untuk Google dan Bing —
hanya expected hostname differs.
Get right IP pertama: jika permintaan pass melalui sebuah reverse proxy, muat balancer, atau CDN sebelum hitting Anda server, Anda default logs dapat tampilkan proxy’s address, not crawler’s. gunakan benar client IP (dari sebuah correctly configured forwarding header) sebelum running either periksa below.
macOS / Linux
# --- Googlebot ---
# 1) Reverse DNS the IP from your logs — must end in googlebot.com, google.com, or googleusercontent.com
host 66.249.66.1
# → 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com
# 2) Forward DNS that hostname back — it must resolve to the same IP
host crawl-66-249-66-1.googlebot.com
# → crawl-66-249-66-1.googlebot.com has address 66.249.66.1
# --- Bingbot ---
# Reverse DNS must end in search.msn.com, then forward-confirm back to the IP
host 157.55.39.1
host <the-hostname-it-returned>Windows
:: Googlebot
nslookup 66.249.66.1
nslookup crawl-66-249-66-1.googlebot.com
:: Bingbot
nslookup 157.55.39.1
nslookup <the-hostname-it-returned>jika reverse lookup doesn’t end di expected domain — googlebot.com /
google.com / googleusercontent.com untuk Google, search.msn.com untuk Bing — atau
forward lookup doesn’t match original IP, ini isn’t nyata bot, no penting what
pengguna-agent string says.
Match terhadap published IP ranges (di scale)
untuk verifying lots dari hits, skip per-permintaan DNS dan match IP terhadap mesin’s published CIDR ranges instead. Google publishes machine-readable JSON:
https://developers.google.com/static/crawling/ipranges/common-crawlers.json
https://developers.google.com/static/crawling/ipranges/special-crawlers.json
https://developers.google.com/static/crawling/ipranges/user-triggered-fetchers.jsonPull file, bangun CIDR set, dan test setiap logged IP untuk membership. (I dibangun sebuah Googlebot IP verification alat itu melakukan ini untuk Anda.) Bing publishes -nya ranges too, dan Bing Webmaster alat memiliki sebuah dibangun-di “Verify Bingbot” (terjemahan) “Verify Bingbot” periksa.
pengguna-agent sanity checklist
sebelum Anda write UA aturan atau act pada sebuah bot di Anda logs:
- Anda’re targeting token di
robots.txt(e.g.Googlebot), not pasting full UA string. - No versi angka atau
*insideUser-agent:line — mereka’re ignored (Googlebot*melakukan nothing). - Anda haven’t assumed
User-agent: *blocks AdsBot atau Google-Safety — ini doesn’t; name them explicitly jika Anda perlu. - jika Anda blocked
Google-Extended, Anda memahami ini hanya affects AI-training gunakan — Googlebot masih melakukan crawl dan indeks untuk Search. - Anda’re not keying access control atau konten pada raw UA string — ini adalah spoofable.
- apa pun “is this really Googlebot?” (terjemahan) “adalah ini really Googlebot?” periksa goes melalui reverse + forward DNS
(
googlebot.com/google.com/googleusercontent.com) atau published IP ranges — Bing melaluisearch.msn.com. - No versi-pinned UA matching anywhere — Chrome
W.X.Y.Zportion perubahan. - Anda’re not serving berbeda konten untuk sebuah bot UA daripada untuk pengguna (itu’s cloaking).
alat untuk berfungsi dengan pengguna agents
Three dari my own free alat cover three tasks people actually come untuk ini topic untuk: confirming sebuah claimed bot adalah nyata, seeing which pengguna agents adalah actually hitting Anda situs, dan memeriksa what AI crawler adalah allowed untuk melakukan.
Googlebot Verifier — alat untuk exact masalah ini artikel mempertahankan coming back untuk: pengguna-agent string adalah hanya text, so Anda dapat’t trust ini pada -nya own. Paste di sebuah IP address dari Anda logs, pick which crawler ini claims untuk menjadi (Googlebot, Bingbot, dan others), dan ini runs reverse + forward DNS periksa dan published-IP-range match untuk Anda, lalu mengembalikan sebuah tiered verdict — reverse-DNS confirmed, di published ranges, spoofed, unverifiable, atau not sebuah known crawler. Got sebuah whole day dari hits untuk periksa alih-alih one IP? Paste up untuk 500 IPs atau raw log lines ke bulk box.
Log File Analyzer — untuk pertanyaan “which user agents are actually crawling my site?” (terjemahan) “which pengguna agents adalah actually crawling my situs?” Drop di sebuah server access log (nginx, Apache, IIS/W3C, atau JSON) dan ini parses ini entirely di Anda browser, breaking crawl activity down oleh bot dan oleh bagian, flagging status-code waste, splitting AI crawler dari search crawler, dan — bagian itu penting sebagian besar untuk ini topic — running sebuah spoofer report itu names permintaan claiming untuk menjadi sebuah known crawler’s pengguna-agent token without IP untuk back ini up.
AI-crawler Access Checker — untuk newer
family dari tokens itu don’t behave like Googlebot atau bingbot. Enter sebuah URL dan
ini memeriksa Anda robots.txt terhadap setiap major AI-crawler pengguna-agent token
(GPTBot, ClaudeBot, PerplexityBot, Google-Extended, dan more), menampilkan exact
aturan itu wins untuk setiap, dan flags whether sebuah llms.txt exists. berguna untuk
confirming sebuah token like Google-Extended adalah doing what Anda think ini adalah doing —
since, sebagai covered above, ini memiliki no permintaan string dari -nya own untuk spot di Anda
logs.
Prompts untuk pengguna-agent tasks
Two prompts dibangun sekitar spesifik traps ini topic sets — spoofing dan
robots.txt token syntax — not generic “audit my SEO” (terjemahan) “audit my SEO” filler. Paste Anda own
data ke placeholders.
Prompt 1 — triage sebuah batch dari pengguna-agent strings dari Anda logs untuk signs dari spoofing
Paste sebuah column dari raw pengguna-agent strings pulled dari Anda access log (not IPs — ini prompt dapat’t verify identity, hanya spot inconsistencies di string itself):
Here is a list of raw User-Agent strings from my server access log, one per
line. For each one:
1. Say which crawler token it claims to be (e.g. Googlebot, bingbot,
GPTBot), or "no recognizable token" if none.
2. Flag anything internally inconsistent for that claimed crawler — e.g. a
claimed Googlebot string missing "compatible; Googlebot" or the
"+http://www.google.com/bot.html" URL, a claimed bingbot string missing
"bingbot/2.0", or a Chrome version that looks hand-typed rather than a
real evergreen build.
3. Remind me that this is a text-pattern check only — it cannot confirm
identity. Real verification requires reverse+forward DNS or matching
against the crawler's published IP ranges.
[paste user-agent strings here]Prompt 2 — periksa sebuah robots.txt untuk token-matching mistakes
Paste Anda full robots.txt file:
Review this robots.txt file for user-agent token mistakes:
1. Flag any User-agent line that includes a version number or a wildcard
inside the token (e.g. "Googlebot/1.2" or "Googlebot*") — these are
ignored, not matched as a family.
2. Check whether User-agent: * is being relied on to block AdsBot-Google,
AdsBot-Google-Mobile, Mediapartners-Google, or Google-Safety — these
ignore the wildcard and need their own named group if I want them
blocked.
3. Note any duplicate groups for the same token that could be merged, and
confirm token matching here is case-insensitive so I don't need
near-duplicate groups for casing variants.
4. List which named groups exist and which of Google's/Bing's common
crawler tokens (Googlebot, Googlebot-Image, Google-Extended, bingbot)
have no explicit group at all, so I know they're falling through to *.
[paste robots.txt here] Test yourself: pengguna agent
Five quick pertanyaan pada header, string, token, dan cara verify sebuah bot adalah nyata. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My related writing
- What adalah Googlebot & How melakukan ini berfungsi? — full Googlebot UA strings, verification metode, dan my IP verification alat.
- terindeks, though blocked oleh robots.txt — where UA-based blocking dan robots.txt blocking collide.
- Robots.txt dan SEO: Everything Anda perlu Know — how pengguna-agent groups dan aturan actually berfungsi.
- Meet baru Web crawler: AI bot adalah Closing di pada mesin pencari bot — changing cast dari pengguna agents di Anda logs.
Official / standards
- RFC 9110 — HTTP Semantics, §10.1.5 pengguna-Agent — base definition: optional, client-supplied metadata.
- RFC 9309: Robots Exclusion Protocol — formal
SHOULD-tingkat product-token-sebagai-substring definition. - Google’s Overview dari crawler dan fetchers dan Verify Google crawler.
- Chrome Privacy Sandbox — pengguna-Agent reduction dan pengguna-Agent Client Hints — why browser UA strings adalah getting harder untuk parse, dan what replaces them.
dari others
- John Mueller — bot itu impersonate Googlebot — pada spoofing dan why reverse DNS adalah jawaban.
- MDN — pengguna-Agent header — HTTP spec view dari header.
- r/TechSEO — community untuk crawl/log debugging.
- Web bot Auth: Google’s baru experimental metode untuk validate authentic bot (mesin pencari Land, Barry Schwartz, dapat 2026) — best news-desk summary dari how cryptographic bot signing berfungsi dan what ini berarti dalam praktik.
- Google-Agent pengguna agent identifies AI agent traffic di server logs (mesin pencari Land) — covers baru pengguna-triggered fetcher itu ignores robots.txt dan menggunakan Web bot Auth.
- Google adalah Testing baru bot Authorization Standard (mesin pencari Journal) — broader industry context pada IETF standard dan which companies (Amazon, Cloudflare, Akamai, OpenAI) adalah backing ini.
- Announcing future pengguna-agents untuk Bingbot (Bing Webmaster Blog, Fabrice Canel, Dec 2019) — original announcement dari Bingbot’s shift untuk Edge-based rendering sebelum 2022 rollout.
- Microsoft list dari Bingbot IP addresses released (mesin pencari Land) — coverage dari Bing’s decision untuk publish IP ranges untuk di-scale bot verification.
Log perubahan
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.