回答
嘗試安裝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