PHP: gethostbyaddr() 返回无效 url

PHP: gethostbyaddr() returning an invalid url

我正在编写一个 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 尝试阅读网页内容的希望。

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

编辑:尝试使用不安全的 URL,例如 "google.co.uk" returns“'lhr25s10-in-f3.1e100.net'”,因此它与安全 HTTP (HTTPS) 无关)

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

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

gethostbyaddr 将获得默认值。

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

一个 HTTP 请求包括一个名为 Host 的请求 header,它指定了您要请求的主机名。

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

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