查找通过代理连接的客户端的IP地址

Ksh*_*KJ- 8 php proxy ip-address

有没有办法通过代理服务器收集连接到您网站的客户端的IP地址?

整个设置是一个内部局域网,通过系统管理员,我也可以控制代理机器.我在网站服务器端使用PHP5.

我试过$_SERVER['REMOTE_ADDR']PHP,但这个变量只存储代理的IP地址.

有任何想法吗?

blo*_*art 12

这取决于代理.一些代理添加了一个标题,该标题提供了原始IP地址,即X-Forwarded-For标头,但考虑到大多数公司使用代理来隐藏罕见的内部网络结构.如果是这种情况,那么您将无法轻松完成.

如果您可以控制代理,那么就该阅读代理文档以了解如何添加该标头.


小智 12

标准解决方案(在PHP中)是:

if ($_SERVER['HTTP_X_FORWARDED_FOR']){
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} 
else{ 
    $ip = $_SERVER['REMOTE_ADDR'];
}
Run Code Online (Sandbox Code Playgroud)

但正如第一个答案所说,这一切都取决于实际设置的标题.

  • 实际上,这不起作用:而不是'HTTP_X_FORWARD_FOR',它是'HTTP_X_FORWARDED_FOR' (4认同)