现在市面上有不少的运营商提供免费的IP库API可供使用,例如淘宝的IP库、IPIP的IP库还有IP138的IP库,这些IP库都是比较精准的,而且官方提供了详细的PHP、JS、ASP等示例文档,有需要的朋友可以参考文档稍微修改就可以拿来用了。
例如:搭建了外贸站,想要设置一下不让国内的竞争同行访问,需要精确到国内某一个省。要想达到这样的效果,就需要利用到IP库了。
这篇文章就来搜集整理一下网站限制IP访问的方法,以及梳理一下国内外免费在线和离线的IP库,方便大家使用。
$verification='美国';//需要屏蔽国家的IP
functionget_client_ip(){
$ip=$_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])&&preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_REAL_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_REAL_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_CLIENT_IP'])&&preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
$ip=get_client_ip();//获取访客IP
$antecedents=$_SERVER['HTTP_REFERER'];//访客来路地址
$result=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。
$address=json_decode($result,true);
//判断访客是否属于美国,是否来自百度,是否来自谷歌
if($address['data']['country']==$verification&&strpos($antecedents,'baidu')===false&&strpos($antecedents,'google')===false){
sleep(10);//设置一个10秒等待。
header('HTTP/1.1503ServiceTemporarilyUnavailable');
header('Status:503ServiceTemporarilyUnavailable');
header('Retry-After:3600000');
如果你想要禁止某一个省份的IP访问你的网站,请使用以下PHP代码:
$verification='江西省';//需要屏蔽省份的IP
functionget_client_ip(){
$ip=$_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR'])&&preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_REAL_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_REAL_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_CLIENT_IP'])&&preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
$ip=get_client_ip();//获取访客IP
$antecedents=$_SERVER['HTTP_REFERER'];//访客来路地址
$result=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。
$address=json_decode($result,true);
//判断访客是否属于江西省,是否来自百度,是否来自谷歌
if($address['data']['region']==$verification&&strpos($antecedents,'baidu')===false&&strpos($antecedents,'google')===false){
sleep(99999999);//设置一个999999秒的等待。
Header("HTTP/1.1204NoContent");
聪明的朋友一定发现了以上代码其实还可以精确到市一级IP,你只需要替换成city就可以了,代码引用淘宝IP库的格式如下:
当特定省份和城市的IP访问你的网站时,使用以下代码可以弹出提示:
<scripttype="text/javascript"src="https://ip.ws.126.net/ipquery"></script>
varprovince=localAddress.province;//获取所在省,比如广东省
varcity=localAddress.city;//获取所在市,比如广州市
if(province.indexOf('广东')!=-1){
if(city.indexOf('广州')!=-1){
当特定省份和城市的IP访问你的网站时,使用以下代码跳转到某一个网址:(其它动作可以根据自定义)
<scriptsrc="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
$.getScript('https://ip.ws.126.net/ipquery',function(){
console.log(localAddress.city)
if(localAddress.city.indexOf('北京')!=-1||localAddress.city.indexOf('杭州')!=-1||localAddress.city.indexOf('上海')!=-1||localAddress.city.indexOf('广州')!=-1||localAddress.city.indexOf('深圳')!=-1||localAddress.city.indexOf('东莞')!=-1||localAddress.city.indexOf('房山')!=-1){
window.location.href='https://www.baidu.com';

if(localAddress.province.indexOf('福建')!=-1){
window.location.href='https://www.baidu.com';
3.1淘宝IP库
网址:http://ip.taobao.com/
访问方式:http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串],返回内容以json格式。优点:精准度非常高。不足之处:不支持Https。每个用户的访问频率需小于10qps。示例:
http://ip.taobao.com/service/getIpInfo.php?ip=171.208.203.169
3.2网易IP库
网址:https://ip.ws.126.net/ipquery
https://ip.ws.126.net/ipquery?ip=171.208.203.169
varlo="四川省",lc="乐山市";varlocalAddress={city:"乐山市",province:"四川省"}
3.3搜狐IP库
网址:http://pv.sohu.com/cityjson
网址:https://www.ipip.net/support/api.html
IPIP.netIP免费接口,限速每天1000次,示例:
http://freeapi.ipip.net/118.28.8.8
["中国","天津","天津","","鹏博士"]
3.5IP.laIP库
IP.la是IPIP.net搞的海外版,官网说“Youcaninitiaterequestswithoutanylimit.”示例:
$ip=file_get_contents('https://api.ip.la');
echo"MypublicIPaddressis:".$ip;
3.6IP138IP查询
网址:http://user.ip138.com/ip/
http协议:http://api.ip138.com/query/
https协议:https://api.ip138.com/query/
http://api.ip138.com/query/?ip=8.8.8.8&callback=find&oid={oid}&mid={mid}&sign=签名算法
3.7百度地图IP查询
网址:http://lbsyun.baidu.com/
https://api.map.baidu.com/location/ip?ak=F454f8a5efe5e577997931cc01de3974&ip=118.28.8.8
3.8腾讯位置服务
网址:https://lbs.qq.com/webservice_v1/guide-ip.html
https://apis.map.qq.com/ws/location/v1/ip?ip=61.135.17.68&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77
3.9ipdatabase-二叉树快速搜索IP地址数据库
网址:https://github.com/wzhe06/ipdatabase
数据源采用2015年广告协会制定的IP地址标准数据库,利用二叉树实现IP查询,首先将10进制IPV4地址转化为二进制构建二叉树,利用二叉树搜索进行搜索,示例:
publicvoidexample()throwsException{
Stringip="58.30.15.255";
Stringregion=IpHelper.findRegionByIp(ip);
System.out.println(region);
3.10ip2region-Binary,B树和纯内存三种查询IP库
网址:https://github.com/lionsoul2014/ip2region
该数据聚合了一些知名ip到地名查询提供商的数据,每条ip数据段都固定了格式:城市Id|国家|区域|省份|城市|ISP,中国的数据精确到了城市,其他国家只能定位到国家。示例:
phpbinding/php/testSearcher.phphttps://www.daniao.org/data/ip2region.db
+----------------------------------+
|Author:chenxin619315@gmail.com|
|Type'quit'toexitprogram|
+----------------------------------+
p2region>>101.105.35.57
2163|中国|华南|广东省|深圳市|鹏博士in0.02295millseconds
3.11纯真IP库
网址:http://www.cz88.net/
总得来说,免费IP库还是挺多的,无论是付费的IP库或者是免费的IP库都不一定做到100%的准确,尤其是离线的IP库更需要及时更新才可以获取正确的信息。
离线IP库可移植性最强,你可以根据自己的需要整合到JS、PHP、ASP、C#、JAVA等当,在线的IP库API查询受网络以及频率限制的影响,不适用于大型的应用场景。
需要注意的是,IP库在线查询一般会设置有一定的频率限制,例如淘宝的IP库如果一定时间内请求太快的话很容易就变成了502错误了,对企业用户可以选择这些IP库的付费版,可以解决免费IP库各个版本的限制。
最好是本地有库直接解析,不然就容易发生在线库延迟升高了自己网站也在那里卡半天才有反应,所以在线ip库,不适合大流量站。
原文:https://wzfou.com/ip-ku/
参考:https://www.cnblogs.com/wawahaha/p/3546189.html
本文来源:免费资源--网站限制地区访问(免费改ip地址)
本文地址:https://www.idcbaba.com/mianfei/610.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。