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.
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. 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.
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 ProtocolTL;DR — sebuah pengguna agent adalah sebuah little line dari text setiap browser dan setiap bot mengirim dengan setiap permintaan untuk say “di sini’s siapa I am.” (terjemahan) “di sini’s siapa I am.” Google’s crawler says ini adalah Googlebot; Bing’s says bingbot. di
robots.txtAnda tidak tulis seluruh line — Anda gunakan pendek name (sebuah “token” (terjemahan) “token”) likeGooglebot. dan di sini’s catch: itu line adalah hanya text, so anyone dapat fake ini. satu-satunya nyata cara untuk know sebuah bot adalah siapa ini claims untuk menjadi adalah untuk periksa di mana -nya permintaan sebenarnya came dari.
Apa sebuah pengguna agent adalah
setiap time Anda browser memuat sebuah halaman, ini mengirim along sebuah pendek text label itu says apa ini adalah — sesuatu like “I’m Chrome pada 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 baca ini dan react untuk ini.
penting catch up front: client fills di itu label itself. Tidak ada apa pun memeriksa ini. ini adalah sebuah claim, tidak sebuah credential — so sebuah pengguna agent itu says “Googlebot” (terjemahan) “Googlebot” adalah tidak sama hal sebagai sebuah permintaan itu’s sebenarnya verified sebagai Googlebot.
crawler melakukan yang sama hal. Ketika Googlebot fetches Anda halaman, ini mengirim sebuah pengguna agent
itu mencakup Googlebot. Ketika Bingbot fetches ini, pengguna agent mencakup
bingbot. itu’s bagaimana sebuah bot announces itself di Anda server logs.
string vs. pendek name
ada benar-benar dua hal orang berarti oleh “user agent,” (terjemahan) “pengguna agent,” dan mixing them up penyebab sebuah lot dari confusion:
- ** pengguna-agent string** adalah penuh 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 penuh string, tidak seluruh hal.
So ketika Anda tulis sebuah aturan di robots.txt, Anda gunakan pendek token:
User-agent: Googlebot
Disallow: /private/Anda tidak paste giant browser-looking string di di sana.
Anda dapat’t trust string
«This is the one thing to remember. The user-agent line is plain text, so anything can fake it. Any script can claim to be Googlebot in a single line of code — and plenty do, to sneak past blocks. Google itself says the Googlebot header is “often spoofed.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima belas, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
itu berarti Anda harus tidak pernah decide siapa mendapatkan access untuk Anda situs based hanya pada pengguna agent. jika Anda sebenarnya perlu untuk konfirmasi sebuah pengunjung adalah nyata Googlebot (say, Anda’re reading Anda logs), Anda verify oleh memeriksa di mana permintaan came dari — tidak apa ini says ini adalah. Advanced tab walks melalui persis bagaimana.
sebuah sedikit gotchas
robots.txtpengguna-agent names adalah case-insensitive —Googlebotdangooglebotadalah yang sama.- Blocking semuanya dengan
User-agent: *melakukan tidak block semua dari Google’s bot — -nya ad crawler dan safety crawler ignore wildcard. - Menunjukkan satu versi dari sebuah halaman untuk sebuah crawler dan sebuah berbeda satu untuk nyata orang adalah cloaking, dan Google memperlakukan ini sebagai spam.
ingin penuh picture — token tables, setiap Google dan Bing crawler, tepat verification commands, dan cloaking aturan — switch untuk Advanced tab.
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 ProtocolTL;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) 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, tidak 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 menunjukkan crawler materially berbeda konten dapat menjadi cloaking.
header, string, dan token
Three hal, dan mempertahankan 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 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.txtUser-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.
» (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.36Dua 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:
| crawler | robots.txt token | Notes |
|---|---|---|
| Googlebot | Googlebot | Penelusuran, Images, Video, News, menemukan — mobile + desktop share ini token |
| Googlebot Image | Googlebot-Image | Google Images |
| Googlebot Video | Googlebot-Video | Video Penelusuran |
| Googlebot News | Googlebot-News | menggunakan various Googlebot strings |
| Google StoreBot | Storebot-Google | Shopping |
| Google-InspectionTool | Google-InspectionTool | Powers Penelusuran testing alat |
| GoogleOther | GoogleOther | Internal research/fetching |
| Google-Extended | Google-Extended | robots.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.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. 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
Googlebotgroup 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,GOOGLEBOTadalah equivalent. - versi angka dan wildcards di token line adalah ignored. Per Google,
“keduanya
googlebot/1.2dangooglebot*adalah equivalent untukgooglebot.” (terjemahan) “keduanya tidak terdefinisi dan tidak terdefinisi adalah equivalent untuk tidak terdefinisi.” Anda cannot tulisUser-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.
AI summary
sebuah condensed take pada Advanced versi:
- Three hal, dipertahankan straight:
User-Agentpermintaan header — opsional, client-filled metadata per RFC 9110, tidak 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, tidak sebuah universal aturan. - beberapa tokens memiliki Tidak string.
Google-Extendedadalah terdokumentasi exception: ini ada hanya sebagai sebuah robots.txt control (Gemini training); crawling menggunakan wajar Googlebot strings. Blocking ini tidak memengaruhi Penelusuran 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 satu token. Post-2022 Bingbot looks like sebuah nyata browser except untukbingbot/2.0fragment. - robots.txt matching: sebagian besar-spesifik group wins; sama-token groups gabungkan 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 tidak di semua. - ** string adalah trivially spoofed** (Google panggilan -nya own “often spoofed” (terjemahan) “sering spoofed”). Mendapatkan
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 langsung doc jika sebuah lookup berhenti matching. tidak pernah trust string untuk access control. - sebuah verified permintaan masih tidak proof dari semuanya downstream. permintaan diterima, identity confirmed, konten dirender, halaman terindeks, dan konten retrieved/cited/trained-pada adalah terpisah claims needing terpisah evidence — sebuah log hit proves pertama, tidak ada apa pun else secara otomatis.
- 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 tepat versi/OS/device detail out dari string; Client Hints adalah structured, opt-di replacement — tetapi mereka’re Chrome-spesifik dan jangan substitute untuk crawler verification.
- Serving berbeda konten oleh UA adalah cloaking — sebuah spam-policy violation, dan fragile karena Google melakukan crawl dengan banyak UAs.
Dokumentasi resmi
Utama-sumber documentation dari mesin pencari dan standard.
- Overview dari Google crawler dan fetchers (pengguna agents) — three identification sinyal dan penuh 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 — dua-langkah DNS metode dan IP-range files.
- Apa adalah Googlebot — Googlebot strings dan “often spoofed” (terjemahan) “sering spoofed” note.
- Bagaimana 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) — mengapa 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 opsional, client-supplied field, tidak 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 — apa mendapatkan frozen/coarsened di Chrome’s UA string, dan mengapa.
- Chrome untuk Developers — pengguna-Agent Client Hints — rendah- vs. tinggi-entropy hints dan
Accept-CHopt-di.
Quotes dari sumber
pada—record statements dari Google, Bing, dan RFC. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage pada sumber halaman.
Google — bagaimana crawler identify themselves
«- “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.”
— Google Search Central docs.
Jump to quote
» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian sembilan puluh tujuh, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Google — string adalah spoofed
- “Itu HTTP user-agent request header digunakan oleh Googlebot adalah sering spoofed oleh 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 host command. Verify that the domain name is either googlebot.com, google.com, or googleusercontent.com.”
Jump to quote
- “Google doesn’t post a public list of IP addresses for website owners to allowlist because these IP address ranges can change.” Jump to quote » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus satu, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
«Google — robots.txt token matching » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
«- “All non-matching text is ignored (for example, both googlebot/1.2 and googlebot* are equivalent to googlebot).”
— Google’s robots.txt spec.
Jump to quote
» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus tiga, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Google — Web bot Auth
«- “An experimental cryptographic protocol used to authenticate requests sent by bots.” Jump to quote
- “We don’t sign every request of a particular agent. Be sure that you fall back to the established methods of bot verification.” Jump to quote » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus lima, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
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 penelusuran 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.” Jump to quote » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus sembilan, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Patrick Stox — pada spoofing
- “Banyak SEO tools dan some malicious bots akan pretend untuk menjadi Googlebot. Ini mungkin izinkan them untuk access websites itu try untuk block them.” (terjemahan) “banyak SEO alat dan beberapa malicious bot akan pretend untuk menjadi Googlebot. ini dapat izinkan them untuk access situs web itu try untuk block them.” — dari my Googlebot guide pada Ahrefs. Baca ini
crawler → token → string → verify
reference table. token adalah apa Anda put di robots.txt; verify
hostname adalah apa sebuah genuine permintaan reverse-resolves untuk.
| crawler | robots.txt token | UA string berisi | Verify hostname (reverse DNS) |
|---|---|---|---|
| Googlebot (Penelusuran) | 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 (Tidak 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 | Apa ini berarti |
|---|---|
| sebagian besar-spesifik group wins | sebuah Googlebot group beats * untuk Googlebot |
| sama-token groups gabungkan | Multiple Googlebot groups combine ke satu |
…tetapi tidak pernah gabungkan dengan * | * adalah hanya fallback ketika tidak ada apa pun spesifik matches |
| Case-insensitive | Googlebot = googlebot = GOOGLEBOT |
| versi/wildcards di token ignored | Googlebot/1.2 dan Googlebot* keduanya = Googlebot |
Fast facts
- Token = substring dari UA string (RFC 9309). Tidak seluruh string.
- Mobile dan desktop Googlebot share satu 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 satu line dari curl. Konfirmasi sebuah bot adalah genuine oleh
memeriksa IP ini sebenarnya came dari. pattern adalah yang sama untuk Google dan Bing —
hanya yang diharapkan hostname differs.
Mendapatkan right IP pertama: jika permintaan lulus melalui sebuah proksi terbalik, muat balancer, atau CDN sebelum hitting Anda server, Anda default logs dapat tampilkan proxy’s address, tidak crawler’s. gunakan benar client IP (dari sebuah correctly configured forwarding header) sebelum berjalan either periksa di bawah.
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 tidak end di yang diharapkan domain — googlebot.com /
google.com / googleusercontent.com untuk Google, search.msn.com untuk Bing — atau
forward lookup tidak match original IP, ini tidak nyata bot, Tidak penting apa
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 alih-alih. 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.json«Pull the file, build the CIDR set, and test each logged IP for membership. (I built a Googlebot IP verification tool that does this for you.) Bing publishes its ranges too, and Bing Webmaster Tools has a built-in “Verify Bingbot” check. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus tiga puluh empat, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
pengguna-agent sanity checklist
sebelum Anda tulis UA aturan atau act pada sebuah bot di Anda logs:
- Anda’re targeting token di
robots.txt(e.g.Googlebot), tidak pasting penuh UA string. - Tidak versi angka atau
*di dalamUser-agent:line — mereka’re ignored (Googlebot*melakukan tidak ada apa pun). - Anda haven’t assumed
User-agent: *blocks AdsBot atau Google-Safety — ini tidak; name them explicitly jika Anda perlu. - jika Anda blocked
Google-Extended, Anda memahami ini hanya memengaruhi AI-training gunakan — Googlebot masih melakukan crawl dan indeks untuk Penelusuran. - Anda’re tidak keying access control atau konten pada mentah UA string — ini adalah spoofable.
- apa pun “adalah ini benar-benar Googlebot?” (terjemahan) “adalah ini benar-benar Googlebot?” periksa goes melalui reverse + forward DNS
(
googlebot.com/google.com/googleusercontent.com) atau published IP ranges — Bing melaluisearch.msn.com. - Tidak versi-pinned UA matching anywhere — Chrome
W.X.Y.Zportion perubahan. - Anda’re tidak 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 orang sebenarnya come untuk ini topic untuk: confirming sebuah claimed bot adalah nyata, seeing yang pengguna agents adalah sebenarnya hitting Anda situs, dan memeriksa apa AI crawler adalah diizinkan untuk melakukan.
Googlebot Verifier — alat untuk tepat 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 yang crawler ini claims untuk menjadi (Googlebot, Bingbot, dan others), dan ini berjalan 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 tidak sebuah known crawler. Mendapat sebuah seluruh day dari hits untuk periksa alih-alih satu IP? Paste up untuk 500 IPs atau mentah log lines ke bulk box.
Log File Analyzer — untuk pertanyaan “yang user agents adalah sebenarnya crawling my site?” (terjemahan) “yang pengguna agents adalah sebenarnya 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 penelusuran crawler, dan — bagian itu penting sebagian besar untuk ini topic — berjalan sebuah spoofer report itu names permintaan claiming untuk menjadi sebuah known crawler’s pengguna-agent token tanpa IP untuk back ini up.
AI-crawler Access Checker — untuk newer
family dari tokens itu jangan 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 lebih), menampilkan tepat
aturan itu wins untuk setiap, dan flags apakah sebuah llms.txt ada. berguna untuk
confirming sebuah token like Google-Extended adalah melakukan apa Anda think ini adalah melakukan —
since, sebagai covered di atas, ini memiliki Tidak permintaan string dari -nya own untuk spot di Anda
logs.
Prompts untuk pengguna-agent tasks
Dua prompts dibangun sekitar spesifik traps ini topic sets — spoofing dan
robots.txt token syntax — tidak 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 mentah pengguna-agent strings pulled dari Anda access log (tidak 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 penuh 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] Uji pemahaman Anda: 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
- Apa adalah Googlebot & Bagaimana melakukan ini berfungsi? — penuh Googlebot UA strings, verification metode, dan my IP verification alat.
- terindeks, though blocked oleh robots.txt — di mana UA-based blocking dan robots.txt blocking collide.
- Robots.txt dan SEO: Semuanya Anda perlu Know — bagaimana pengguna-agent groups dan aturan sebenarnya berfungsi.
- Memenuhi baru Web crawler: AI bot adalah Closing di pada mesin pencari bot — mengubah cast dari pengguna agents di Anda logs.
Official / standards
- RFC 9110 — HTTP Semantics, §10.1.5 pengguna-Agent — base definition: opsional, 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 — mengapa browser UA strings adalah getting harder untuk parse, dan apa replaces them.
dari others
- John Mueller — bot itu impersonate Googlebot — pada spoofing dan mengapa 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 bagaimana cryptographic bot signing berfungsi dan apa 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) — lebih luas industry context pada IETF standard dan yang 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 dirilis (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.