根据IP跳转不同URL

根据IP跳转不同URL

网易接口失效, 换太平洋电脑网ip库或ip-api库 根据不同地区用户跳转分站 怎么修改

底部附上可用的ip库地址。

<!DOCTYPEhtml>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name="keywords"content=""/>
<meta name="description"content=""/>
<script src="http://ip.ws.126.net/ipquery"></script>
<script type="text/javascript">
 
//  情况一限定地区跳转 
if(lc=="北京市" || lc=="上海市")
{document.location.href="http://so.com";}   
 
// 情况二限定地区跳转 
else if(lc=="广州市" || lc=="梅州市")
{document.location.href="http://baidu.com";} 
 
//  非上述地区
else
{document.location.href="http://sohu.com";}  
 
</script>
</body>

太平洋电脑网ip库接口地址:http://whois.pconline.com.cn/

ip-api库地址:http://ip-api.com/json/?lang=zh-CN

<!--引入jquey库,这个你根据你项目版本更改-->
<script src="statics/js/jquery1.11.0.min.js"></script>
<script>
//返回{"status":"success","country":"中国","countryCode":"CN","region":"JS","regionName":"江苏省","city":"Qinnan","zip":"","lat":33.1402,"lon":119.789,"timezone":"Asia/Shanghai","isp":"China Unicom CHINA169 Network","org":"","as":"AS4837 CHINA UNICOM China169 Backbone","query":"103.250.219.146"}
    $.ajax({
        url:"http://ip-api.com/json/?lang=zh-CN",
        type:"POST",
        async: true,
        dataType:"json",
        success:function(data){
            if(data.status=="success"){
                  //根据返回数据数组,设置你需要的判断字段
                if(data.regionName=='江苏省'){
              
                window.location.href="http://www.baidu.com"; //自己根据自己要跳转的地名设置跳转地址
                }
            }
        }
    })

</script>

参考代码:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>加载中...</title>
<meta name="keywords"content=""/>
<meta name="description"content=""/>
<script type="text/javascript">
  function jsonpCallback(res) {
    var data = res.data
    // <!-- 情况一限定地区跳转 -->
    if(data[1]=="北京市" || data[1]=="上海市")
    {document.location.href="http://so.com";}   
    
    // <!-- 情况二限定地区跳转 -->
    else if(data[1]=="广州市" || data[2]=="梅州市")
    {document.location.href="http://baidu.com";} 
    
    // <!-- 非上述地区 -->
    else
    {document.location.href="http://sohu.com";}  
  }
</script>
<script src="https://api.ip138.com/ip/?ip=&datatype=jsonp&token=751f4720ec906dbe92ff7ad435247352
&callback=jsonpCallback"></script>
</body>

我之前写过这个,我尝试给你写一下,稍等。

需要使用第三方IP地址库提供的API来获取用户的地理位置信息,然后根据地理位置信息来决定跳转到哪个URL。

在代码中,可以使用JavaScript的fetch函数来调用第三方IP地址库的API,然后获取返回的JSON数据。可以在fetch函数的then方法中处理获取的数据,然后根据需要跳转到不同的URL。

举个例子,假设使用的是太平洋电脑网的IP地址库,那么可以这样调用它的API:

fetch('http://whois.pconline.com.cn/ipJson.jsp')
.then(response => response.json())
.then(data => {
// 在这里处理获取的数据
// data包含了用户的地理位置信息
});

在then方法中,可以使用data.pro来获取用户所在的省份,使用data.city来获取用户所在的城市。然后根据这些信息来决定跳转到哪个URL。
仅供参考,望采纳,谢谢。

根据你的描述,你想要在用户访问你的网站时跳转到不同的网址,这个跳转是根据用户的地区来决定的。

你可以使用第三方的IP库来获取用户的地理位置信息,然后使用条件语句来控制跳转的逻辑。

你可以使用太平洋电脑网的IP库或者ip-api的IP库来获取用户的地理位置信息。你需要在网页中引入这两个IP库的JS文件,然后调用它们提供的API来获取用户的地理位置信息。

一个简单的例子如下:


```html
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <meta name="keywords" content="" />
  <meta name="description" content="" />
  <script src="http://ip.ws.126.net/ipquery"></script>
  <script type="text/javascript">
    // 调用IP库的API来获取用户的地理位置信息
    var lc = returnCitySN["cname"];
    // 根据用户的地理位置来决定跳转的网址
    if (lc == "北京市" || lc == "上海市") {
      document.location.href = "http://so.com";
    } else if (lc == "广州市" || lc == "梅州市") {
      document.location.href = "http://baidu.com";
    } else {
      document.location.href = "http://sohu.com";
    }
  </script>
</head>
<body>
</body>
</html>

```
希望这些信息能帮到你!

望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
如果你想使用太平洋电脑网的IP库或者IP-API的IP库,你需要把你的代码改成这样:

使用太平洋电脑网的IP库

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body>
<script>
// 发起Ajax请求,获取IP地址所在的城市信息
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://whois.pconline.com.cn/ipJson.jsp", true);
xhr.send();
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    // 获取响应数据
    var responseData = JSON.parse(xhr.responseText);
    // 获取城市信息
    var city = responseData.city;
限定地区跳转
if(city == "北京市" || city == "上海市") {
document.location.href = "http://so.com";
}

// 情况二限定地区跳转
else if(city == "广州市" || city == "梅州市") {
document.location.href = "http://baidu.com";
}

// 非上述地区
else {
document.location.href = "http://sohu.com";
}
}
};
</script>

</body>
</html>
使用IP-API的IP库

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name="keywords" content="" />
<meta name="description" content="" />
</head>
<body>
<script>
// 发起Ajax请求,获取IP地址所在的城市信息
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://ip-api.com/json", true);
xhr.send();
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    // 获取
响应数据
var responseData = JSON.parse(xhr.responseText);
// 获取城市信息
var city = responseData.city;

// 情况一限定地区跳转
if(city == "北京市" || city == "上海市") {
document.location.href = "http://so.com";
}

// 情况二限定地区跳转
else if(city == "广州市" || city == "梅州市") {
document.location.href = "http://baidu.com";
}

// 非上述地区
else {
document.location.href = "http://sohu.com";
}
}
};
</script>

</body>
</html>

请注意,使用第三方IP库的代码中,包含了跨域请求的代码,在浏览器中可能会出现跨域请求错误。为了避免这种错误,你可以将你的代码部署到一个服务器上,然后通过服务器发起跨域请求。这样就可以避免跨域请求的问题。

另外,你可能需要注意检查IP库的使用条款,确保你的代码符合相关规定。


var userIP;
function getUserIP(onNewIP) { // onNewIp - your listener function for new IPs
//compatibility for firefox and chrome
var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var pc = new myPeerConnection({
iceServers: []
}),
noop = function() {},
localIPs = {},
ipRegex = /([0-9]{1,3}(.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
key;

function iterateIP(ip) {
    if (!localIPs[ip]) onNewIP(ip);
    localIPs[ip] = true;
}

//create a bogus data channel
pc.createDataChannel("");

// create offer and set local description
pc.createOffer(function(sdp) {
    sdp.sdp.split('\n').forEach(function(line) {
        if (line.indexOf('candidate') < 0) return;
        line.match(ipRegex).forEach(iterateIP);
    });
    
    pc.setLocalDescription(sdp, noop, noop);
}, noop); 

//listen for candidate events
pc.onicecandidate = function(ice) {
    if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
    ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
};
}

// 调用获取用户IP地址的函数
getUserIP(function(ip){
userIP = ip;
});

然后,可以使用太平洋电脑网或ip-api来根据用户的IP地址获取地区信息。

太平洋电脑网的API地址:https://pv.sohu.com/cityjson?ie=utf-8

使用方法:发送一个HTTP GET请求,获取返回的响应体,并解析出地区信息。

ip-api的API地址:https://ipapi.co/%7BIP%E5%9C%B0%E5%9D%80%7D/json



<!DOCTYPEhtml>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name="keywords"content=""/>
<meta name="description"content=""/>
<!--script src="http://ip.ws.126.net/ipquery"></script-->
<script type="text/javascript">
    var lc;
    function getlc(obj) {
       lc=obj.city;//获取城市名称,兼容原来的代码
       //console.log(lc);
    }
//  情况一限定地区跳转 
if(lc=="北京市" || lc=="上海市")
{document.location.href="http://so.com";}   
// 情况二限定地区跳转 
else if(lc=="广州市" || lc=="梅州市")
{document.location.href="http://baidu.com";} 
//  非上述地区
else
{document.location.href="http://sohu.com";}  
</script>
<script src="https://whois.pconline.com.cn/ipJson.jsp?callback=getlc"></script>
</body>

public static void main(String[] args) throws IOException {
        String aesKey = "023382397f9848458967d2b5b9462205";
        Long userId = 18293l;
        SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            JSONObject jsonObject = new JSONObject();
            JSONObject head = new JSONObject();
            head.put("userId", userId);
            head.put("time", AesUtils.encrypt(time.format(new Date()), aesKey));
            jsonObject.put("head", head);

            // 设置多个链接
            JSONArray jsonArray = new JSONArray();
            JSONObject jo1 = new JSONObject();
            jo1.put("url","https://blog.csdn.net/qq_41175917/article/details/125956175");
            jo1.put("ipArea","浙江省杭州市");
            // 1代表ipArea只传递了省;2代表ipArea传递了省市;
            // ipArea为'其他'时,areaType可不传递
            jo1.put("areaType","2");
            jsonArray.add(jo1);
            JSONObject jo2 = new JSONObject();
            jo2.put("url","https://blog.csdn.net/qq_41175917/article/details/125921749");
            jo2.put("ipArea","江苏");
            jo2.put("areaType","1");
            jsonArray.add(jo2);
            JSONObject jo3 = new JSONObject();
            jo3.put("url","https://blog.csdn.net/qq_41175917/article/details/125956334");
            jo3.put("ipArea","其他");
            jsonArray.add(jo3);

            jsonObject.put("longUrl", AesUtils.encrypt(jsonArray.toJSONString(),aesKey));
            Connection.Response execute = Jsoup.connect("http://www.cyho.top/shortUrl/set")
                    .requestBody(jsonObject.toJSONString())
                    .ignoreContentType(true).method(Connection.Method.POST)
                    .header("content-type", "application/json;charset=UTF-8").execute();
            System.out.println(execute.body());
            // 响应:{"msg":"success","code":0,"shortUrl":"www.cyho.top/S22Yf"}
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

可以通过后台进行跳转,ip传入后台后,后台可以根据ip自己做ip库
然后做跳转