ERP系统中IP地址需要验证的场景
例如:
可以看见距离最近的门店,可以选择自己到店提货或者快递,这个是要进行IP地址判断
实现IP地址验证方法有很多:
1、网上有免费的地址验证,如新浪提供的:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=117.136.75.113
调用方法:
<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script><script type="text/javascript">// < ![CDATA[
// < ![CDATA[
//format参数设置返回格式 js/json //ip 要查询IP 可选 //反回格式如下: //var remote_ip_info = {"ret":1,"start":"117.89.35.0","end":"117.89.35.255","country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u5357\u4eac","district":"\u767d\u4e0b","isp":"\u7535\u4fe1","type":"","desc":""}; console.log(remote_ip_info["country"]+','+remote_ip_info["province"]+"省"+','+remote_ip_info["city"]+"市")//中国,江苏省,南京市
// ]]></script>
返回结果:
var remote_ip_info = {"ret":1,"start":-1,"end":-1,"country":"\u4e2d\u56fd","province":"\u798f\u5efa","city":"","district":"","isp":"","type":"","desc":""};

除了新浪,还有很多平台提供免费IP地址验证,如下:
IP地址查询接口:http://apis.juhe.cn/ip/ip2addr,要先去https://www.juhe.cn/docs/api/id/1申请APPKEY
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js,新浪这个应该说是最不错的。并且返回的数据类型为可以自定义格式(默认为纯文本格式,根据format的参数定义,还可以返回JS、Json格式)。
新浪多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=219.242.98.111
搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson
搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8
搜狐另外的IP地址查询接口:http://txt.go.sohu.com/ip/soip
但免费的总是很难百分百准确,有时会出现地址错误的情况,如广东的IP显示为福建或湖南省的,想要百分百准确的,就需要用到付费的API
2、付费的我们这里用到ip138.com提供的,目前客户反馈较好,没有发现有失误的现象,要查看
ip138.com上的接口文档,可以在上面注册一个帐号,查看下,我这里复制出来一部分分享下
如:
iP查询接口文档说明
接口地址
http协议:
http://api.ip138.com/query/
https协议:
https://api.ip138.com/query/
请求方式
get
示例1(Linux命令行下执行)
参数说明:
1. ip string ip地址 例如
117.25.13.123(可选,默认为请求者iP)
2. datatype string txt|jsonp|xml(可选,默认为jsonp)
3. callback string 回调函数 当前参数仅为jsonp格式数据提供(可选,默认为空)
4. token string 购买服务后会提供(必填)
curl "
http://api.ip138.com/query/?ip=8.8.8.8&datatype=jsonp&callback=find" -H "token:cc87f3c77747bccbaaee35006da1ebb65e0bad57"
示例2(js引入推荐方案)
参数说明:
1. ip string ip地址 例如
117.25.13.123(可选,默认为请求者iP)
2. datatype string txt|jsonp|xml(可选,默认为jsonp)
3. callback string 回调函数 当前参数仅为jsonp格式数据提供(可选,默认为空)
4. sign string 签名验证 签名算法:md5("ip=" + ip + "&token=" + token)(必填)
5. oid string 购买服务后提供(必填)
6. mid string 购买服务后提供(必填)
http://api.ip138.com/query/?ip=8.8.8.8&callback=find&oid={oid}&mid={mid}&sign=签名算法
示例3(为了您的token安全,请勿使用于js引入,js引入请参考示例2)
参数说明:
1. ip string ip地址 例如
117.25.13.123(可选,默认为请求者iP)
2. datatype string txt|jsonp|xml(可选,默认为jsonp)
3. callback string 回调函数 当前参数仅为jsonp格式数据提供(可选,默认为空)
4. token string 购买服务后会提供(必填)
http://api.ip138.com/query/?ip=8.8.8.8&datatype=jsonp&callback=find&token=cc87f3c77747bccbaaee35006da1ebb65e0bad57
JSONP返回示例
说明:ret 值为 ok 时 返回data查询结果数据 为err时返回msg错误信息
{
"ret": "ok", // ret 值为 ok 时 返回 data 数据 为err时返回msg数据
"ip": "
117.25.13.123", // ip
"data": [
"中国", // 国家
"福建", // 省会或直辖市
"福州", // 地区或城市
"电信", // 运营商
"361000", // 邮政编码(暂不提供)
"0592" // 地区区号(暂不提供)
]
}
XML返回示例
说明:ret 值为 ok 时 返回data查询结果数据 为err时返回msg错误信息
<xmlinfo>
<ret>ok</ret>
<ip>
117.25.13.123</ip>
<data>
<country>中国</country>
<region>福建</region>
<city>福州</city>
<isp>电信</isp>
<zip>361000(暂不提供)</zip>
<zone>0592(暂不提供)</zone>
</data>
</xmlinfo>
文本格式返回示例
117.25.13.123 中国 福建 福州 电信 361000(暂不提供) 0592(暂不提供)
查询token使用情况
URL
http://api.ip138.com/status/
请求方式
get
参数
1. token `string` ip查询服务token
示例
http://api.ip138.com/status/?token=cc87f3c77747bccbaaee35006da1ebb65e0bad57
响应
{
"ret":"ok",
"data":{
"reqs":10, //当前小时请求数
"hour":3000, //当前小时购买次数
"package":19767 //备用次数
}
}
文章参考:IP地址验证,IP地址验证接口