使用 gethostbyname()
并不总是返回 IP 地址。相反,它会再次返回相同的主机名。这是什么原因呢?起初我以为这是一个假主机名。然后在一个试图捕获一些机器人的函数中使用它,它发现百度使用假主机名,正如我测试的那样,这是一个假主机名。
例:
echo gethostbyname('baiduspider-123-125-71-12.crawl.baidu.com');
返回
baiduspider-123-125-71-12.crawl.baidu.com
但
echo gethostbyname('201-35-178-134.cslce701.dsl.brasiltelecom.net.br');
返回
201.35.178.134
任何有助于更好地理解这一点的帮助。
看看文档:失败时返回 IPv4 地址或包含未修改主机名的字符串。
如果找不到域或没有相应的 A 记录,则返回未修改的主机名。
在您的示例中,百度尚未为其机器人设置 A-Record,在 Linux 中,host
命令打印:
Host baiduspider-123-125-71-12.crawl.baidu.com not found: 3(NXDOMAIN)