1

我正在尝试阻止基于网站的代理。这些通常采用以下格式:http: //3.hidemyass.com/ip-8/encoded/Oi8vZ29kbGV5ZGVzaWduLmNvLnVrL0xDcmVkaXJlY3QvZnVuY3Rpb25zL2Z1bmN0aW9

我阻止这些的理论是获取地址栏的 URL 并检查它实际上是直接访问我的网站,而不是通过网站代理访问。

但是,当我尝试访问我的网站并尝试捕获用户的 url 时,它仍然报告它的我的网站 url.. 不是这个基于网络的代理之一。

我尝试了以下检测方法:

$url= $_SERVER['HTTP_HOST']; //get the url
$url = $_SERVER["SERVER_NAME"];

关于如何解决这个问题的任何想法?

更新好的,我已经重写了其中的一部分,但是它似乎总是返回错误... $url 被正确传递,因为我可以在函数中回显它。但是它似乎不匹配并返回 false

<script>
var url = window.location.href;
<?php $url = "<script>document.write(url)</script>"; ?> 
</script>

<?php
//
function checkURLIsSafe($url){
    if(preg_match('/www/',$url)){
        echo 'true';
    } else {
        echo 'false';
    }
}
checkURLIsSafe($url);
?>
4

2 回答 2

1

PHP 在服务器上运行。它只能看到从它请求的 URL。

hidemyass.com将从您的服务器请求正常的 URL。没有办法知道浏览器从哪个 URL 请求hidemyass.com

您可以采取的方法包括:

  • 根据已知代理列表检查源 ip
  • 使用客户端 JavaScript 读取location.href
于 2013-06-25T13:54:51.763 回答
1

你不能只用 PHP 做到这一点。您可以做的是用javascript检查window.location.href,如果不正确,向服务器发送ajax请求,这将阻止IP地址。

于 2013-06-25T13:58:13.323 回答