特定のWebサイトにすべてのIPアドレスを取得する方法はありますか?
CURLはそれを行うことができますか?PHPで可能ですか?
特定のWebサイトにすべてのIPアドレスを取得する方法はありますか?
CURLはそれを行うことができますか?PHPで可能ですか?
dns_get_record
次のように使用します。
$all_records = dns_get_record('example.com');
$ips = array();
foreach ($all_records as $r) {
if ($r['type'] == 'A') {
$ips[] = $r['ip'];
}
if ($r['type'] == 'AAAA') {
$ips[] = $r['ipv6'];
}
}
var_export($ips);
gethostbynamel
また、IPv4アドレスのみに関心がある場合は、簡略化されたインターフェイスを提供します。
応答サイズと地理的な設定が限られているため、google.comなどの頻繁に使用されるドメインのすべて(またはほとんど)のアドレスを取得するには、複数の場所からこのクエリを複数回実行する必要がある場合があります。
PHPにはこのための関数があります:gethostbynamel()
この関数はDNSクエリを実行し、結果のIPを返します
例:
var_dump(gethostbynamel('google.com'));
出力
array(6) {
[0] =>
string(14) "173.194.70.139"
[1] =>
string(14) "173.194.70.113"
[2] =>
string(14) "173.194.70.100"
[3] =>
string(14) "173.194.70.138"
[4] =>
string(14) "173.194.70.102"
[5] =>
string(14) "173.194.70.101"
}
@MEznati負荷分散について:
負荷分散にはいくつかの方法があります。たとえば、GoogleはDNSベースの負荷分散を使用しているので、たとえばそれを採用しました。内部負荷分散の形式が使用されている場合(つまり、ロードバランサーに1つの外部IPがあり、要求を内部サーバーにリダイレクトする場合)、それらの内部(プライベート)IPを取得することはできません(これは仕様によるものです)。