js 获取是否网络代理

如何禁止代理IP访问网站,当时第一个想到的就是使用PHP呗(个人比较喜欢的语言之一)
但是他的站点是HTML的,哎呀!HTML的那怎么运行PHP呢,不过他的服务器有PHP环境哦。
好吧,既然是HTML的吧,那JS应该可以的吧,但是JS获取用户IP的接口没有一个是靠谱的;那就用PHP了,下面就不罗嗦了,直接代码走起来!

利用AJAX功能来实现目的吧!直接代码上起来
isIp.JS

window.οnlοad=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:
 * Copyright © 
*/
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;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取电脑唯一机器码是一种有争议的做法,因为在大多数情况下,它可能会侵犯个人隐私。但是,如果你有合适的权限和合法的理由,你可以使用一些技术手段来获取电脑的唯一机器码。 在JavaScript中,获取电脑唯一机器码的方法取决于具体的场景和需求。以下是一些常见的方法: 1. 使用浏览器指纹技术:浏览器指纹是一种通过收集浏览器特征来识别用户的技术。你可以使用JavaScript代码收集浏览器的一些特征,例如用户代理字符串、屏幕分辨率、操作系统、浏览器插件等等,然后将这些特征哈希成一个唯一的标识符。这个标识符可以用作机器码,但是它并不是完全可靠和唯一的。 以下是一个使用浏览器指纹技术获取机器码的示例代码: ``` var fingerprint = new Fingerprint().get(); console.log(fingerprint); ``` 2. 使用ActiveX控件:在IE浏览器中,你可以使用ActiveX控件来获取硬件信息,例如CPU序列号、硬盘序列号等等。以下是一个使用ActiveX控件获取机器码的示例代码: ``` var cpuID = new ActiveXObject("WbemScripting.SWbemLocator").ConnectServer().ExecQuery("SELECT ProcessorId FROM Win32_Processor").ItemIndex(0); var diskID = new ActiveXObject("WbemScripting.SWbemLocator").ConnectServer().ExecQuery("SELECT SerialNumber FROM Win32_PhysicalMedia").ItemIndex(0); var machineID = cpuID + diskID; console.log(machineID); ``` 3. 使用Node.js模块:如果你在Node.js环境中运行JavaScript代码,你可以使用一些第三方模块来获取机器码。例如,`node-machine-id`模块可以获取硬件ID、网络适配器MAC地址、CPU序列号等等信息,并将它们哈希成一个唯一标识符。 以下是一个使用`node-machine-id`模块获取机器码的示例代码: ``` var machineID = require('node-machine-id').machineIdSync(); console.log(machineID); ``` 需要注意的是,以上方法都不是完全可靠和唯一的,因为它们都可以被模拟或伪造。如果你需要获取更可靠和唯一的机器码,建议使用一些专门的硬件安全模块或数字证书来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值