我想通过检查 SOA 是否存在来尽可能准确地对 .co.za 域名实现批量可用性检查使用 C# ASP.NET 的 MX 记录。
我正在寻找一种解决方案,可以通过正确利用线程一次检查至少 10 个域的方式来检查相关 DNS 记录。
“为什么不直接使用 API?”
检查 .co.za 域可用性的唯一真正准确的方法是使用 http://co.za/whois.shtml ,但过时的 WHOIS 服务不允许批量检查并限制对给定 IP 的连续检查。
之前的工作
迄今为止,我通过使用古老的经典 ASP 脚本(利用 Emmanuel Kartmann 称为“简单 DNS 解析器”的旧 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 的 DNS Client Library for .NET 会非常容易。 :
var Response = JHSoftware.DnsClient.Lookup("example.com",
JHSoftware.DnsClient.RecordType.SOA);
它还支持异步查找的 BeginLookup
/EndLookup
方法。
关于c# - 快速并发检查 .co.za 域的 SOA DNS 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774293/