很多做百度推廣或谷歌 Adwords 的人都會遇到了些因網站內容不太符合百度或谷歌的相關政策而帳户被拒的情況。如果網站確實含違規內容,被拒理所應當,這也是為了保障網民的利益。而實際似乎很多情況下因為一刀切,網站也沒有太違規的內容也被誤殺,所以經常會想一些辦法來規避審核不通過的風險。

那麼一般會有哪些方法來處理這樣的問題呢?

1. 先做一些完全符合規範的單頁或者專題頁,提交,審核通過後作 301 跳轉

操作起來比較容易,先做靜態單頁 index.html 或者 index.php,提交審核,審核通過後,直接在服務器 IIS 下設置資源永久重定向,把 index.html301 跳轉到真實的頁面,如果是 index.php,則可直接在裏面寫 PHP301 跳轉代碼:

<?php

header("HTTP/1.1 301 Moved Permanently");

header('location:http://www.***.com/');

exit;

?>

2. 區域性 IP 屏蔽

有些推廣的網站本來就有地域性,只需要特定地區可訪問就行了,然後如果全國可訪問也沒關係,重點是百度或 GOOGLE 總部審核人員所在的地區如果可以訪問,可能導致網站被誤判的,那麼通常會考慮直接把部分地區的 IP 給禁掉了。

從程序上實現:獲取訪案 IP-> 在全真 IP 庫中查找出 IP 所在地區-> 正則匹配-> 顯示不同頁面。

具體代碼如下:

//php 獲取 ip 的算法

$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];

$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];

//echo $user_IP;

?>

<?

//===================================

//

// 功能:IP 地址獲取真實地址函數

// 參數:$ip - IP 地址

// 作者:[Discuz!] (C) Comsenz Inc.

//

//===================================

function convertip($ip) {

//IP 數據文件路徑

$dat_path = './ip/qqWry.dat';//需下載純真 IP 庫

//檢查 IP 地址

if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $ip)){

return 'IP Address Error';

}

//打開 IP 數據文件

if(!$fd = @fopen($dat_path, 'rb')){

return 'IP date file not exists or access denied';

}

//分解 IP 進行運算,得出整形數

$ip = explode('.', $ip);

$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

//獲取 IP 數據索引開始和結束位置

$DataBegin = fread($fd, 4);

$DataEnd = fread($fd, 4);

$ipbegin = implode('', unpack('L', $DataBegin));

if($ipbegin < 0) $ipbegin += pow(2, 32);

$ipend = implode('', unpack('L', $DataEnd));

if($ipend < 0) $ipend += pow(2, 32);

$ipAllNum = ($ipend - $ipbegin) / 7 + 1;

$BeginNum = 0;

$EndNum = $ipAllNum;

//使用二分查找法從索引記錄中搜索匹配的 IP 記錄

while($ip1num>$ipNum || $ip2num<$ipNum) {

$Middle= intval(($EndNum + $BeginNum) / 2);

//偏移指針到索引位置讀取 4 個字節

fseek($fd, $ipbegin + 7 * $Middle);

$ipData1 = fread($fd, 4);

if(strlen($ipData1) < 4) {

fclose($fd);

return 'System Error';

}

//提取出來的數據轉換成長整形,如果數據是負數則加上 2 的 32 次冪

$ip1num = implode('', unpack('L', $ipData1));

if($ip1num < 0) $ip1num += pow(2, 32);

//提取的長整型數大於我們 IP 地址則修改結束位置進行下一次循環

if($ip1num > $ipNum) {

$EndNum = $Middle;

continue;

}

//取完上一個索引後取下一個索引

$DataSeek = fread($fd, 3);

if(strlen($DataSeek) < 3) {

fclose($fd);

return 'System Error';

}

$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));

fseek($fd, $DataSeek);

$ipData2 = fread($fd, 4);

if(strlen($ipData2) < 4) {

fclose($fd);

return 'System Error';

}

$ip2num = implode('', unpack('L', $ipData2));

if($ip2num < 0) $ip2num += pow(2, 32);

//沒找到提示未知

if($ip2num < $ipNum) {

if($Middle == $BeginNum) {

fclose($fd);

return 'Unknown';

}

$BeginNum = $Middle;

}

}

$ipFlag = fread($fd, 1);

if($ipFlag == chr(1)) {

$ipSeek = fread($fd, 3);

if(strlen($ipSeek) < 3) {

fclose($fd);

return 'System Error';

}

$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));

fseek($fd, $ipSeek);

$ipFlag = fread($fd, 1);

}

if($ipFlag == chr(2)) {

$AddrSeek = fread($fd, 3);

if(strlen($AddrSeek) < 3) {

fclose($fd);

return 'System Error';

}

$ipFlag = fread($fd, 1);

if($ipFlag == chr(2)) {

$AddrSeek2 = fread($fd, 3);

if(strlen($AddrSeek2) < 3) {

fclose($fd);

return 'System Error';

}

$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));

fseek($fd, $AddrSeek2);

} else {

fseek($fd, -1, SEEK_CUR);

}

while(($char = fread($fd, 1)) != chr(0))

$ipAddr2 .= $char;

$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));

fseek($fd, $AddrSeek);

while(($char = fread($fd, 1)) != chr(0))

$ipAddr1 .= $char;

} else {

fseek($fd, -1, SEEK_CUR);

while(($char = fread($fd, 1)) != chr(0))

$ipAddr1 .= $char;

$ipFlag = fread($fd, 1);

if($ipFlag == chr(2)) {

$AddrSeek2 = fread($fd, 3);

if(strlen($AddrSeek2) < 3) {

fclose($fd);

return 'System Error';

}

$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));

fseek($fd, $AddrSeek2);

} else {

fseek($fd, -1, SEEK_CUR);

}

while(($char = fread($fd, 1)) != chr(0)){

$ipAddr2 .= $char;

}

}

fclose($fd);

//最後做相應的替換操作後返回結果

if(preg_match('/http/i', $ipAddr2)) {

$ipAddr2 = '';

}

$ipaddr = "$ipAddr1 $ipAddr2";

$ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);

$ipaddr = preg_replace('/^s*/is', '', $ipaddr);

$ipaddr = preg_replace('/s*$/is', '', $ipaddr);

if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {

$ipaddr = 'Unknown';

}

return $ipaddr;

}

$area=convertip($user_IP);

if(strpos($area,'福建')===false){

echo file_get_contents('index.html');

}else{

echo file_get_contents('default.htm');

}

?>

3. 特定 IP 或者特定 IP 段限制

有些站是需要全國推廣的,肯定不能直接禁掉一個地區了,那樣損失會比較慘重。那麼只能是説通過一些方式獲取審核人員的 IP 或者 IP 段,然後來針對這些 IP 顯示不同的內容了。

那麼怎樣獲取審核人員的 IP 呢?這裏有些技巧,先做一個可以檢測 IP 信息的頁面,保證沒有第三個人知道這個頁面,然後提交推廣帳户審核,記錄下 IP,即得到審核人員的 IP 或 IP 段了。

然後通過程序處理,判斷當前訪客 IP,如果 IP 在所記錄的審核人員的 IP 段內,直接封掉或者顯示不同的內容。

具體實現代碼如下:

獲取審核人員 IP:

<?

//php 獲取 ip 的算法

$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];

$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];

echo $user_IP;

?>

對特定 IP 段顯示不同內容:

<?php

$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];

$ip2 = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];

$ip2A=explode('.',$ip2);

$ip2=$ip2A[0].'.'.$ip2A[1].'.'.$ip2A[2];

$ipArr2=array('121.32.89','220.181.50','180.168.217');

if(in_array($ip2,$ipArr2)){

echo file_get_contents('abc.htm');

}else{

echo file_get_contents('def.htm');

}

?>

4. 給蜘蛛放行

那麼,這樣處理後,細心的你會想,這樣部分地區的蜘蛛也不是被幹掉了,爬到的不也不是想到的內容?這個問題也可以好處理,判斷來路是否為蜘蛛,然後給蜘蛛放行。

下面是判斷是否為蜘蛛的 PHP 函數:

function is_websearch()

{

if(!defined('IS_WEBSEARCH'))

{

$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

$browsers = 'msie|netscape|opera|konqueror|mozilla';

$spiders = 'bot|spider|google|isaac|surveybot|baiduspider|yahoo|sohu-search|yisou|3721|qihoo|daqi|ia_archiver|p.arthur|fast-webcrawler|java|microsoft-atl-native|turnitinbot|webgather|sleipnir|msn';

if(preg_match("/($browsers)/", $_SERVER['HTTP_USER_AGENT']))

{

define('IS_WEBSEARCH', FALSE);

}

elseif(preg_match("/($spiders)/", $_SERVER['HTTP_USER_AGENT']))

{

define('IS_WEBSEARCH', TRUE);

}

else

{

define('IS_WEBSEARCH', FALSE);

}

}

return IS_WEBSEARCH;

}

在上面屏蔽 IP 的避加上是否為蜘蛛的判斷函數的調用,給蜘蛛放行即可。

本文中主要從技術角度去實現對一些風險的規避,但並不意味着倡導大家做一些不適合推廣的站點去做推廣,希望能給有實際需要的人蔘考。