網站如何屏蔽特定國家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伺服器?