用代碼實(shí)現(xiàn)屏蔽WordPress指定國(guó)家和省份地區(qū)用戶IP訪問

麥子 優(yōu)化維護(hù)77字?jǐn)?shù) 3601閱讀12分0秒閱讀模式

基于我們有些運(yùn)維需求,需要屏蔽指定國(guó)家和地區(qū)的用戶IP訪問。這里,我們可以用特定的PHP腳本撰寫檢測(cè)指定IP的地區(qū)IP,然后通過引用到WordPress嵌入到頁面中。這里,麥子整理幾個(gè)網(wǎng)上采用的方法。后續(xù)如果有需要的時(shí)候可以一并參考選擇用到我們網(wǎng)站中。

1、屏蔽指定國(guó)家

<?php
/**
*
* test.php(屏蔽國(guó)家IP)
*
*/
$verification = '美國(guó)';//需要屏蔽國(guó)家的IP
function get_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'];
}
return $ip;
}
$ip = get_client_ip();//獲取訪客IP
$antecedents = $_SERVER['HTTP_REFERER'];//訪客來路地址
$result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP數(shù)據(jù)庫(kù)來自淘寶。
$address = json_decode($result,true);
//判斷訪客是否屬于美國(guó),是否來自百度,是否來自谷歌
if($address['data']['country'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
sleep(10);//設(shè)置一個(gè)10秒等待。
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 3600000');
exit;
}
?>

這里,我們將代碼丟到test.php頁面中然后引用到index.php或者是header.php中。

2、屏蔽指定省份

<?php
/**
*
* test.php(屏蔽地方IP)
*
*/
$verification = '江西省';//需要屏蔽省份的IP
function get_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'];
}
return $ip;
}
$ip = get_client_ip();//獲取訪客IP
$antecedents = $_SERVER['HTTP_REFERER'];//訪客來路地址
$result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP數(shù)據(jù)庫(kù)來自淘寶。
$address = json_decode($result,true);
//判斷訪客是否屬于江西省,是否來自百度,是否來自谷歌
if($address['data']['region'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
sleep(99999999);//設(shè)置一個(gè)999999秒的等待。
Header("HTTP/1.1 204 No Content");
exit;
}
?>

3、屏蔽指定訪客不跳過搜索引擎蜘蛛

<?php
function get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),
"unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']
&& strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
header("Content-type: text/html; charset=utf-8");
$verification = '山東省';//修改省份
$ip = get_client_ip(); //獲取當(dāng)前用戶的ip
$antecedents = $_SERVER['HTTP_REFERER'];//訪客來路地址
$result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP數(shù)據(jù)庫(kù)來自淘寶。
$address = json_decode($result,true);
if($address['data']['region'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
sleep(9999999999999999);
ob_start();
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 3600');
echo '網(wǎng)站備案中....';
exit;
}
?>

根據(jù)需要修改對(duì)應(yīng)省份。這個(gè)是可以屏蔽對(duì)應(yīng)指定訪客地區(qū)的,但是不屏蔽蜘蛛。

參考文章:

1、https://www.cnblogs.com/igood/p/4802114.html

2、https://wzfou.com/ip-ku/

投上你的一票
 
  • 本文由 麥子 發(fā)表于 2024年11月28日 17:18:07
  • 轉(zhuǎn)載請(qǐng)務(wù)必保留本文鏈接:http://bjj.org.cn/wplimit-area.html
  • WordPress屏蔽地區(qū)