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

标签 c# asp.net dns soa mx-record

我想通过检查 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/

相关文章:

c# - 选择要从字典中列出的所有对象值

asp.net - 如何在同一页面上运行不同版本的 jQuery?

python - 告诉 urllib2 使用自定义 DNS

java - 如何使用 Java 通过 Tor 代理进行 DNS 查找?

c# - 写入单独表单上的文本框 (C#)

c# - Task.WhenAll 的问题 我如何知道每项任务是否已完成?

c# - 批量更新数据库的最快方法?

c# - 刷新下拉列表中的数据

dns - 领事DNS和Kubernetes

javascript - 如何将参数从 js 传递给直接事件 Url Action?