你的位置:首页 > 软件开发 > ASP.net > [爬虫学习笔记]C#基于ARSoft.Tools.Net的DNS解析模块(半成品)

[爬虫学习笔记]C#基于ARSoft.Tools.Net的DNS解析模块(半成品)

发布时间:2016-09-11 02:00:04
最近在做爬虫的作业,今天学习的内容是关于DNS解析模块的制作的。使用的库为ARSoft.Tools.Net,它是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client、DNS Server接口。 ...

      最近在做爬虫的作业,今天学习的内容是关于DNS解析模块的制作的。使用的库为ARSoft.Tools.Net,它是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client、DNS Server接口。使用该接口可轻松实现DNS客户请求端及服务器解析端。项目地址:http://arsofttoolsnet.codeplex.com/,Nuget包地址:https://www.nuget.org/packages/ARSoft.Tools.Net/。

首先引入Nuget包:

 

Install-Package ARSoft.Tools.Net

 

 

下面开始具体实现:

/// /// DNS解析/// /// DNS服务器IP/// 解析超时时间/// 解析网址/// 是否解析成功/// 解析到的IP信息public static IPAddress DnsResolver(string dnsServer, int timeOut, string url, out bool isSuccess){  //初始化DnsClient,第一个参数为DNS服务器的IP,第二个参数为超时时间  var dnsClient = new DnsClient(IPAddress.Parse(dnsServer), timeOut);  //解析域名。将域名请求发送至DNS服务器解析,第一个参数为需要解析的域名,第二个参数为  //解析类型, RecordType.A为IPV4类型  //DnsMessage dnsMessage = dnsClient.Resolve("www.sina.com", RecordType.A);  var s = new Stopwatch();  s.Start();  var dnsMessage = dnsClient.Resolve(DomainName.Parse(url));  s.Stop();  Console.WriteLine(s.Elapsed.Milliseconds);  //若返回结果为空,或者存在错误,则该请求失败。  if (dnsMessage == null || (dnsMessage.ReturnCode != ReturnCode.NoError && dnsMessage.ReturnCode != ReturnCode.NxDomain))  {    isSuccess= false;  }  //循环遍历返回结果,将返回的IPV4记录添加到结果集List中。  if (dnsMessage != null)    foreach (var dnsRecord in dnsMessage.AnswerRecords)    {      var aRecord = dnsRecord as ARecord;      if (aRecord == null) continue;      isSuccess = true;      return aRecord.Address;    }  isSuccess= false;  return null;}

原标题:[爬虫学习笔记]C#基于ARSoft.Tools.Net的DNS解析模块(半成品)

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。