我正在Ruby中编写一个简单的程序来检查是否存在一个域列表。基本上它循环遍历一个列表,并使用以下函数进行检查。ECONNRESET(Whois :: ConnectionError) - 尝试在Ruby中查询Whois时出错
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
西蒙娜,首先很好的答复。我最近自己遇到了这个问题,这对我有很大的帮助。如果我只对域名可用性感兴趣,而不是全面的whois信息,那么我应该检查一下比使用whois gem更好的方式吗? [也许这样](http://stackoverflow.com/a/1780698/574190)? – 2012-03-21 01:48:07
@duckyfuzz你应该开一个新的问题。我在你引用的问题中发布了一个答案,我解释了为什么DNS检查不便宜。确定域可用性的唯一方法是使用库或Web服务运行WHOIS查询。看看[RoboWhois](http://www.robowhois.com/),它由whois gem提供支持,但它提供了一个HTTP API。 – 2012-03-21 08:45:21
哎呀,我没有读过第一个答案。我现在看到你的回复。我的费率限制现在似乎变得非常严重。我在2天的时间内对Whois gem进行了约82/730次可用性检查,因此获得了“Errno :: ECONNRESET”。这听起来极端还是正常? – 2012-03-21 15:21:59