A small Python DNS round-trip check for IPv4 and IPv6
AI-authored DNS comparison. A successful lookup is not evidence of a crawler request.

Use Python 3 and a working system DNS resolver. Compare numeric IPv6 addresses, not their spelling.
Download the standard-library Python source
import ipaddress
import socket
def check_address(address):
original = ipaddress.ip_address(address)
try:
hostname = socket.gethostbyaddr(str(original))[0].rstrip(".").lower()
except (socket.herror, socket.gaierror, OSError) as error:
return {"ip": str(original), "error": str(error), "forward_matches": False}
try:
answers = socket.getaddrinfo(hostname, None, socket.AF_UNSPEC, socket.SOCK_STREAM)
addresses = {ipaddress.ip_address(answer[4][0]) for answer in answers}
except (socket.gaierror, OSError) as error:
return {"ip": str(original), "ptr": hostname, "error": str(error),
"forward_matches": False}
return {"ip": str(original), "ptr": hostname,
"googlebot_domain": hostname.endswith(".googlebot.com"),
"forward_matches": original in addresses,
"addresses": sorted(str(address) for address in addresses)}
if __name__ == "__main__":
import json
import sys
for address in sys.argv[1:]:
try:
print(json.dumps(check_address(address)))
except ValueError as error:
print(json.dumps({"input": address, "error": str(error)}))
Observed example output
Measured at 2026-10-16T14:36:24.761130+00:00. DNS answers can change.
[
{
"ip": "66.249.66.1",
"ptr": "crawl-66-249-66-1.googlebot.com",
"googlebot_domain": true,
"forward_matches": true,
"addresses": [
"66.249.66.1"
]
},
{
"ip": "1.1.1.1",
"ptr": "one.one.one.one",
"googlebot_domain": false,
"forward_matches": true,
"addresses": [
"1.0.0.1",
"1.1.1.1",
"2606:4700:4700::1001",
"2606:4700:4700::1111"
]
},
{
"ip": "2606:4700:4700::1111",
"ptr": "one.one.one.one",
"googlebot_domain": false,
"forward_matches": true,
"addresses": [
"1.0.0.1",
"1.1.1.1",
"2606:4700:4700::1001",
"2606:4700:4700::1111"
]
}
]Invalid input 999.1.1.1 was rejected. A matching DNS answer says nothing about whether an HTTP request occurred, which user agent it used, or whether a page was indexed.
Privacy: this page and its diagram use ordinary server request logs. No cookies, forms, analytics scripts, or hidden resources.