Используйте библиотеку Ruby 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:dmarc-yahoo-rua@yahoo-inc.com, mailto:dmarc_y_rua@yahoo.com;"
getresources
возвращает массив экземпляров запрошенного имени класса записи (Resolv::DNS::Resource::IN::TXT
). Здесь я возвращаю nil, если записи TXT или имя хоста не были найдены, в противном случае я сопоставляю записи, вызываю 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