代理操纵头,所以我决定用js和php检查页面地址,如果它们相等=>没有代理.但我认为我的实施不正确.
<script src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<div id="JS" style="display:none">
<script>
</script>
</div>
<div id="noJS">Enable JS</div>
<script>
$(document).ready(function() {
$("#noJS").hide();
$("#JS").show().addClass("hasJS");
if($("#JS").hasClass("hasJS")) {
if($("#addrphp").text() == location.href) {
alert("no proxy");
}
else {
alert("proxy")
}
}
});
</script>
<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>
<div id="addrphp" style="display:none;"><?php echo $url; ?></div>
Run Code Online (Sandbox Code Playgroud)
你觉得怎么样?这会阻止大多数代理吗?我的实现是否正确(这是做我想做的最好的方式)?
代理不会更改浏览器请求的网页地址,除非您使用的是Google缓存.代理只是接受您的请求,获取请求中的任何地址的内容,并将回复转发给您的计算机.在任何时候都不应该改变地址,因为这意味着你要求的不是你得到的.
如果本地IP在Javascript中可用,您可以轻松地检查请求来自的地址是否与Javascript中检测到的地址匹配,但Javascript无法处理该低级别的网络概念.一个签名的Java小程序可以,也可能是一个Flash/Silverlight小程序,虽然我只是猜测那些.
但是,检查IP地址也会失败,因为它与家庭宽带路由器一样微不足道."本地"IP很可能类似10.0.0.13,但您的站点将检测到来自路由器外部地址的请求.没有涉及"代理",只是一个NAT网关,但请求IP!=客户端IP和哇,你代理,伙计!
最可靠(并且仍然不是特别可靠)的方法是检查各种代理头,例如X-Forwarded-For
.
归档时间: |
|
查看次数: |
1098 次 |
最近记录: |