如何获取网站的所有IP地址?

时间:2013-03-08 17:10:35

标签: php networking curl hosting monitoring

有没有办法让某个网站获得所有IP地址?

CURL能做到吗?在PHP中有可能吗?

2 个答案:

答案 0 :(得分: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);
如果您只对IPv4地址感兴趣,

gethostbynamel还会提供简化的界面。

请注意,由于响应大小和地理位置偏好有限,您可能需要多次从多个位置询问此查询,以获取经常光顾的域名(如google.com)的所有(或大多数)地址。

答案 1 :(得分: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关于负载平衡:

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