【问题标题】:Check domain availability Java检查域可用性 Java
【发布时间】:2010-02-03 21:48:42
【问题描述】:

Java 中是否有相对简单的方法来检查域是否可用?

我需要一个可靠的方法,所以只检查是否可以建立连接是不够的。

【问题讨论】:

    标签: java dns whois


    【解决方案1】:

    域可用性取决于是否拥有 whois 客户端。下面是一个用 Java 实现 whois 客户端的链接:

    Java Whois Client

    您需要解析结果 - 根据您使用的 whois 服务器,您可能(将)返回不同的格式。最好的办法是为 OpenSRS 等商业 whois/注册服务付费。他们有一个广泛的 API,您可以将其用作注册经销商。以下是 API 文档:

    http://opensrs.com/resources/documentation/opensrs_xmlapi.pdf

    HTH,

    -aj

    【讨论】:

      【解决方案2】:

      这里有一个很好的 Whois Java 客户端:

      https://github.com/ethauvin/Whois

      您可以从命令行运行它或直接与它交互:

      // don't include the www        
      Whois.main(new String[] {"skytouch.com"});
      

      【讨论】:

      • 它在 GPL 许可下,所以你可以随时修改它来做你想做的事,有一个 Whois.java 源文件和一个属性文件来指定 Whois 服务器,就是这样!
      【解决方案3】:

      另一个解决方案是使用 Apache Commons lib。简化示例:

      import org.apache.commons.net.whois.WhoisClient;
      
      public String getWhois(String domainName){
      
          WhoisClient whois = new WhoisClient();
      
          whois.setConnectTimeout(10000);
          whois.setDefaultTimeout(10000);
      
          whois.connect("whois.verisign-grs.com", 43);
      
          String domainWhois = whois.query(domainName);
      
          whois.disconnect();
      
          return domainWhois;
      }
      

      检查响应是否等于“不匹配”。 Whois 服务器、超时长度和无可用性响应因扩展而异,因此您应该为它们准备额外的集合。

      可以找到 Whois 服务器列表:

      如果您尝试使查询并发,您肯定会得到 whois 响应“您已达到配置的速率限制”。或代码中的显式异常,因此您应该在睡眠后重复查询。

      【讨论】:

        【解决方案4】:

        对域执行 DNS 查找是最简单的解决方案。所有可用域都没有 DNS 记录,并且大多数注册商在注册时会分配一个默认 DNS 条目。

        WHOIS 查找将是您最可靠的解决方案,尤其是在 ISP 欺骗自己的服务器(带有充满广告的“未找到域”页面)以查找任何丢失的域名之后。

        【讨论】:

        • 不,使用 DNS 是一个非常糟糕的主意。许多 TLD(例如 .FR)具有已注册但未发布的域(.COM 的“保留”域)。
        • 我不同意。有时这是个好主意。如果您想知道某个 DOMAIN 不可用,那么进行 DNS 查找会很快告诉您它是否不可用。如果 DNS 查找失败,则在域没有 DNS 记录但已注册的情况下,您会执行慢得多的 WHOIS 查找。如果性能是一个问题,这是一个很好的方法。
        • 如果 TLD 使用通配符,则您的算法是错误的,这种情况会发生。
        • @bortzmeyer Stéphane 是对的。 . .COM 过去确实使用过通配符,尽管时间很短(SiteFinder 惨败)。您使用的递归 DNS 服务器可能在撒谎并引入了通配符。 .WS 的注册表(以及其他几个,请参阅 Wikipedia)使用通配符。等等。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 2020-06-24
        • 1970-01-01
        相关资源
        最近更新 更多