web-dev-qa-db-ja.com

ドメインが利用可能かどうかをプログラムで確認しますか?

このソリューションの使用 ボット?ドメイン名が利用可能かどうかを確認しますか? ドメインが利用可能かどうかを確認するためにC#で簡単なスクリプト(以下に貼り付け)を作成しました。多くの結果が、取得したドメインを思い付きます。 2文字と3文字の.comドメインがすべて取得され、3文字すべてが取得されたように見えます(多くの利用可能な番号は含まれていません)。ドメインのリストを取得して、それらが登録されているか利用可能かどうかを確認するコマンドまたはWebサイトはありますか?

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
user274

これは、WHOISを介して実行する必要がある種類のリクエストであり、公開されているレジストラエントリに依存しています。一部のTLD(.toなど)は、公開WHOISを公開していません。 .com.auなどの他のレジストラは、各レジストラが独自のWHOISを維持しているため、ドメインが登録されているレジストラを見つけて、WHOISをクエリする必要があります。

また、私が使用したすべてのWebベースのWHOISサービスには、キャプチャが含まれています。これは、ユーザーが実行しようとしていることを実行できないようにするためです。これには多くの理由があり、大きな理由はサイバースクワッティングをやめることです。

そういえば、サイバースクワッティングを意図してこれを行っている場合:a)恥ずべきこと、b)これは一部の国やTLDでは実際には違法です。

最後に、そうは言っても、C#用のWHOISコンポーネントはたくさんあります。 これは1つです ランダムに見つけました。

2
Mark Henderson