我正在使用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)无关
答案 0 :(得分:0)
gethostbyaddr
获取IP地址的主机名,而不是URL。
可以将多个主机名分配给单个IP地址。
gethostbyaddr
将获得默认值。
侦听该IP地址的HTTP服务器将处理对所有主机名的请求。
HTTP请求包含一个名为Host
的请求标头,用于指定您要求的主机名。
HTTP服务器可以关注该标头,并为不同的主机名提供不同的内容。这允许多个网站托管在单个IP地址上。这非常有用,因为IPv4地址供应有限,并且有很多很多网站。
您正在获取托管facebook.com
的计算机的默认主机名,但网络服务器并未托管您在该主机名上所需的网站。