- Auther:Falost
- Time:20151205
- Environment:PHP、JS、HTML
- Function:AJAX
今日一小伙伴找我询问,如何禁止代理IP访问网站,当时第一个想到的就是使用PHP呗(个人比较喜欢的语言之一)
但是他的站点是HTML的,哎呀!HTML的那怎么运行PHP呢,不过他的服务器有PHP环境哦。
好吧,既然是HTML的吧,那JS应该可以的吧,但是JS获取用户IP的接口没有一个是靠谱的;那就用PHP了,下面就不罗嗦了,直接代码走起来!
利用AJAX功能来实现目的吧!直接代码上起来
isIp.JS
window.onload=function(){ var xhr=getXhr(); xhr.open('get','isIp.php'); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send(); xhr.onreadystatechange=function(){ if (xhr.readyState==4&&xhr.status==200) { var text=xhr.responseText; if(text=='true'){ alert("你使用了代理IP,本站禁止访问"); window.location.href="http://www.xdcity.cn"; }else{ console.log("你是良民哦!") } } } } function getXhr(){ // 1 定义一个空对象 var xhr = null; // 2 判断当前浏览器是否支持该核心对象 if(window.XMLHttpRequest){ // 当前浏览器支持该对象:其它浏览器 xhr = new XMLHttpRequest(); }else{ // 当前浏览器不支持该对象:IE浏览器 xhr = new ActiveXObject('Microsoft.XMLHttp'); } return xhr; }
isIp.php
php /* * Author:神棍、Falost * Copyright © SCK Team */ if(!empty(_SERVER['HTTP_VIA'])) //使用了代理 { if(!isset(_SERVER['HTTP_X_FORWARDED_FOR'])) { //Anonymous Proxies 普通匿名代理服务器 //echo _SERVER['REMOTE_ADDR'];//代理IP地址 echo true; }else { //Transparent Proxies 透明代理服务器 //echo_SERVER['REMOTE_ADDR'];//代理IP地址为 //echo _SERVER['HTTP_X_FORWARDED_FOR']; //真实IP if(_SERVER['REMOTE_ADDR']){ echo true; } } }else{ echo false; }
想要的功能已经实现了!
欢迎大家吐槽!
转载请注明:Falost的小窝 » 记一次JS中AJAX 获取客户端是否使用代理IP访问