我有一个脚本,用于检测其调用方网站的 URL。如果调用方是另一个网站,它应该给出类似 的内容http://callersite.com
。我正在使用这行 php 代码(尽管我怀疑这对系统管理员来说无关紧要)
gethostbyaddr($_SERVER['REMOTE_ADDR'])
我正在测试一个托管在 hostgator 上的呼叫者网站。但我注意到我没有得到callersite.com
,我得到的是1a.12.12ab.static.theplanet.com
。我不知道theplanet.com
是什么,也不知道为什么我没有得到caller site.com
。
另外,我需要做什么才能真正获得调用我的脚本的网站域名?
--
谢谢你的解释。有人建议我使用,$_SERVER['HTTP_REFERER']
但这不是我想要的。我的脚本充当 API。另一个网站向它发出 curl 请求并获取输出,然后将其呈现给用户。因此 http referrer 给出,false
因为调用者 site.com 直接调用了我。所以还有希望吗?
答案1
Hostgator 服务器托管在 Theplanet DC(现在是 Softlayer),这就是为什么您会得到 1a.12.12ab.static.theplanet.com 作为主机名。用户没有 RDNS(或共享),这就是
获取主机地址($_SERVER['REMOTE_ADDR'])
获取,因此它获取的是 theplanets 默认值。您可以查看此内容,它将提取用户来自的地址。
$ref=@$HTTP_REFERER;
答案2
“gethostbyaddr” 获取连接 IP 地址的反向 DNS。您可能正在寻找的是 referrer,它位于 echo $_SERVER['HTTP_REFERER']; 中
答案3
gethostbyaddr 对 IP 地址进行反向查找。如果此 IP 地址属于 ISP 提供商,在本例中为 theplanet.com 或 softlayer.com,那么您将获得指向他们定义的通用名称的指针。
callersite.com 只是该 IP 的别名,而不是真实名称或指针。
如果你使用的是 Linux,请尝试
dig callersite.com
或者在 Windows 上
nslookup callersite.com
或者访问类似页面http://www.dnsqueries.com/en/并从那里开始您的 DNS 查询。
答案4
使用 curl 向请求添加额外标头很容易。如果对方可以修改其脚本,他们只需附加您需要的信息即可。由于您正在构建 API,因此只需将额外标头作为规范的一部分即可。