2013-03-08 88 views
0

有什麼辦法讓一個給定網站的所有IP地址?如何獲取網站的所有IP地址?

CURL可以做到嗎?在PHP中可能嗎?

+0

您是否需要遠程站點或您的站點的所有IP? – hek2mgl 2013-03-08 17:11:46

+0

你是什麼意思所有的IP地址?它收到的所有訪問或該網站中的所有文本IP? – 2013-03-08 17:12:37

+0

其實,我在兩種情況下工作,萬一它是你的,並且不是這樣! – ProXamer 2013-03-08 17:13:04

回答

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)的所有(或大多數)地址。

+0

感謝phihag,但我正在測試dns_get_record,它只給我一個IP地址 – ProXamer 2013-03-08 17:21:08

+1

@MEznati有什麼域?可能只有一個地址分配給該域名,或者您的名稱服務器可能會遺漏其他地址。 – phihag 2013-03-08 17:21:40

+0

你知道有多少網站使用ipv6? – hek2mgl 2013-03-08 17:22:03

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(這是專門設計的)。