我对给定DomainName的NameServer存在很大问题。实际上我想要做的是一个简单的交易,但在互联网上搜索了很多代码片段以及nuget包管理器上的库后,我无法找到解决方案。
我有域名,如" www.example.com"我想通过使用C#代码获取其域服务器。
nuget上有一些图书馆,但这些图书馆都在使用' whois'搜索机制,但我不能信任所有人。因为他们返回的字符串就像网页上的任何搜索结果一样,并且每个字符串结果可能是不同的,因为在幕后使用不同的搜索网站。
一些网络专家说我应该使用" nslookup"通过使用C#检索可信任的结果来命令powershell。
答案 0 :(得分:7)
理论上使用ARSoft.Tools.Net(我还没有真正尝试过),您应该可以请求域的NS记录。
类似的东西:
var resp = DnsClient.Default.Resolve("mydomain.com", RecordType.Ns);
var nsrecords = resp.AnswerRecords.OfType<NsRecord>();
foreach (var record in nsrecords) {
Console.WriteLine(record.NameServer);
}
请注意,这会返回名称服务器主机,但应使用Dns.GetHostAddresses
(或相同的ARSoft.Tools.Net
库)轻松将其转换为IP
这是完全未经测试的,但如果我理解正确的问题,应该是你正在照顾的。
我实际上做了一个测试程序并且运行得很好。完整代码:
using System;
using System.Linq;
using System.Net;
using ARSoft.Tools.Net.Dns;
namespace SOTestDNS
{
class Program
{
static void Main(string[] args)
{
var resp = DnsClient.Default.Resolve("google.com", RecordType.Ns);
var nsrecords = resp.AnswerRecords.OfType<NsRecord>();
foreach (var record in nsrecords)
{
Console.Write(record.NameServer);
foreach (var address in Dns.GetHostAddresses(record.NameServer))
{
Console.WriteLine(" -> " + address);
}
}
}
}
}
结果:
ns1.google.com -> 216.239.32.10
ns3.google.com -> 216.239.36.10
ns4.google.com -> 216.239.38.10
ns2.google.com -> 216.239.34.10
我对绝对没有任何关联我所使用的库。刚刚发现这是最简单的工具,因为你提到使用第三方库是好的。