PHP:gethostbyaddr()返回一个无效的url

时间:2016-06-15 12:47:25

标签: php gethostbyaddr

我正在使用PHP脚本尝试解析一个模糊的URL(例如在facebook.com中输入)作为绝对URL(例如https://www.facebook.com);类似于您的浏览器每天使用PHP执行的操作。

到目前为止,我有以下代码:

$link = gethostbyname("facebook.com");

这提供了一个IPV4地址,但是当我使用反向查找时

$link2 = gethostbyaddr($link);

我希望收到像“https://www.facebook.com”这样的有效网址,但相反,我会收到垃圾,例如“'edge-star-mini-shv-13-atn1.facebook.com'”

这打破了使用fopen或curl尝试阅读网页内容的希望。

有谁可以解释这里出了什么问题以及如何解决它?

编辑:尝试像“google.co.uk”这样的不安全网址会返回“'lhr25s10-in-f3.1e100.net'”,因此它与安全HTTP(HTTPS)无关

1 个答案:

答案 0 :(得分:0)

gethostbyaddr获取IP地址的主机名,而不是URL。

可以将多个主机名分配给单个IP地址。

gethostbyaddr将获得默认值。

侦听该IP地址的HTTP服务器将处理对所有主机名的请求。

HTTP请求包含一个名为Host的请求标头,用于指定您要求的主机名。

HTTP服务器可以关注该标头,并为不同的主机名提供不同的内容。这允许多个网站托管在单个IP地址上。这非常有用,因为IPv4地址供应有限,并且有很多很多网站。

您正在获取托管facebook.com的计算机的默认主机名,但网络服务器并未托管您在该主机名上所需的网站。