InetAddress.getByName returns "akamaitechnologies.com 对于不存在的主机

InetAddress.getByName returns "akamaitechnologies.com for non-existent host

我发现 NOT 的主机名解析始终存在 returns 属于“akamaitechnologies.com”的地址(例如 23.221.222.250) .对于 存在的主机, 可以正常工作。

代码:

InetAddress addr = InetAddress.getByName( "NON-EXISTING.com" );

InetAddress 或 Google 搜索的文档几乎没有帮助。据称应该发生 UnknownHostException 但我没有发生。

为什么会这样?

这不是 Android/Java 缺陷。事实证明这是一个DNS问题。也就是说,我的 AT&T phone 使用 AT&T 的默认 DNS 服务器 (sbcglobal.net)。这个P.O.S。服务器 returns 一个有效的 IP 地址 即使对于不存在的域 。在我更改为“dns.google”(8.8.8.8)后,一切正常。

这种 DNS 欺骗是一件坏事,因为许多应用依赖于未知主机异常来检测错误输入的域,例如在电子邮件地址中。