Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如果使用代理服务器(如Hidemyas),代理检测和阻止网站访问_Php_Proxy - Fatal编程技术网

PHP-如果使用代理服务器(如Hidemyas),代理检测和阻止网站访问

PHP-如果使用代理服务器(如Hidemyas),代理检测和阻止网站访问,php,proxy,Php,Proxy,我想在我的网站上集成一个好的代理检测器脚本。因此,在搜索时我得到了这个代码 $proxy_headers = array( 'HTTP_VIA', 'HTTP_X_FORWARDED_FOR', 'HTTP_FORWARDED_FOR', 'HTTP_X_FORWARDED',

我想在我的网站上集成一个好的代理检测器脚本。因此,在搜索时我得到了这个代码

$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!");
}

然后我尝试通过ngrok访问我的本地主机网站,它阻止我查看它,并返回“您正在使用代理!”。我尝试了Hidemyas和另一个代理检测器,得到了相同的结果。这就是我想要的Hidemyas类型的代理站点。现在我的问题是ngrok是否也在使用代理服务器,因为它阻止了我的访问?我读到有人评论说的HTTP\u X\u FORWARDED\u对他的互联网直接连接返回假阳性。我试图删除这个和wooo,不再检测Hidemyas或其他的代理。网站可以通过代理访问。所以,我想这很重要。所以,我的第二个问题是,的HTTP\u X\u FORWARDED\u是否真的返回假阳性?或者是因为ngrok也使用代理,即使我使用直接连接也无法访问我的站点?对使用HTTP\u X\u FORWARDED\u完全可以吗?你在这个剧本中看到的任何散文或缺点请告诉我

对于VPN或Web代理服务器后面的用户,没有明确的标准仅通过HTTP头进行分类

您还阻止了许多在其合法网络中使用Web代理的用户,如大学校园或具有严格的Web冲浪政策的政府机构

您最好的机会是获取与AS号相关的IP地址和与它们相关的IP范围,并阻止web服务器中的整个IP空间,或将它们重定向到特定的web服务器

识别使用internet代理的用户的另一个最佳方法是使用Flash中可用的P2P作为RTMFP协议,例如可以与一起使用(另请参阅)。因此,在服务器上,您应该等待消息并通过闪存记录远程IP,然后将其与您的IP remote_ADDR进行比较,如果不相等,则用户可能位于防火墙后面

我还建议获取两个IP的AS编号,如果两个IP ASN不相同,则确保用户正在滥用

如果ASN相等,那么用户就在ISP的后面,ISP必须通过不同的路径重定向web流量

要获取IP的ASN,可以执行以下命令:

 whois -h whois.cymru.com "216.90.108.31" |grep -v 'AS      |'|grep -v whois.cymru.com| awk '{print $1}'

代理检测是一个复杂的问题,需要不断地关注以使事情正确。大多数代理/VPN不会显示任何转发头,因此您将无法使用该代码捕获足够的代理连接

您可能会发现一些在线服务很有用

-通过API免费提供代理/VPN检测。他们使用机器学习和概率论技术来确定IP地址的分数

-通过API提供代理/VPN检测。它目前被列为遗留服务


-查看服务器端实现的MSS值,它可以捕获OpenVPN连接。

在这两个值中,您最推荐哪一个?您提到了node js,但如何在纯PHP中实现它?我个人更喜欢比较IP,我还将为代理访问者创建验证码验证表单,以确保他们不会被用于DDOS攻击