{"id":15605,"date":"2026-10-30T08:05:00","date_gmt":"2026-10-30T07:05:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=15605"},"modified":"2026-10-26T13:13:14","modified_gmt":"2026-10-26T12:13:14","slug":"verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/","title":{"rendered":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails"},"content":{"rendered":"<p>The User-Agent is a client-supplied label naming the browser or automated program. A user agent such as <code>Googlebot<\/code> starts as a claim supplied by the client. The requested path also comes from the request. The connection address determined by the server is stronger evidence, provided any upstream proxy has been handled correctly. Only then can the address be compared with the named service&#8217;s documented infrastructure.<\/p>\n<p>Two usual checks are a documented DNS naming pattern with forward confirmation and a match against official IP ranges. A registry entry such as \u201cGoogle LLC\u201d or \u201cMicrosoft Corporation\u201d adds context but does not identify a particular crawler.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/crawlerip-reviewed-en-20261025.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Crawler verification: evidence before a verdict\"><figcaption>A range match confirms the published infrastructure category. Historical examples are not a current allowlist.<\/figcaption><\/figure>\n<h2>DNS verification: name, boundary and forward check<\/h2>\n<p>A reverse lookup returns a PTR name for an IP address. That name alone is insufficient: the address block&#8217;s administrator can set a PTR without controlling the domain named in the record. Verification therefore needs three steps:<\/p>\n<ol><li>The PTR lookup starts with the actual source address.<\/li><li>The name is compared with the currently documented pattern for the appropriate crawler category. Google&#8217;s common crawlers, special crawlers and user-triggered fetchers are distinct categories.<\/li><li>The accepted name is resolved through A or AAAA records. The response must contain the original address.<\/li><\/ol>\n<p>The domain boundary matters: <code>crawl.example.googlebot.com<\/code> is beneath <code>googlebot.com<\/code>; <code>googlebot.com.example.org<\/code> is not. An arbitrary successful DNS round trip establishes an address-to-name relationship, not Googlebot identity. A <code>google.com<\/code> suffix alone is also insufficient for that specific classification.<\/p>\n<p>This method does not require a downloaded range list, but still needs maintenance. Naming patterns can change, DNS responses expire, and lookup failures must remain distinct from negative responses.<\/p>\n<h2>Range lists and the correct category<\/h2>\n<p>Official JSON files contain IPv4 and, for some services, IPv6 prefixes in CIDR notation, such as <code>66.249.66.0\/27<\/code>. Verification tests whether an address falls within a network. A plain text comparison is insufficient.<\/p>\n<p>Google now links to <code>common-crawlers.json<\/code> for common crawlers, a separate special-crawler list, and several lists for user-triggered fetchers and agents. A match first establishes membership of the published infrastructure category. A shared list does not necessarily distinguish every individual user agent.<\/p>\n<p>OpenAI publishes separate lists for GPTBot, OAI-SearchBot and ChatGPT-User. The purposes differ: model training, search and certain user actions. A missing PTR is therefore not automatically suspicious. For services without a documented DNS verification method, the corresponding official list is the relevant evidence.<\/p>\n<h2>What the historical sample establishes<\/h2>\n<p>The saved dataset from <strong>5 September 2026<\/strong> contains twelve queried lists with 2,560 prefix entries; 2,143 belonged to four Google lists available at the time. These totals were recalculated from the saved counts during this revision. Prefix entries are neither unique IP addresses nor necessarily disjoint networks. The count does not reliably establish traffic volume, architecture or update frequency.<\/p>\n<p>For <code>20.171.207.1<\/code> and <code>52.230.152.1<\/code>, the historical output records GPTBot range matches without a resolved PTR. The saved field does not distinguish an absent PTR from a lookup failure. The Microsoft registry entry also does not prove a particular cloud tenancy agreement. All address findings remain historical observations, not a current allowlist.<\/p>\n<p><code>8.8.8.8<\/code> illustrates the difference between organisation and function: Google documents this address as a public DNS resolver. A successful DNS round trip and Google registry entry do not make it Googlebot. \u201cGooglebot\u201d was the selected test claim in that check, not evidence of an actual HTTP request from the resolver.<\/p>\n<p><code>64.233.173.1<\/code> appeared in the historical Google user-triggered fetcher list and had a corresponding <code>google-proxy<\/code> name. That establishes neither a specific visitor action nor automatic Googlebot identity. The tool&#8217;s classification was too broad at precisely this point.<\/p>\n<h2>Identity and access policy are separate decisions<\/h2>\n<p><code>robots.txt<\/code> controls cooperative crawlers and remains useful for that purpose. It is not an access barrier. A verified operator does not mean every service follows the same robots.txt rules: Google distinguishes common crawlers, special cases and user-triggered fetchers. Googlebot does not support <code>crawl-delay<\/code>, so that directive does not distinguish Googlebot from a user-triggered fetch.<\/p>\n<p>Missing or contradictory verification does not automatically establish malicious behaviour. Depending on the purpose, unwanted requests can be addressed through authentication, rate limits or rules at the web server or upstream protection layer. An IP block is one option, not a complete defence. There is no universal shared crawl budget covering every operator.<\/p>\n<h2>A reproducible manual cross-check<\/h2>\n<p>The example uses an IPv4 address shown in Google&#8217;s documentation. The PTR name must come from the actual response; category and name-boundary checks precede forward resolution. Downloading the JSON file alone does not perform a CIDR match.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-function\">dig<\/span> +short <span class=\"cbb-attr\">-x<\/span> 66.249.66.1\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">dig<\/span> +short A crawl-66-249-66-1.googlebot.com\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">dig<\/span> +short AAAA crawl-66-249-66-1.googlebot.com\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">curl<\/span> <span class=\"cbb-attr\">--fail<\/span> <span class=\"cbb-attr\">--show-error<\/span> <span class=\"cbb-attr\">--silent<\/span> <span class=\"cbb-attr\">--location<\/span> <span class=\"cbb-attr\">--max-time<\/span> <span class=\"cbb-number\">20<\/span> \\\n<\/span><span class=\"cbb-line\">  https:\/\/developers.google.com\/static\/crawling\/ipranges\/common-crawlers.json<\/span><\/code><\/pre><\/figure>\n<p>The <a href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/crawler-ip-verifier-googlebot-bingbot-gptbot\/\">Crawler IP Verifier<\/a> collects DNS, range and registry findings. Two limitations were reproduced during this revision: a forward-confirmed Google proxy name could be classified too broadly as Googlebot, and a failed list download could still produce a \u201cforged\u201d verdict. Individual evidence and freshness therefore matter more than the summary label. The cache reloads on demand after approximately 24 hours; this does not guarantee a successful update every day.<\/p>\n<div class=\"lw-faq\"><h2>Questions and answers<\/h2>\n<h3>Which address applies behind several proxies?<\/h3>\n<p>The immediate connection peer must first be an explicitly trusted proxy. The forwarded chain is then processed from right to left while each current sender is trusted to report the preceding address. The result is neither universally the rightmost nor the leftmost entry. An arbitrary incoming <code>X-Forwarded-For<\/code> header must not replace the source address.<\/p>\n<p>Apache provides <code>mod_remoteip<\/code> for this purpose. Trust boundaries need suitable <code>RemoteIPTrustedProxy<\/code> or <code>RemoteIPInternalProxy<\/code> settings; <code>RemoteIPHeader<\/code> alone is not a secure configuration. The module can then use the verified client address for logging and access control.<\/p>\n<h3>Is DNS verification needed on every request?<\/h3>\n<p>Synchronous DNS checks make the request wait for the DNS answer. This adds latency and can stall during failures. A local range check, time-limited DNS caches and later log analysis are usually more suitable. Processing is not free: timeouts, cache age and failure states require planning. Apache disables general HostnameLookups by default.<\/p>\n<h3>What does IPv6 require?<\/h3>\n<p>Verification must support IPv6 prefixes and the <code>ip6.arpa<\/code> reverse zone. Equivalent address representations need normalisation: <code>2001:db8::1<\/code> and <code>2001:0db8:0:0:0:0:0:1<\/code> identify the same address. Plain string equality can incorrectly fail.<\/p>\n<h3>What does a missing range match mean?<\/h3>\n<p>Initially, only that the list used contains no match. A sound assessment also needs the correct category, a successful download, trusted provenance and the copy&#8217;s age. Provider publication time, local retrieval time and last successful retrieval are different facts. A documented DNS check can provide additional evidence where available; otherwise a failed check remains \u201cnot verified\u201d rather than automatically \u201cforged\u201d.<\/p><\/div>\n<div class=\"lw-quellen\"><h2>Sources<\/h2><ul><li><a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/overview-google-crawlers\" target=\"_blank\" rel=\"noopener noreferrer\">Google: crawler categories<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/search\/docs\/crawling-indexing\/verifying-googlebot\" target=\"_blank\" rel=\"noopener noreferrer\">Google: verifying requests<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/crawling\/docs\/robots-txt\/robots-txt-spec\" target=\"_blank\" rel=\"noopener noreferrer\">Google: robots.txt<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/speed\/public-dns\/docs\/using\" target=\"_blank\" rel=\"noopener noreferrer\">Google Public DNS<\/a><\/li><li><a href=\"https:\/\/developers.openai.com\/api\/docs\/bots\" target=\"_blank\" rel=\"noopener noreferrer\">OpenAI: crawlers<\/a><\/li><li><a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_remoteip.html\" target=\"_blank\" rel=\"noopener noreferrer\">Apache: mod_remoteip<\/a><\/li><li><a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/core.html#hostnamelookups\" target=\"_blank\" rel=\"noopener noreferrer\">Apache: HostnameLookups<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9309.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9309: Robots Exclusion Protocol<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>Crawler verification requires a trustworthy source address, the correct service category and current DNS or range evidence. Missing evidence does not automatically mean a forged crawler.<\/p>\n","protected":false},"author":1,"featured_media":18810,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[127],"tags":[91094,91099,91115],"class_list":["post-15605","post","type-post","status-publish","format-standard","hentry","category-tutorials-en-digital-marketing","tag-seo","tag-server-administration","tag-web-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"How reverse DNS and the published ranges verify a crawler, which of twelve lists cover which bot, and why an address at Google need not be Googlebot.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"How reverse DNS and the published ranges verify a crawler, which of twelve lists cover which bot, and why an address at Google need not be Googlebot.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-30T07:05:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-15605-verifying-crawler-addresses-reverse--k.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails\",\"datePublished\":\"2026-10-30T07:05:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/\"},\"wordCount\":1095,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-15605-verifying-crawler-addresses-reverse--k.png\",\"keywords\":[\"SEO\",\"Server Administration\",\"Web Security\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/\",\"name\":\"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-15605-verifying-crawler-addresses-reverse--k.png\",\"datePublished\":\"2026-10-30T07:05:00+00:00\",\"description\":\"How reverse DNS and the published ranges verify a crawler, which of twelve lists cover which bot, and why an address at Google need not be Googlebot.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-15605-verifying-crawler-addresses-reverse--k.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-15605-verifying-crawler-addresses-reverse--k.png\",\"width\":1200,\"height\":630,\"caption\":\"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/tutorials-en-digital-marketing\\\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails | Lukas Wojcik","description":"How reverse DNS and the published ranges verify a crawler, which of twelve lists cover which bot, and why an address at Google need not be Googlebot.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/","og_locale":"en_US","og_type":"article","og_title":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails | Lukas Wojcik","og_description":"How reverse DNS and the published ranges verify a crawler, which of twelve lists cover which bot, and why an address at Google need not be Googlebot.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-30T07:05:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-15605-verifying-crawler-addresses-reverse--k.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails","datePublished":"2026-10-30T07:05:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/"},"wordCount":1095,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-15605-verifying-crawler-addresses-reverse--k.png","keywords":["SEO","Server Administration","Web Security"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/","name":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-15605-verifying-crawler-addresses-reverse--k.png","datePublished":"2026-10-30T07:05:00+00:00","description":"How reverse DNS and the published ranges verify a crawler, which of twelve lists cover which bot, and why an address at Google need not be Googlebot.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-15605-verifying-crawler-addresses-reverse--k.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-15605-verifying-crawler-addresses-reverse--k.png","width":1200,"height":630,"caption":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/tutorials-en-digital-marketing\/verifying-crawler-addresses-reverse-dns-published-ranges-and-where-each-fails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Verifying Crawler Addresses: Reverse DNS, Published Ranges, and Where Each Fails"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=15605"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15605\/revisions"}],"predecessor-version":[{"id":27258,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15605\/revisions\/27258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/18810"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=15605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}