7

私は最近の 100 レベルの CompSci コースで文字列の操作に取り組んでいます。私は、単純なドメイン名ジェネレーター/チェッカーを作成するかもしれないという非常に「独創的な」アイデアを得ました。

それで、ちょっとした下調べをしたところ、さまざまな whois サーバーが許可されるクエリの数を当然のことながら制限していることがわかりました。

そこで、まず DNS ブール値をチェックすることにしました。レコードが見つからない場合は、MySQL データベースをチェックして、同じクエリが最近送信されていないことを確認します。そうでない場合は、fsockopen を使用して PHP で whois クエリを実行します。そのため、小さなスクリプトを完成させて開発サーバーから実稼働サーバーにアップロードする準備をしていたところ、さまざまな whois サーバーがクエリを 1,000 のみに制限していることを示唆するサイトをいくつか見つけました。

私の質問:

私はこれに適切に取り組んでいますか?簡単な計算では、10 件の検索をチェックアウトするユーザーが 10 人だけで、検索結果が 10 件 (10**3) しかない場合、制限を超えて一時的に禁止される可能性があります。

whois サーバーに対して一括クエリを実行する方法はありますか?

他のサイトは何らかの形式のクライアント側 JavaScript クエリまたはサーバー側プロキシを使用していますか? *NIX システムが制限のない端末コマンドにアクセスできることを示唆する、stackoverflow で別の同様の質問を見つけました。私が見つけた他の質問は、データの解析に関するものです。これは私の関心事ではありません。

これが漠然とした質問であることは理解しています。whois サーバーに不適切な負担をかけたくありません。私は、既製のコード ソリューションを期待したり、望んだりしません。これを行うための代替のプログラマティック戦略の基本的な議論は、私を非常に満足のいく友人にするでしょう:)誰か、私が研究を続けることができるキーワードを1つまたは2つ持っていますか?

4

3 に答える 3

4

これはすでに回答済みとしてマークされていますが(別の投稿にすでに入力しているので、再利用することもできます):-)

言われているように、ほとんどの whois 機関は、24 時間にあまりにも多くのリクエストを行っていると判断した場合、トラフィックを抑制 (またはブロック) します。

代わりに、世界中のいずれかの whois プロバイダーの ftp サイトにログインして、データベースのさまざまな部分をダウンロードすることを検討することをお勧めします。それらすべてがこの公開データを利用可能にし、maxmind のような企業が IP に使用しているデータとまったく同じです。これは、誰もが自動化するこれらすべての「whois」コマンドの背後にあるのと同じデータです。

私は現在、次のシェル スクリプトを使用して接続する自分のサーバーの 1 つでこれを行っています (24 時間ごとに 1 回)。 .:

#!/bin/bash
rm -f delegated-afrinic-latest
rm -f delegated-lacnic-latest
rm -f delegated-arin-latest
rm -f delegated-apnic-latest
rm -f delegated-ripencc-latest
rm -f ripe.db.inetnum
rm -f apnic.db.inetnum
rm -f ripe.db.inetnum.gz
rm -f apnic.db.inetnum.gz
wget ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest
wget ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest
wget ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest
wget ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest
wget ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest
wget ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz
ftp -n -v ftp.apnic.net <<END
user anonymous anonymous@anonymous.org
binary
passive
get /apnic/whois-data/APNIC/split/apnic.db.inetnum.gz apnic.db.inetnum.gz
bye
END
gunzip ripe.db.inetnum
gunzip apnic.db.inetnum

次に、サーバーがクエリを実行するカスタムデータベース構造にファイルを解析するカスタム作成プログラムがあります。

すべてのサーバーが相互にデータをミラーリングするため、1 つのサーバーから完全なデータ セットを取得できるはずですが、そうでない場合は、上記のシェル スクリプトを変更して他のサーバーからデータをダウンロードするのにそれほど時間はかかりません。それらはすべて「ftp.????」に応答します。同じユニバーサルフォルダー構造を持っています。

ただし、独自のコードが含まれているため、パーサーについてはお手伝いできませんが、ファイル形式 (分割ファイルを取得する場合は特に) は、典型的な whois 出力に表示されるものと同じであるため、操作は非常に簡単です。

'ip-country' と呼ばれる google-code (ダウンロード スクリプトを入手した場所) にはパーサーがあります (私は思う)、独自の whois データベースを構築できるように設計されています。それは他のデータとも組み合わされます(したがって、私のパーサーは独自のものです)

このように独自のデータをダウンロードして処理することで、プロバイダーによって課された制限を回避できます。その結果、サーバーからクエリ サーバーに毎回リクエストを送信し続けるよりも、独自のデータ ストアをクエリする方がはるかに高速である可能性が高くなります。誰かが IP アドレスを入力します。

于 2013-05-29T19:37:30.593 に答える
4

whois unix コマンドはあまり制限されていないようです ( https://superuser.com/questions/452751/what-are-the-limits-of-whois-command-on-unix )。whois私が想定していることを裏で実行し、ポート 43 で whois.internic.net への tcp 接続を開くのが最も簡単かもしれません。

<?php

$fp = fsockopen("whois.internic.net", 43);
fwrite($fp, "hello.com\n");

$response = "";
while (!feof($fp)) {
    $response .= fread($fp, 8192);
}

fclose($fp);
echo $response;

?>

それがあなたがすでに行っていることなら、おそらくそれが最善の策です。1,000 クエリの制限は、これを行う誰かの Web サービス (whois.com など) の使用を指している可能性が高いと推測しています。上で示したようにすれば、それよりもはるかに多くのクエリを作成できると思います。

(ここでは、多くの推測と仮定を行いました。)

PS ここにたくさんの良い情報があります: http://semmyfun.blogspot.com/2010/08/how-does-whois-work-dirty-guide.html

于 2012-10-09T06:16:52.797 に答える
1

WHOIS の詳細ではなく、ドメインが登録されているかどうかのみに関心がある場合は、WHOIS ではなく DNS サーバーを使用してチェックを行う方がよいでしょう。

于 2012-10-09T05:11:52.710 に答える