通过PHP

时间:2019-07-14 11:20:36

标签: php proxy

我有一个可供内部人员访问该组织的网站。该组织正在使用代理来使用Internet。代理服务器具有静态IP(例如10.12.13.14)和端口(3128)。我想检查网站主页上的任何请求是否通过代理服务器。我相信通过多个网关/中继或代理服务器进行传输时的IP存储在HTTP请求标头中(封装)。

我的环境详细信息: PHP v5.6 Apache v2.4

此外,我也尝试了其他在stackoverflow上回答的方法,但没有帮助。

方法1:

$proxy_headers = array(
        'HTTP_VIA',
        'HTTP_X_FORWARDED_FOR',
        'HTTP_FORWARDED_FOR',
        'HTTP_X_FORWARDED',
        'HTTP_FORWARDED',
        'HTTP_CLIENT_IP',
        'HTTP_FORWARDED_FOR_IP',
        'VIA',
        'X_FORWARDED_FOR',
        'FORWARDED_FOR',
        'X_FORWARDED',
        'FORWARDED',
        'CLIENT_IP',
        'FORWARDED_FOR_IP',
        'HTTP_PROXY_CONNECTION'
    );
    foreach($proxy_headers as $x){
        if (isset($_SERVER[$x])) die("You are using a proxy!");
    }

方法2:

$ports = array(8080,80,81,1080,6588,8000,3128,553,554,4480);  // See Note
    foreach($ports as $port) {
         if (@fsockopen($_SERVER['REMOTE_ADDR'], $port, $errno, $errstr, 30)) {
              die("You are using a proxy!");
         }
     }

注意:不知道他为什么要对所有端口进行阵列,所以我删除了所有端口并仅保留3128,但是即使我通过代理访问它,它也将所有请求显示为非代理请求。

我想检测此人是否来自代理网络,而我的逻辑是通过PHP检查标头中的代理服务器IP(即10.12.13.14)或端口(即3128)。当前,即使我正在通过代理访问它,它也将所有请求显示为非代理请求。

0 个答案:

没有答案