Javaでドメインが利用可能かどうかを確認する比較的簡単な方法はありますか?
確実な方法が必要なので、接続できるかどうかを確認するだけでは不十分です。
ドメインの可用性は、whois クライアントを持っているかどうかによって異なります。Java での whois クライアントの実装へのリンクを次に示します。
結果を解析する必要があります。使用するwhoisサーバーによっては、返される形式が異なる場合があります。最善の方法は、OpenSRS などの商用の whois/登録サービスに料金を支払うことです。彼らには、登録済みリセラーとして使用できる広範な API があります。API ドキュメントは次のとおりです。
http://opensrs.com/resources/documentation/opensrs_xmlapi.pdf
HTH、
-aj
ここには、優れた Whois Java クライアントがあります。
https://github.com/ethauvin/Whois
コマンドラインまたはインターフェイスから直接実行できます。
// don't include the www
Whois.main(new String[] {"skytouch.com"});
別の解決策は、Apache Commons lib を使用することです。簡単な例:
import org.apache.commons.net.whois.WhoisClient;
public String getWhois(String domainName){
WhoisClient whois = new WhoisClient();
whois.setConnectTimeout(10000);
whois.setDefaultTimeout(10000);
whois.connect("whois.verisign-grs.com", 43);
String domainWhois = whois.query(domainName);
whois.disconnect();
return domainWhois;
}
応答が「一致なし」に等しいかどうかを確認します。Whois サーバー、タイムアウトの長さ、および可用性応答なしは拡張子によって異なるため、追加のコレクションを用意する必要があります。
Whois サーバーのリストは次の場所にあります。
クエリを同時に実行しようとすると、「構成されたレート制限に達しました」というwhois応答が確実に返されます。またはコード内の明示的な例外であるため、スリープ後にクエリを繰り返す必要があります。
ドメインで DNS ルックアップを実行するのが最も簡単な解決策です。利用可能なすべてのドメインには DNS レコードがなく、ほとんどのレジストラは登録時にデフォルトの DNS エントリを割り当てます。
WHOIS ルックアップは、特に ISP の背後で (広告でいっぱいの「ドメインが見つかりません」ページで) 自身のサーバーを偽装して、欠落しているドメイン名を探す最も信頼できるソリューションになります。