以编程方式检查域是否可用?

以编程方式检查域是否可用?

使用此解决方案机器人?检查域名是否可用?我用 C# 编写了一个快速脚本(粘贴在下面)来检查域名是否可用。结果显示很多域名已被占用。看起来所有 2 个和 3 个字母的 .com 域名都已被占用,看起来所有 3 个字母的域名也已被占用(不包括数字域名,其中许多域名是可用的)。是否有命令或网站可以获取我的域名列表并检查它们是否已注册或可用?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Text.RegularExpressions;
using System.Diagnostics;
using System.IO;

namespace domainCheck
{
    class Program
    {
        static void Main(string[] args)
        {
            var sw = (TextWriter)File.CreateText(@"c:\path\aviliableUrlsCA.txt");
            int countIndex = 0;
            int letterAmount=3;

            char [] sz = new char[letterAmount];
            for(int z=0; z<letterAmount; z++)
            {
                sz[z] = '0';
            }
            //*/
            List<string> urls = new List<string>();
            //var sz = "df3".ToCharArray();
            int i=0;
            while (i <letterAmount)
            {
                if (sz[i] == '9')
                    sz[i] = 'a';
                else if (sz[i] == 'z')
                {
                    if (i != 0 && i != letterAmount - 1)
                        sz[i] = '-';
                    else
                    {
                        sz[i] = 'a';
                        i++;
                        continue;
                    }
                }
                else if (sz[i] == '-')
                {
                    sz[i] = 'a';
                    i++;
                    continue;
                }
                else
                    sz[i]++;
                string uu = new string(sz);
                string url = uu + ".ca";
                Console.WriteLine(url);
                Process p = new Process();
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.FileName = "nslookup ";
                p.StartInfo.Arguments = url;
                p.Start();
                var res = ((TextReader) new StreamReader( p.StandardError.BaseStream)).ReadToEnd();
                if (res.IndexOf("Non-existent domain") != -1)
                {
                    sw.WriteLine(uu);
                    if (++countIndex >= 100)
                    {
                        sw.Flush();
                        countIndex = 0;
                    }
                    urls.Add(uu);
                    Console.WriteLine("Found domain {0}", url);
                }
                i = 0;
            }
            Console.WriteLine("Writing out list of urls");
            foreach (var u in urls)
                Console.WriteLine(u);
            sw.Close();
        }
    }
}

答案1

此类请求必须通过 WHOIS 进行,并且依赖于已发布的注册商条目。某些 TLD(例如 .to)不发布公共 WHOIS。其他 TLD(例如 .com.au)每个注册商都维护自己的 WHOIS,因此您需要找出该域名在哪个注册商处注册,然后查询其 WHOIS。

此外,我使用过的所有基于 Web 的 WHOIS 服务都具有验证码功能,目的就是阻止人们做你想做的事情。这样做有很多原因,其中最重要的一个就是阻止域名抢注。

说到这,如果您这样做的目的是进行域名抢注:a)您应该感到羞耻,b)这在某些国家和顶级域名中实际上是违法的。

最后,综上所述,C# 有大量的 WHOIS 组件。这是一我偶然发现的。

相关内容