0

这里是相当新的程序员,我已经在这方面进行了黑客攻击和谷歌搜索一个星期。

这是我正在尝试做的逻辑:

输入 URL 的 .txt 文件并将这些 URL 修剪到根域。然后检查这些根域是否存在 DNS 记录。然后对没有 DNS 记录的域进行 whois 查找。然后打印出可用的域。

第二部分——检查 DNS 记录——让我彻底被难住了。

这是我的代码:

    # encoding: utf-8
require 'domainatrix'
require 'addressable/uri'
#require 'Whois'
require 'Resolv'

urls = Array.new
cleaned = Array.new

urls = File.readlines(*ARGV)

urls.each do |url|
  url = url.to_s
  url = Domainatrix.parse(url)
  cleaned << url.domain_with_tld
end

cleaned.uniq!

# puts cleaned

cleaned.each do |url|
  url = url.to_s
  Resolv.getaddress(url)
end

当我使用包含 10 个 URL 的简单 test.txt 文件运行它时,我收到如下错误消息:

/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/Resolv.rb:93:in `getaddress': no address for google.com (Resolv::ResolvError)
        from /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/Resolv.rb:43:in `getaddress'
        from rocker_two.rb:26:in `block in <main>'
        from rocker_two.rb:24:in `each'
        from rocker_two.rb:24:in `<main>'

现在,如果我跳到 irb 并执行以下简单的操作:

>> Resolv.getaddress "google.com"
=> "173.194.43.4"

它工作正常。

在我看来,麻烦在于让 Resolv 接受数组中的每个对象作为字符串?我这么说是因为我从运行文件脚本得到的错误消息没有google.com引号,而我尝试过的这个脚本的其他变体给出了带引号的错误消息。

是的,尽管如此,这可能是货物崇拜节目的展览 A。

我意识到我是新手,我可能犯了一些简单的系统性错误。因此,如果有人能指出我正确的方向,让我走上正确的道路,我会非常非常感激!

干杯,凯尔

PS 长期阅读SO,第一次来电。

4

0 回答 0