回答
尝试安装dnsruby宝石。
该代码被积极维护,并在一些重要的生产系统中使用。
require 'rubygems'
require 'dnsruby'
include Dnsruby
# Use the system configured nameservers to run a query
res = Dnsruby::Resolver.new
ret = res.query("google.com", Types.TXT)
print ret.answer
(代码在MacOS X测试 - 打印谷歌SPF记录)
又见@亚历克斯的答案是更地道红宝石 - 阿莱克斯是dnsruby
作者。
尝试Net::DNS宝石。
下面是一个例子:
result = Net::DNS::Resolver.start("google.com", Net::DNS::TXT)
values = result.each_mx.map { |r| r.txt }
# "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all "
用于安装和使用的进一步说明可以上面链接GitHub的页上找到。
我尝试使用Net :: DNS :: Resolver.start(“waycoolblog.com”,Net :: DNS :: TXT)。但我数数得到txt字段的值。 我应该如何使用它? – anusuya 2010-05-26 13:45:25
我认为你正确地使用它,但它似乎损坏,并不实际返回TXT记录,因为它应该。抱歉。 – 2010-05-26 14:34:14
require 'dnsruby'
Dnsruby::DNS.open {|dns|
dns.each_resource("google.com", "TXT") {|rr| print rr}
# or
print dns.getresource("google.com", "TXT")}
}
使用红宝石STDLIB Resolv::DNS
库,而无需安装宝石:
require 'resolv'
txt = Resolv::DNS.open do |dns|
records = dns.getresources("_dmarc.yahoo.com", Resolv::DNS::Resource::IN::TXT)
records.empty? ? nil : records.map(&:data).join(" ")
end
#=> "v=DMARC1; p=reject; sp=none; pct=100; rua=mailto:[email protected], mailto:[email protected];"
getresources
返回请求记录类名(Resolv::DNS::Resource::IN::TXT
)的实例组成的数组。在这里,如果没有找到TXT记录或主机名,我将返回nil,否则我会映射记录,请拨打data
以获取值,然后将它们结合在一起。
任何DNS记录类型[TXT,NS,CNAME,MX,...]也可以通过替换上例中的TXT来查询。
TXT记录是“非结构化”的,用于主机名称的增强型数据,如SPF,DKIM,DMARC配置。实际上,可能只有一个TXT记录,但RFC没有说明可以有多少。
在阅读文档:http://www.ruby-doc.org/stdlib-2.1.1/libdoc/resolv/rdoc/index.html
很高兴看到有人提出了一个内置的解决方案。谢谢! – siannopollo 2016-07-15 20:37:55
Ruby提供 “RESOLV” 线程感知的DNS解析库。 Resolv可以同时处理多个DNS请求,而不会阻塞整个Ruby解释器。
为获得DNS MX记录
require "resolv"
Resolv::DNS.open do |dns|
ress = dns.getresources "infoir.com", Resolv::DNS::Resource::IN::MX
p ress.map { |r| [r.exchange.to_s, r.preference] }
end
为获得DNS A记录
require "resolv"
Resolv::DNS.open do |dns|
ress = dns.getresources "infoir.com", Resolv::DNS::Resource::IN::A
p ress.map { |r| [r.exchange.to_s, r.preference] }
end
为获得DNS TXT记录
require "resolv"
Resolv::DNS.open do |dns|
ress = dns.getresources "infoir.com", Resolv::DNS::Resource::IN::TXT
p ress.map { |r| [r.exchange.to_s, r.preference] }
end
- 1. 获取DNS TXT记录
- 2. DNS中的TXT记录
- 3. 移动DNS TXT记录
- 4. dns txt记录带出记录名称?
- 5. 重复的DNS TXT/SPF记录
- 6. DNS - txt和spf记录(php邮件())
- 7. 如何创建DNS TXT记录?
- 8. Node.js - 无法获取DNS SOA记录
- 9. 获取所有的DNS记录
- 10. 获取DNS记录的ttl值
- 11. python dns.resolver获取DNS记录类型
- 12. 使用JNDI获取DNS SRV记录
- 13. Ruby On Rails:获取记录
- 14. DNS TXT使用非默认DNS服务器记录查询
- 15. 应用程序可以读取DNS TXT记录吗?
- 16. 如何在Ruby on Rails中获取记录'某个记录'?
- 17. 通过Node.js中的dns txt记录进行网站验证
- 18. 从DNS捕获获得记录
- 19. Objective-C:DNS的TXT记录
- 20. 如何获取python域中的DNS记录?
- 21. c查询txt记录
- 22. PHP的DNS记录
- 23. Qt4和DNS记录
- 24. DNS记录列表
- 25. PHP获得DNS记录而不缓存
- 26. 添加DNS TXT记录会减慢加载时间吗?
- 27. 如何从Java使用DNS检索多个TXT记录?
- 28. DNS txt记录无效的数据包,FORMERR
- 29. 如何为配置添加TXT DNS记录Opendkim
- 30. 域名验证后,您可以删除Firebase DNS TXT记录吗?
谢谢,它的作品完美。 – anusuya 2010-05-27 06:21:02
链接不起作用。使用此[链接](https://github.com/alexdalitz/dnsruby) – Penguin 2016-07-28 01:39:39