我创建了这个DNS查找脚本,它正在做一些非常奇怪的事情。相关代码:
def resolver
begin
Resolv.each_address(@host) do |ip|
if ip == false
puts "Failed to resolve address"
else
puts ip
end
end
rescue ArgumentError
puts "You must specify a hostname."
end
end
除了一部分外,所有部分都按预期工作。如果我输入废话,例如:fdjafaldjfafbfda,它会成功解析一个地址。每次它都是相同的地址,即使我输入的随机垃圾是不同的。我想知道为什么会这样。我假设它与代码的if ip == false部分有关。
答案 0 :(得分:1)
当我运行示例的稍微修改版本时
require 'resolv'
def resolver(host)
begin
puts "resolving \"#{host}\""
Resolv.each_address(host) do |ip|
if ip == false
puts "Failed to resolve address"
else
puts ip
end
end
rescue ArgumentError
puts "You must specify a hostname."
end
end
resolver(ARGV[0])
带
ruby resolve.rb www.stackoverflow.fake.domain
我没有按预期获得IP地址。如果运行它会给你一个不同的结果,你可能会遇到一个"功能"您的DNS提供商。例如。 Verisign在2003年更改了其查找政策 - 当有人查询不存在的域名时,他被重定向到Verisign广告页面,请参阅Slashdot discussion on Verisign policy from 2003