重定向后找到网址并获取网站的IP地址

时间:2012-06-15 16:38:55

标签: php url ip-address http-redirect

如果我有:

domainA.com/out.php:

<?php
  header('location: http://domainB.com/');
?>

是否可以获取网址:domainB.comIP AddressdomanA.com/out.php来自domainC.com

我想要的是什么:

domainA.com/index.php

<?php
   $data = getUrlandIp("domainA.com/out.php");
   echo $data[0];  # wanted output (URL) : domainB.com
   echo $data[1];  # wanted output (IP) : 133.133.133.133
?>

3 个答案:

答案 0 :(得分:5)

如果您需要获取所有重定向,则可以执行

function getRedirectsToUri($uri)
{
    $redirects = array();
    $http = stream_context_create();
    stream_context_set_params(
        $http,
        array(
            "notification" => function() use (&$redirects)
            {
                if (func_get_arg(0) === STREAM_NOTIFY_REDIRECTED) {
                    $redirects[] = func_get_arg(2);
                }
            }
        )
    );
    file_get_contents($uri, false, $http);
    return $redirects;
}

这将返回一个包含所有重定向的数组,最后一个条目是最终目标。

示例(demo

print_r(getRedirectsToUri('http://bit.ly/VDcn'));

输出

Array ( 
    [0] => http://example.com/ 
    [1] => http://www.iana.org/domains/example/ 
) 

您必须手动查找IP(请参阅此处的其他答案),但请注意,重定向目标不必是主机名。它也很可能是一个IP。

答案 1 :(得分:3)

使用get_headers()从网址获取http标头。

这样的东西应该可以获得域名。

$headers = get_headers('http://domaina.com/out.php', 1);
echo $headers['Location'];

要解析IP地址,请查看gethostbyname()功能。

echo gethostbyname($headers['Location']);

答案 2 :(得分:2)

我不确定你的意思

  

来自domainC.com?

但是在PHP中,您可以拨打gethostbyname('domainB.com'),它会从domainA.com/out.php

为您提供domainB.com的IP