You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby Whois解析工具无法获取.dev/.co域名部分信息的解决方案咨询

解决方案

一、先搞清楚.co域名的问题出在哪

  • 先跑这段代码手动获取.co域名的whois原始响应,确认过期日期字段到底有没有:
    client = Whois::Client.new
    response = client.lookup("example.co")
    puts response.to_s
    
    看输出里有没有Registry Expiry Date、Expiration Date这类字段。如果原始响应里有,但解析器没提取到,就是解析器规则没覆盖;如果原始响应里也没有,要么是whois服务器返回的信息不全,要么得换个whois服务器试试(比如.co的官方whois服务器是whois.nic.co)。
  • 查一下whois-parser的源码,看看有没有.co的解析器。去gem的lib/whois/parser/parsers目录下,找有没有whois_nic_co.rb这类文件。没有的话就得自己写;有的话可能是规则过时了,得更新正则或者字段映射。

二、自己写/更新解析器的步骤

1. 新建解析器文件

在你的项目里建个自定义解析器文件(或者fork whois-parser gem改),比如lib/whois/parser/parsers/whois_nic_co.rb,基础结构大概是这样:

module Whois
  class Parser
    class WhoisNicCo < Base
      property_supported :expires_on do
        if content_for_scanner =~ /Registry Expiry Date:\s+([\d\-T:Z]+)/
          Time.parse(Regexp.last_match(1))
        end
      end

      # 其他需要的属性,比如创建时间、更新时间,照着这个格式加
      property_supported :created_on do
        if content_for_scanner =~ /Creation Date:\s+([\d\-T:Z]+)/
          Time.parse(Regexp.last_match(1))
        end
      end
    end
  end
end

2. 注册解析器

得让whois-parser知道这个解析器对应哪个whois服务器,在初始化代码里加一行:

Whois::Parser.register_parser(:whois_nic_co, Whois::Parser::WhoisNicCo)

或者直接在whois-parser gem的lib/whois/parser.rb里的服务器映射里加对应关系。

3. 测试解析器

写段代码验证一下:

client = Whois::Client.new
response = client.lookup("example.co")
parser = Whois::Parser.new(response)
puts parser.expires_on # 正常应该输出日期,不是nil

三、解决.dev域名的AttributeNotImplemented错误

这个错误就是因为whois-parser没给.dev域名做解析器,所以识别不了属性。你可以照着.co的步骤来:

  1. 先获取.dev域名的whois原始响应,搞清楚字段格式;
  2. 新建对应的解析器文件,实现你需要的属性(比如过期时间、域名状态);
  3. 把解析器注册到.dev的whois服务器(whois.nic.dev)。

四、新手写解析器的小提示

  • 先参考已有的解析器代码,比如whois_com.rb、whois_net.rb的结构,照猫画虎就行;
  • 正则表达式要匹配whois响应里的实际格式,注意空格、大小写、日期格式(比如ISO8601那种带T和Z的);
  • 如果是fork了whois-parser改的,测试没问题可以给官方提PR,帮到其他用户;
  • 不想改gem源码的话,就在自己项目里加载自定义解析器,覆盖默认逻辑就行。

内容的提问来源于stack exchange,提问作者Wasswa Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:42:35