我想通过使用 C# ASP.NET检查SOA或MX 记录的存在,尽可能准确地实现对.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 的第一个问题,所以请原谅我的冗长并感谢您宝贵的时间。