使用php获取网站ip

使用php获取网站ip,php,dns,ip,hostname,Php,Dns,Ip,Hostname,我需要使用php获取给定的网站ip地址,即网站所在服务器的ip地址 为此,我使用了gethostbyname('**example.com*')。当站点没有重定向时,它可以正常工作。例如,如果我使用此函数获取google.com,它会给出“74.125.235.20” 当我为“lappusa.com”试用时,它给出了“lappusa.com”。然后我在浏览器中尝试了这个,它正在重定向到“http://lappusa.lappgroup.com/" . 我检查了http状态代码,它显示200 但即

我需要使用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,那么我需要获取重定向url的ip


我该怎么得到这个?非常感谢您的帮助,谢谢

您是否尝试将HttpRequest发送到特定页面,然后解析响应头?我不确定,但它应该包含一些IP或主机信息…

问题不在于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
) */

它们使用HTML源代码中的元标记重定向。您需要解析实际的源代码才能捕捉到这一点。

是的,我尝试了curl检查“位置”是否存在有时我们会看到重定向的url,对于这个url,即使该属性不存在。现在我发现curl无法捕捉javascript重定向。所以,如何检查给定的url是否被重定向…它起作用了。我试着在“www”前加上gethostbyname,结果与函数的输出相同。但可以解释多一点请..也添加结束php标记到您的答案。。。谢谢。@Sekar如果文件中没有更多的内容,您不需要关闭php标记(如果关闭它,许多编辑器会坚持多出一行空行,由php输出)。允许您不仅获取IPv4地址,还可以获取IPv6地址。如果您对此不感兴趣,可以将
getAddresses
函数替换为。好的,也感谢您为gethostbynamel函数提供了链接。这很好。网站
lappusa.com
没有重定向。我只是不存在。