我在尝试重定向(通过代理)时出现问题,其中通过某些http查询进入某个网站会给我1个结果,但其他看起来相同的http查询会给我另一个。该网站是在namecheap上托管的,因此我无法直接控制它所服务的内容(尽管很明显我们已经确定了内容是什么)。
使用curl在我的本地计算机上重新编写它的一种方法是:
curl ftl.ltd -L
curl 198.187.29.248 -L
其中:nslookup ftl.ltd
输出198.187.29.248
我已经验证了请求中的标头是相同的,198.187.29.248是ftl.ltd解析的地址,甚至尝试复制浏览器发送的标头。据我所知,我的ip请求与主机名请求完全没有区别。
显然,我误解了与这些请求如何解决相关的问题,并且没有设法找到正确的搜索来回答问题的事情。有这方面专业知识的人是否知道如何发生这种情况?
由于
克里斯
答案 0 :(得分:0)
如果您已经检查了请求中的标题,请检查DNS记录是否仅返回所需的IP,您可以使用dig
:
dig @8.8.8.8 ftl.ltd +trace
同样检查IPv6以防万一:
dig @8.8.8.8 AAAA ftl.ltd +trace
此处dig
将使用Google提供的DNS服务器,并应在最后返回此类内容:
ftl.ltd 1200 IN A 198.187.29.248
这样做的想法是检查您是否总是获得相同的值并丢弃可能您指向旧记录,以防您刚刚将域从一个主机移动到另一个主机并且已复制DNS。
关于通过IP或主机名执行请求,并为每个请求获得不同的结果,是因为服务器可能配置为支持虚拟主机。
在单个IP地址/主机上托管多个域/子域的技术称为虚拟主机。
这意味着对请求的响应(使用www.ftl.ltd):
curl -v -L -H 'Host: www.ftl.ltd' 198.187.29.248
可能与此请求不同(仅使用ftl.ltd):
curl -v -L -H 'Host: ftl.ltd' 198.187.29.248
原因是因为它可能是www.ftl.ltd
的另一个虚拟主机ftl.ltd
,或者在许多情况下它们可能是两者的相同vhost,通常使用通配符:{{1 }}
直接通过IP执行请求时:
*.ftl.ltd
它将返回定义的curl -v -L 198.187.29.248
,但在共享环境中,您通常无法控制哪种情况,因此您必须只使用主机名。