0

有没有办法让给定网站的所有 IP 地址?

CURL 能做到吗?可以在 PHP 中使用吗?

4

2 回答 2

3

使用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 等常用域的所有(或大部分)地址。

于 2013-03-08T17:16:06.800 回答
1

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 关于负载平衡:

负载均衡有多种方式。例如,谷歌使用基于 DNS 的负载平衡,这就是我以它为例的原因。如果正在使用某种形式的内部负载平衡 - 这意味着负载平衡器有 1 个外部 IP 并将请求重定向到内部服务器 - 您将无法获得这些内部(私有)IP(这是设计使然)。

于 2013-03-08T17:13:39.417 回答