Board logo

标题: [技术文章] PHP代码按省份屏蔽管局访问IP,不影响百度蜘蛛(备案不关站方法) [打印本页]

作者: shillan    时间: 2019-4-28 09:01     标题: PHP代码按省份屏蔽管局访问IP,不影响百度蜘蛛(备案不关站方法)

  1. <?php
  2. function get_client_ip() {
  3. if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  4. $ip = getenv("HTTP_CLIENT_IP");
  5. else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),
  6. "unknown"))
  7. $ip = getenv("HTTP_X_FORWARDED_FOR");
  8. else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  9. $ip = getenv("REMOTE_ADDR");
  10. else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']
  11. && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  12. $ip = $_SERVER['REMOTE_ADDR'];
  13. else
  14. $ip = "unknown";
  15. return ($ip);
  16. }
  17. header("Content-type: text/html; charset=utf-8");
  18. $verification = '山东省';//修改省份
  19. $ip = get_client_ip(); //获取当前用户的ip
  20. $antecedents = $_SERVER['HTTP_REFERER'];//访客来路地址
  21. $result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。
  22. $address = json_decode($result,true);
  23. if($address['data']['region'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
  24. sleep(9999999999999999);
  25. ob_start();
  26. header('HTTP/1.1 503 Service Temporarily Unavailable');
  27. header('Status: 503 Service Temporarily Unavailable');
  28. header('Retry-After: 3600');
  29. echo '网站备案中....';
  30. exit;
  31. }
  32. ?>
复制代码
使用方法:

一、新建一个php文件,如:beian.php

二、再将以上代码,复制进去,修改一下自己所在的地区。这个地区就无法访问了。

三、保存并上传到网站根目录。

四、嵌入程序:

(1)wordpress程序,在wp-config.php下添加一句 require_once(ABSPATH.'shielded.php');  保存。

(2)PHP程序,打开网站根目录index.php文件,<?php include 'beian.php';?> 将这段代码添加到顶部,保存。

(3).net程序 打开网站根目录index.aspx文件,<!-- #include file="beian.php" --> 将这段代码添加到顶部,保存。

(4)asp程序 打开网站根目录index.asp文件,<!--#include file="beian.php"--> 将这段代码添加到顶部,保存。
作者: shillan    时间: 2019-4-28 09:26     标题: php屏蔽ip、ip段、省份地区的访客

实际应用中需要屏蔽一些不友好的访客,可针对这部分访客进行单独IP屏蔽、指定IP段屏蔽、指定地区屏蔽。

代码如下:
  1. <?php
  2. header("content-Type: text/html; charset=utf-8");
  3. // 获取访客IP
  4. function getIP(){
  5. global $ip;
  6. if (getenv("HTTP_CLIENT_IP"))
  7. $ip = getenv("HTTP_CLIENT_IP");
  8. else if(getenv("HTTP_X_FORWARDED_FOR"))
  9. $ip = getenv("HTTP_X_FORWARDED_FOR");
  10. else if(getenv("REMOTE_ADDR"))
  11. $ip = getenv("REMOTE_ADDR");
  12. else $ip = "Unknow";
  13. return $ip;
  14. }
  15. //根据blockip.txt禁用ip地址及对应ip段
  16. $ip=getIP();
  17. while($ip[count($ip-1)]!='.')$ip=substr($ip,1, -1); //整理出ip段 ,如只需ip,可删除此行
  18. $ban=file_get_contents("blockip.txt");
  19. if(stripos($ban,$ip))
  20. {
  21. echo "document.writeln(\"<script>window.location.replace(\'about:blank\');</script>\");";
  22. }

  23. //将IP转化城市
  24. $getIp = getIP();
  25. $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=百度地图应用的ak秘钥&ip={$getIp}&coor=bd09ll");
  26. $json = json_decode($content);
  27. $city = $json->{'content'}->{'address'};//按层级关系提取address数据
  28. //根据访问用户所在城市屏蔽
  29. if(strpos($city,'北京')!==false||strpos($city,'广东')!==false||strpos($city,'浙江')!==false||strpos($city,'陕西')!==false)
  30. {
  31. echo "document.writeln(\"<script>window.location.replace(\'about:blank\');</script>\");";
  32. exit;
  33. }
  34. ?>
复制代码
blockip.txt文件内容:
  1. BEGIN:
  2. 127.0.0.1
复制代码
ip一行一个,如果启用屏蔽ip段,那么此ip对应的127.0.0段将被屏蔽

百度地图的AK秘钥申请:http://lbsyun.baidu.com/apiconsole/key?application=key




欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2