-2

我正在使用 PHP 脚本来尝试将模糊的 URL(例如输入 facebook.com)解析为绝对 URL(例如https://www.facebook.com);类似于您的浏览器每天使用 PHP 所做的事情。

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

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

这提供了一个 IPV4 地址,它可以工作,但是当我使用反向查找时:

$link2 = gethostbyaddr($link);

我希望收到一个有效的 URL,例如“ https://www.facebook.com ”,但相反,我得到了诸如“'edge-star-mini-shv-13-atn1.facebook.com'”之类的垃圾

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

谁能解释这里出了什么问题以及我该如何解决?

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

4

1 回答 1

0

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

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

gethostbyaddr将获得默认值。

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

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

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

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

于 2016-06-15T12:52:18.770 回答