快速并发检查.co.za域的SOA DNS记录

我想通过使用C#ASP.NET检查SOAMX记录是否存在,尽可能准确地实现.co.za域名的批量可用性检查

我正在寻找一种解决方案,可以检查相关的DNS记录,以便正确利用线程一次检查至少10个域。

“你为什么不使用API​​?”

检查.co.za域的可用性的唯一真正准确的方法是使用http://co.za/whois.shtml ,但是古老的WHOIS服务不允许批量检查并限制对给定IP的连续检查。

之前的工作

到目前为止,我使用古老的经典ASP脚本,利用Emmanuel Kartmann编写的名为“Simple DNS Resolver”的旧DNS库,得到了相当准确的结果。 但是,这种方法不能很好地扩展 ,我需要能够使用正确的线程ASP.NET实现来处理更多用户。

我现在使用的顽皮代码看起来像这样:

Dim oDNS, pDomain, found_names Set oDNS = CreateObject("Emmanuel.SimpleDNSClient.1") oDNS.ServerAddresses = "127.0.0.1" // Set DNS server to use oDNS.Separator = "," // Set separator for found_names multiple outputs 

对每个域执行以下操作:

 Err.Clear // Reset error flag. I know, I hate it too. oDNS.Resolve pDomain, found_names, "C_IN", "T_SOA" // Look for SOA records for domain If Err  0 Then // No SOA records could be found. Err.Clear // Reset error flag oDNS.GetEmailServers pDomain, found_names // Look for MX records If Err  0 Then // No MX records found either AssumeDomainIsAvailable(pDomain); Else // Found some MX records DomainUnavailable(pDomain); End If Else // Found some SOA records DomainUnavailable(pDomain); End If 

任何改进检测的建议都值得赞赏。 这是我关于SO的第一个问题,请原谅我的冗长和感谢您的宝贵时间。

使用JH Software的.NET DNS客户端库非常容易:

 var Response = JHSoftware.DnsClient.Lookup("example.com", JHSoftware.DnsClient.RecordType.SOA); 

它还支持用于异步查找的BeginLookup / EndLookup方法。

如果Web上提供的服务“限制对给定IP的连续检查”,则可能有充分的理由(保护系统并使投机者的生活更加困难)。 称之为“过时”肯定无济于事。

此外,许多DNS请求可能被视为违反服务条款和/或字典攻击,并且可能(免责声明:我不知道co.za的政策)导致列入黑名单。