我已经在我的两个不同的服务器中使用相同的代码来查找代理服务器,但我的一个服务器显示这是代理服务器。最后我打印所有服务器变量,我可以看到它在HTTP头中有HTTP_X_FORWARDED_FOR。为什么会这样?
我以前找到的代码是<?php
if($ _SERVER [&#39; HTTP_X_FORWARDED_FOR&#39;] || $ _SERVER [&#39; HTTP_X_FORWARDED&#39;] || $ _SERVER [&#39; HTTP_FORWARDED_FOR&#39;] || $ _SERVER [ &#39; HTTP_CLIENT_IP&#39;] || $ _SERVER [&#39; HTTP_VIA&#39;] || in_array($ _ SERVER [&#39; REMOTE_PORT&#39;],数组(8080,80,6588,8000, 3128,553,554))|| @fsockopen($ _ SERVER [&#39; REMOTE_ADDR&#39;],80,$ errno,$ errstr,2))
{
echo "Proxy detected";
//Proxy detected'
}
else
{
echo "Proxy not detected";
//No Proxy detected
}
&GT;
答案 0 :(得分:0)
X-Forwarded-For通常是出于多种原因插入的。
如果您的服务器位于反向代理之后,则反向代理通常会插入X-Forwarded-For以便向后端服务器标识原始客户端IP。
如果客户端位于公司代理(公共)之后,由于各种原因,该代理可能正在插入X-Forwarded-For。它通常不赞成,因为它有效地泄露了内部IP地址,但如果在站点上使用了几个链式代理,通常会发生这种情况。
如果客户端位于互联网上托管的开放代理后面,则代理可能会插入标题。
代理也应该添加Via标头,但它们通常不会。