EconReset(Whois::ConnectionError)-试图在Ruby中查询Whois时出错

EconReset(Whois::ConnectionError)-试图在Ruby中查询Whois时出错,ruby,whois,whois-ruby,Ruby,Whois,Whois Ruby,我正在用Ruby编写一个简单的程序来检查是否有域列表。基本上,它在列表中循环,并使用以下函数进行检查 require 'rubygems' require 'whois' def check_domain(domain) c = Whois::Client.new c.query("google.com").available? end 程序不断出错(即使我在google.com上硬编码),并打印下面的消息。考虑到这个程序有多简单,我已经没有主意了——有什么建议吗 /Library/

我正在用Ruby编写一个简单的程序来检查是否有域列表。基本上,它在列表中循环,并使用以下函数进行检查

require 'rubygems'
require 'whois'

def check_domain(domain)
  c = Whois::Client.new
  c.query("google.com").available?
end
程序不断出错(即使我在google.com上硬编码),并打印下面的消息。考虑到这个程序有多简单,我已经没有主意了——有什么建议吗

/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.rb:165:in `query_the_socket': Errno::ECONNRESET: Connection reset by peer (Whois::ConnectionError)
from /Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/verisign.rb:41:in `request'
from /Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.rb:113:in `query'
from /Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.rb:150:in `buffer_start'
from /Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.rb:112:in `query'
from /Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/client.rb:90:in `query'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:62:in `timeout'
from /Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/client.rb:87:in `query'
from checker.rb:7:in `check_domain'
from checker.rb:14
from checker.rb:11:in `each'
from checker.rb:11

尝试使用
超时
参数:

irb(main):002:0> c = Whois::Client.new(:timeout => 100) # 100 seconds
irb(main):003:0> c.query("google.com").available?
=> true

对这个问题有两种可能的解释:

  • 您位于防火墙/代理之后,客户端无法访问服务器
  • (更现实)您的请求正在被阻止。一些.COM服务器(如GoDaddy)用于重置连接,以防止多次查询。看见您可以通过限制对同一服务器的请求数量来解决此问题

  • 它以前工作过吗? 您向whois服务器发出的请求太多。慢下来

    以前没有工作过?
    你无法联系到谁是服务器

    Simone,第一个很好的回复。我最近也遇到过这个问题,这对我很有帮助。如果我只对域可用性而不是完整的whois信息感兴趣,那么有没有比使用whois gem更好的方法来检查它呢@你应该提出一个新问题。我在你提到的问题中发布了一个答案,我在这里解释了为什么DNS检查不能负担得起。确定域可用性的唯一方法是使用库或web服务运行WHOIS查询。看一看,它是由whoisgem提供动力的,但它提供了一个httpapi。我现在看到你的答复了。我的利率限制现在似乎越来越严格了。我已经在两天的时间里与Whois gem进行了大约82/730次可用性检查。这听起来是极端的还是正常的?Simone,我刚刚在你的个人邮件(你个人网站上的邮件)中给你发了一些关于RoboWhois的后续问题。谢谢你的帮助,不客气。看起来问题的根源是因为您正在从Heroku发送查询,并且。。。您可能不是执行WHOIS请求的唯一Heroku用户