我希望通过检查是否存在 SOA ,尽可能准确地实施 .co.za 域名的批量可用性检查使用C#ASP.NET MX记录。
我正在寻找一种解决方案,可以检查相关的DNS记录,以便正确利用线程一次检查至少10个域。
检查.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的第一个问题,请原谅我的冗长和感谢你的宝贵时间。
答案 0 :(得分:3)
使用JH Software的DNS Client Library for .NET:
非常容易var Response = JHSoftware.DnsClient.Lookup("example.com",
JHSoftware.DnsClient.RecordType.SOA);
它还支持异步查找的BeginLookup
/ EndLookup
方法。
答案 1 :(得分:0)
如果在网上提供服务 “限制对给定IP的连续检查”,这可能是有充分理由的(保护系统并使投机者的生活更加困难)。称之为“过时”肯定无济于事。
此外,许多DNS请求可能被视为违反服务条款和/或字典攻击,并且可能(免责声明:我不知道co.za的政策)导致黑名单。