PHP:gethostbyaddr()返回无效url

PHP:gethostbyaddr()返回无效url,php,gethostbyaddr,Php,Gethostbyaddr,我正在编写一个PHP脚本,试图将一个模糊的URL(例如在facebook.com中键入)解析为一个绝对URL(例如);类似于您的浏览器每天使用PHP所做的工作 到目前为止,我得到了以下代码: $link = gethostbyname("facebook.com"); 这提供了一个IPV4地址,可以工作,但当我使用以下方法反向查找时: $link2 = gethostbyaddr($link); 我希望收到一个像“”这样的有效URL,但实际上,我收到了诸如“edge-star-mini-sh

我正在编写一个PHP脚本,试图将一个模糊的URL(例如在facebook.com中键入)解析为一个绝对URL(例如);类似于您的浏览器每天使用PHP所做的工作

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

$link = gethostbyname("facebook.com");
这提供了一个IPV4地址,可以工作,但当我使用以下方法反向查找时:

$link2 = gethostbyaddr($link);
我希望收到一个像“”这样的有效URL,但实际上,我收到了诸如“edge-star-mini-shv-13-atn1.facebook.com”这样的垃圾

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

谁能解释一下这里出了什么问题,我如何解决


编辑:尝试像“google.co.uk”这样不安全的URL会返回“lhr25s10-in-f3.1e100.net”,因此这与安全HTTP(HTTPS)无关。
gethostbyaddr
为IP地址获取主机名,而不是URL

可以为单个IP地址分配多个主机名


gethostbyaddr
将获得默认值

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

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

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


您正在获取承载
facebook.com
的计算机的默认主机名,但该Web服务器没有承载您希望在该主机名上承载的网站。

@C0dekid-是。“google.co.uk”提供了“'lhr25s10-in-f3.1e100.net'”,这根本不安全。。主机是该IP承载的域,请使用GeoIP工具并亲自查看。Hostbyaddr不是网站链接。根据PHP.net()的说法,它是try
tracert facebook.com
或linux
traceroute facebook.com
,你会看到很多垃圾。这些是主机名。主机名不是URL。啊。我懂了。您建议使用什么来检索网站?如果你可以编辑你的答案,包括这一点,我会接受它开始知道你想要处理的网站的URL(而不是托管它的计算机的IP地址),并使用它。i、 完全跳过你在问题中所做的一切。但是。。。你的浏览器不是这样做的。您不必知道确切的URL,您的浏览器就可以解释您的URLintentions@Raisus-浏览器唯一不同的地方是,如果您忘记键入URL,它会将
http://
添加到URL的前面(或者如果您看起来根本没有键入URL,它会将所有内容都推到搜索引擎上)我可以在我的浏览器中输入“google.com”,它不仅会添加http(或facebook.com的https),还会添加www.com。编辑:你不会说它所做的只是添加www。那么,不使用www的网站呢,比如博客。还是别的?