联系客服: iP138.com客服89932929 iP138.com客服1586314992
iP查询接口

iP查询接口支持HTTPS(赠送1000次)

简介:获取iP地址对应的省市区以及运营商名称

已连接应用数:72018

  • API接口QQ交流群:177096428   iP138 api接口
  • 数据修正QQ处理群:94181690    iP138数据修正

国内:网宿cdn; 国际:亚洲中国香港、韩国首尔、日本东京、新加坡、泰国曼谷、欧洲德国法兰克福、北美洲美国硅谷、南美洲巴西圣保罗

接口地址

http协议:
国内大陆优化(支持ipv6)http://api.ipshudi.com/ipdata/
国际各洲覆盖(部份ipv6)http://api.ip138.com/ipdata/

https协议:
国内大陆优化(支持ipv6)https://api.ipshudi.com/ipdata/
国际各洲覆盖(部份ipv6)https://api.ip138.com/ipdata/

* API接口可能会因为各种网络原因和攻击都可能产生阻断,请开发时做好冗余和异常处理

* 当HTTP请求返回的状态码非200时,请做异常处理,比如 202 状态码造成的原因可能是无效Token、余额不足、格式错误

javascript调用iP查询接口示例:

方法一

                                        function ajax(params){
                                            params = params||{};
                                            if (!params.url) {
                                                throw new Error('Necessary parameters are missing.'); //必要参数未填
                                            }
                                            var random = +new Date;
                                            var hander = null;
                                            var options = {
                                                url: '',                                //接口地址
                                                type: 'GET',                            //请求方式
                                                timeout: 5000,                          //超时等待时间
                                                cache: true,                            //缓存 
                                                async: true,                            //是否异步
                                                xhrFields: {},                          //设置XHR对象属性键值对。如果需要,可设置withCredentials为true的跨域请求。
                                                dataType: 'json',                       //请求的数据类型
                                                data: {},                               //参数
                                                jsonp: 'callback',                      //传递请求完成后的函数名
                                                jsonpCallback: 'jsonp_' + random,       //请求完成后的函数名
                                                error: function() {},                   //请求失败后调用
                                                success: function(){},                  //请求成功后调用
                                                complete: function(){}                  //请求完成后调用
                                            };
                                            var formatParams = function(json) {
                                                var arr = [];
                                                for(var i in json) {
                                                    arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(json[i]));
                                                }
                                                return arr.join("&");
                                            };
                                            for(var i in params){
                                                switch(i){
                                                    case 'type':
                                                        options[i] = params[i].toUpperCase();
                                                        break;
                                                    case 'dataType':
                                                        options[i] = params[i].toLowerCase();
                                                        break;
                                                    default:
                                                        options[i] = params[i];
                                                }
                                            }
                                            if(typeof options.data =='object'){
                                                options.data = formatParams(options.data);
                                            }
                                            if(options.dataType=='jsonp'){
                                                options.cache = params.cache||false;
                                                //插入动态脚本及回调函数
                                                var $head = document.getElementsByTagName('head')[0];
                                                var $script = document.createElement('script');
                                                $head.appendChild($script);
                                                window[options.jsonpCallback] = function (json) {
                                                    $head.removeChild($script);
                                                    window[options.jsonpCallback] = null;
                                                    hander && clearTimeout(hander);
                                                    options.success(json);
                                                    options.complete();
                                                };
                                                //发送请求
                                                if(options.cache){
                                                    options.data += options.data?'&_'+random:'_'+random;
                                                }
                                                options.data += '&'+options.jsonp+'='+options.jsonpCallback;
                                                $script.src = (options.url + '?' + options.data).replace('?&','?');
                                                //超时处理
                                                hander = setTimeout(function(){
                                                    $head.removeChild($script);
                                                    window[options.jsonpCallback] = null;
                                                    options.error();
                                                    options.complete();
                                                }, options.timeout);
                                            }else{
                                                if(options.cache){
                                                    options.data += options.data?'&_'+random:'_'+random;
                                                }
                                                //创建xhr对象
                                                var xhr = new (self.XMLHttpRequest||ActiveXObject)("Microsoft.XMLHTTP");
                                                if(!xhr){
                                                    return false;
                                                }
                                                //发送请求
                                                if (options.type == 'POST') {
                                                    xhr.open(options.type, options.url, options.async);
                                                    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
                                                }else{
                                                    options.url += options.url.indexOf('?')>-1?'&'+options.data:'?'+options.data;
                                                    xhr.open(options.type, options.url, options.async);
                                                    options.data = null;
                                                }
                                                if(options.xhrFields){
                                                    for(var field in options.xhrFields){
                                                        xhr[field]= options.xhrFields[field];
                                                    }
                                                }
                                                xhr.send(options.data);
                                                //超时处理
                                                var requestDone = false;
                                                hander = setTimeout(function() {
                                                    requestDone = true;
                                                    if(xhr.readyState != 4){
                                                        xhr.abort();
                                                        options.error();
                                                    }
                                                    options.complete();
                                                }, options.timeout);
                                                //状态处理
                                                xhr.onreadystatechange = function(){
                                                    if(xhr.readyState == 4&&!requestDone) {
                                                        if(xhr.status>=200 && xhr.status<300||xhr.status == 304) {
                                                            var data = options.dataType == "xml" ? xhr.responseXML : xhr.responseText;
                                                            if (options.dataType == "json") {
                                                                try{
                                                                    data =  JSON.parse(data);
                                                                }catch(e){
                                                                    data = eval('(' + data + ')');
                                                                }
                                                            }
                                                            options.success(data);
                                                        } else {
                                                            options.error();
                                                        }
                                                        hander && clearTimeout(hander);
                                                        options.complete();
                                                    }
                                                };
                                            }
                                        }

                                        ajax({
                                            'url':'https://api.ip138.com/ipdata/',
                                            'data':{            //默认自动添加callback参数
                                                'ip':'8.8.8.8', //为空即为当前iP地址
                                                'oid':'35553',
                                                'mid':'2',
                                                'token':'00d5cb1fac5dc5cbfe2ff218292a2dfd33'  //不安全,请定期更换token,建议进行文件压缩
                                            },
                                            'dataType':'jsonp',
                                            'success':function(json){
                                                console.log(json);
                                            }
                                        });
                                        

方法二(jQuery)

                                        $.ajax({
                                            'url':'https://api.ip138.com/ipdata/',
                                            'data':{            //默认自动添加callback参数
                                                'ip':'8.8.8.8', //为空即为当前iP地址
                                                'oid':'35553',
                                                'mid':'2',
                                                'token':'00d5cb1fac5dc5cbfe2ff218292a2dfd33'  //不安全,请定期更换token,建议进行文件压缩
                                            },
                                            'dataType':'jsonp',
                                            'success':function(json){
                                                console.log(json);
                                            }
                                        });