1

使用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

任何有助于更好地理解这一点的帮助。

4

1 回答 1

2

查看文档:在失败时返回 IPv4 地址或包含未修改主机名的字符串。

如果它没有找到域或没有相应的 A-Record,它会返回未修改的主机名。

在您的示例中,百度没有为他们的机器人设置 A-Record,在 Linux 中,host命令打印:

Host baiduspider-123-125-71-12.crawl.baidu.com not found: 3(NXDOMAIN)
于 2013-10-25T22:57:05.733 回答