【问题标题】:Get a domain name basing on the IP address根据IP地址获取域名
【发布时间】:2023-04-08 12:30:01
【问题描述】:

如果我有 IP 地址,我需要获得一个域名(例如,我输入 209.85.129.103 并且程序应该会发现这是 Google 地址)

据我所知是获取主机名:

IPHostEntry IpToDomainName = Dns.GetHostEntry("209.85.129.103");
string HostName = IpToDomainName.HostName; //it returns "fk-in-f103.1e100.net"

但这不是我想要的。 我不知道如何实现。任何想法都会有所帮助

【问题讨论】:

  • Google 拥有 1e100.net,所以这是一个 Google 地址。

标签: .net


【解决方案1】:

我猜你说的是从主机名中获取顶级域名? TLD 只是完整主机名的最后两个点分隔部分,因此函数如下所示:

public static string GetTopLevelDomain(string hostName)
{
    int lastDot = hostName.LastIndexOf('.');
    if (lastDot < 0)
        return hostName;
    int previousDot = hostName.LastIndexOf('.', lastDot - 1);
    return (previousDot >= 0) ? hostName.Substring(previousDot + 1) : hostName;
}

如果您实际上是想弄清楚谁拥有该域,则必须使用 whois 查询。这是whois example in C#。信息只是以纯文本形式返回;请记住,它甚至不一定会告诉您拥有它的真实个人或公司,有时这些信息是私密的,您将获得的只是注册商(如 GoDaddy)。

另外,不同的whois服务器会给出不同的信息和不同的区域;例如,您可以使用 ARIN 获取美国域的信息,但对于欧洲域,您需要使用 RIPE。老实说,我希望这不是你想要做的,因为你会发现它是一个相当大的焦油坑。没有简单的方法可以可靠地确定 Domain XCompany Y 所有。

【讨论】:

  • 好的,但是用户应该知道那是谷歌
  • 我正在开发一个小型 HTTP 监视器,所以我需要知道用户输入“209.85.129.103”他会知道它是 google.com
  • @Tony:只有当209.85.129.103 的主机名实际上是google.com 或其子域之一时,您才能这样做。正如我所解释的,您可以尝试使用 whois 查找来获取更多信息,但我不得不说您正在下沉的船上 - 找到正确的 whois 服务器并解析其输出的过程非常复杂并且非常错误 -很容易,因为没有标准来管理它的输出。我想你可以妥协并尝试从 arin.net 解析 whois 文本,如果失败,只显示原始主机名或 IP。
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2018-04-10
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多