網站如何屏蔽特定國家IP/語言的訪客, 同時允許搜索引擎蜘蛛和自己訪問?

環境: VPS, Centos, Ngix, WordPress

1. 要屏蔽所有中國IP和中文語言的訪客

2. 屏蔽代理訪問

3. 以上訪問跳轉到某個特定網頁或顯示一段特定文字

4. 允許搜索引擎蜘蛛如Googlebot訪問

5. 允許自己訪問

要求比較多, 原諒我不會寫PHP代碼...


純理論分析,不知能否幫忙:

  • PHP: GeoIP - Manual ,PHP看來有geo模塊,可以對訪問IP的地址進行地域分析,如果來自cn的,自行處理掉。(用法介紹GeoIP的使用 - PHP版)
  • 語言的話,可以試試查HTTP頭的期望語言,自行處理掉zh-*
  • 封代理功夫大這個不用說了,不過可以參考維基百科的封禁表(

//zh.wikipedia.org/wiki/Special:%E5%B0%81%E7%A6%81%E5%88%97%E8%A1%A8?wpTarget=wpOptions[]=userblockslimit=500

,注意原因是{{blocked proxy}},API介面版就是

//zh.wikipedia.org/w/api.php?action=querylist=blocksformat=jsonbklimit=500bkshow=!account

詳細用法,看 Special:API沙盒 顯示)

,由於本身也反對使用代理編輯,所以抓代理也很狠,而且有一位外國大神開展了一個計劃用來偵測代理用的,維基百科:Open proxy detection,可以勾取來參考。

  • 索引蜘蛛的話,HTTP頭的UserAgent就可以了。
  • 自己訪問的話,IP白名單,上面提到的VPN是更好的方法。

然後所有頁都必須通過這個過濾器來訪問,應該就是這樣了。


要屏蔽所有中國IP和中文語言的訪客

這還不容易!在你的PHP文件index.php最開始加上一句

header("X-Blocked-Keyword: dongtaiwang.com")

屏蔽代理訪問簡直扯淡,不可能實現(原因跟『高匿代理』這種東西沒任何關係)

識別GoogleBot容易被判定作弊,親你還是不要想了

允許自己訪問?掛VPN最簡單,其他方法都麻煩


提供一個屏蔽特定國家ip的方法,dns不予解析。

Incapsula免費版提供屏蔽國家功能。


手機答。

js代碼
判斷瀏覽器的語言頭是不是包含「zh、cn」的內容,做一個跳轉

不好的地方是換個英文瀏覽器就能訪問。

var BrowserLang = navigator.language || navigator.userLanguage;
if (BrowserLang.substr(0, 3) == "zh-") {
location = "http://www.baidu.com";
}


推薦閱讀:

WordPress的訪客承載量有多大?
Nginx為啥使用ET模式Epoll?
如何搭建編程伺服器?
怎樣用Node.js快速搭建伺服器?
如何把智能機改裝成web伺服器?

TAG:Web開發 | PHP | Linux | 伺服器 | WordPress |