我需要使用php获取给定的网站IP地址,即托管网站的服务器的IP地址。
为此,我使用了gethostbyname('**example.com*')
。当站点未重定向时,它工作正常。例如,如果我使用此功能获取 google.com ,则会显示“74.125.235.20”。
当我为“lappusa.com”尝试时,它会给出“lappusa.com”。然后我在浏览器中尝试了这个,它重定向到“http://lappusa.lappgroup.com/”。我检查了它显示的http状态代码200。
但即使网站被重定向,我也需要获取IP地址,就好像lappusa.com被重定向到lappusa.lappgroup.com然后我需要获取重定向网址的IP。
我该怎么做?任何帮助非常感谢,谢谢!。
答案 0 :(得分:12)
问题不在于HTTP重定向(高于gethostbyname
级别),但lappusa.com
无法解析为任何IP地址,因此无法在任何浏览器中加载。您的浏览器所做的是自动尝试预先www.
。
您可以在代码中重现该行为。另请注意,多个IP(版本4和6)可以与一个域关联:
<?php
function getAddresses($domain) {
$records = dns_get_record($domain);
$res = array();
foreach ($records as $r) {
if ($r['host'] != $domain) continue; // glue entry
if (!isset($r['type'])) continue; // DNSSec
if ($r['type'] == 'A') $res[] = $r['ip'];
if ($r['type'] == 'AAAA') $res[] = $r['ipv6'];
}
return $res;
}
function getAddresses_www($domain) {
$res = getAddresses($domain);
if (count($res) == 0) {
$res = getAddresses('www.' . $domain);
}
return $res;
}
print_r(getAddresses_www('lappusa.com'));
/* outputs Array (
[0] => 66.11.155.215
) */
print_r(getAddresses_www('example.net'));
/* outputs Array (
[0] => 192.0.43.10
[1] => 2001:500:88:200::10
) */
答案 1 :(得分:0)
您是否尝试将HttpRequest发送到某个页面然后解析响应标头?我不确定,但它应该包含一些IP或主机信息...
答案 2 :(得分:0)
他们使用HTML源代码中的META标记进行重定向。您将需要解析实际的源代码以捕获它。