2006年01月21日
網頁守門員-擋掉不速之客
本程式還有另一個效果,可以顯示出訪客的IP位址以及使用的瀏覽器軟體,你也可以加設自己的歡迎詞,做為歡迎訪客的訊息.
請注意!程式碼貼上之後,一定要參考我後面說明的設定方法來修改你自己的參數,否則不會有導引的效果.
參數設定
<script language="JavaScript" type="text/javascript">
ban_ip = new Array();
ban_ip[0]='xxx.xxx.xxx.xxx';
ban_ip[1]='yyy.yyy.yyy.yyy';
redirect_http = 'http://nssdc.gsfc.nasa.gov/image/planetary/mars/marsglobe2.jpg';
dk_herader='Visitor Information';
text_client_ip='IP: ';
text_client_agent='Software:<br>';
dk_footer='<img src=http://www.webdeveloper.com/animations/bnifiles/puma.gif>';
</script>
主程式
<script src="http://www.ezeshop.com.tw/sidebar/doorkeeper.php" language="JavaScript" type="text/javascript">
</script>
風格設定
<style>
.doorkeeper_board {
width:170;
height:120;
}
.doorkeeper_content {
margin: 10 10 10 10;
background-color: white;
background-position: top right;
background-repeat: no-repeat;
font: 16px;
}
.doorkeeper_header {
text-align: center;
}
.doorkeeper_ip {
text-align: center;
}
.doorkeeper_agent {
text-align: center;
}
.doorkeeper_footer {
text-align: center;
}
</style>
如何設定參數
IP黑名單
第一個要設定就是你要擋掉的IP位址,參數為 ban_ip 陣列,上例中已經設定了2組擋掉IP黑名單,分別是ban_ip[0]及ban_ip[1],但設定值是用假設的 xxx.xxx.xxx.xxx 及 yyy.yyy.yyy.yyy ,你要把 x 跟 y 改成你實際要擋掉的IP數字.你也可以自己多加幾組擋掉IP,只要延續陣列註標的數字即可,因此上例若要增加IP則是 ban_ip[2] , ban_ip[3] , ......
至於如何知道不速之客的IP位址呢?大部分Blog的留言功能,都可以讓Blog的主人看到留言者的IP位址,或者是從網站的存取紀錄也可以看到造訪者的IP位址,這樣你就可以把出言不遜的IP位址列入擋掉IP的黑名單中.
在設定擋掉IP黑名單時,還有一個網路現狀你一定要知道,很多使用非固定IP的ADSL用戶,他上網的IP是連線時動態配置的,所以IP的主人有可能變來變去,因此不速之客若使用非固定IP的ADSL,你擋掉他的IP會造成所有同一家ISP的用戶,動態配置到不速之客用過的IP,也一樣被擋掉無法看到你的網頁.學生使用學校電腦也會有這種情形,可能多個學生共用1組IP.因此你設定擋掉IP時,要明瞭可能連帶一部份的無辜者也會被你擋掉.你也可以事先用網路上提供的whois服務來確認一下IP的使用單位,再決定是不是擋掉這個IP.
導引網址
偵測出不速之客後,當然是把他丟到(導引到)別的網址,不要讓他看你網頁內容,設定的參數名稱是 redirect_http , 直接給網址就可以,什麼?!你要把不速之客丟到FBI去調查!(http://www.fbi.gov),嗯..也是可以..什麼?你要把不速之客丟到火山!(http://www.photo.net/photo/pcd4229/mirage-volcano-7.4.jpg),這...這有點狠,我是比較愛好和平的,上面的例子是把不速之客直接丟到火星.(更狠....)
其他幾個參數是設定非黑名單訪客到訪時,要呈現的歡迎詞內容,參數內容說明如下.
dk_herader 頁首出現的歡迎詞
text_client_ip 顯示訪客IP的標題
text_client_agent 顯示訪客瀏覽器軟體的標題
dk_footer 頁尾出現的歡迎詞
前述的參數若內容設定為空字串,或把該參數拿掉,就不會顯示該部分的歡迎詞,歡迎詞內也可以使用<img>之類的HTML指令來連結圖片或動畫,上例中的頁尾就連結到免費的GIF動畫.
如何變更風格
這個部分必須你自己熟悉CSS的設定,才有辦法修改,你也可以尋找其他Blog的CSS教學來參考.網頁守門員用到下列的CSS類別設定:
.doorkeeper_board 控制整個歡迎詞版面的大小及底色風格
.doorkeeper_content 設定顯示歡迎詞文字的整體風格
.doorkeeper_header 設定頁首內容的風格
.doorkeeper_ip 設定顯示IP位址文字的風格
.doorkeeper_agent 設定顯示瀏覽器軟體文字的風格
.doorkeeper_footer 設定頁尾內容的風格
歡迎分享你的設計
網頁守門員提供了很大的設計彈性(CSS及HTML),你的好設計若願意提供給網友分享,也歡迎在後面的回應提供你設計的網頁守門員網址.
但請注意不要直接把設計的程式碼(參數設定、風格設定)貼到回應裡面,因為這樣會把回應弄亂掉,把程式碼貼在你自己的Blog,然後在我這的回應貼你Blog的網址.
2005.01.25 IP黑名單格式增加萬用字元
經由 wakako 在回應裡的建議,在黑名單格式增加萬用字元的用法,如下例的IP表示法:
192.168.1.*
代表以192.168.1 三碼開頭的IP位址全部擋掉.這樣就可以更方便地設定阻擋整個class C或class B 的IP.不過我還是要提醒,這樣子擋掉的IP數量非常多(1~255),也代表可能有許多無辜網友的IP也一起被擋掉.
引用URL
我要封鎖的是中國人,我不介意封鎖到該 IP 的其他人。因為他(們)一再來攻擊。(埋 java script 指向色情網站,好像還會中毒。有些中國網站充滿病毒。)
另外一問,有可能封鎖所有來自中國的 IP 嗎?^_^
當初設計是只想到擋掉某幾個IP位址,不過你的建議不錯,我找時間修改成可以用類似 192.168.1.* 的格式來擋掉整個class C 的IP位址.
另外,封鎖所有的IP似乎是不太可能,同一個國家的不同ISP先後申請營運的IP位址可能是不連續的,所以無法一次封鎖,而且你也無從得知該國所有ISP的位址.
或許有其他機構有這樣的資料(IP對應到國家),若你知道所有ISP的IP位址,一一鍵入我程式前面的IP黑名單,或許可以全面封鎖.
ps:我沒有任何預設政治立場,僅針對技術問題來討論.基本上我是主張每個人有決定自己網頁不給誰看的權力,才開發這個程式.
我覺得 wakako 希望把 IP 是從中國來就封鎖,原因是樂多有公布一些 IP 會回應廣告文破壞版面;而那些 IP 大部分都屬於中國來的。
PS. 如果可以的話,TLight 大大可否釋出原始碼,讓大家幫忙改也可以!
其實這個程式很簡單,只是比對IP然後設定 window.location 來讓瀏覽器轉向,很多懂JavaScript的網友都可以做得出來.
xxx.yyy.zzz.*就可以了是嗎?
是的,要擋掉整個Class C的IP,就如同你寫的格式.若有多組Class C要檔,就在ban_ip陣列中增加.
我也寫模仿寫了自己的版本~
有部分網友利用CSS指令把我程式中的EZeShop圖案給隱藏起來,可能是因為這些網友把網頁守門員程式放在Blog的頁首,而出現我的EZeShop圖案會弄亂頁首排版.假如是這個原因的話,希望這些網友能夠在Blog首頁的sidebar不影響排版的地方,擺放 DoorKeeper powered by EZeShop 字樣並做個連結到我的網站.
免費與大家分享我的程式,僅僅只是要求標示原作的出處,這樣應該不算過分吧!
blogger.com在中國是被封鎖的,除非裝了google accelerator。聽說啦。
不過我的舊blog除了香港,倒是只見過1.2枚中國IP來過。很滿意,我完全不想見到對岸的人。
另外正在測試讓搜索引擎找不到我的東西。
如果連TLight都找不到,那大概就成功了。哈哈。
那是設定 robots.txt 吧? 不過這只能客氣地勸導搜尋引擎不要蒐錄網頁,比較積極的做法是發現搜尋引擎的 robot 或 spider 到訪網頁,就導引到別的網頁.
111.222.*.* ~ 111.225.*.*?
感謝。
目前的設計是沒有以起始IP及結束IP來設定封掉的範圍,不過因為可以設多組封掉的IP,所以你所需要的設定如下:
ban_ip[0]='111.222.*.*';
ban_ip[1]='111.223.*.*';
ban_ip[2]='111.224.*.*';
ban_ip[3]='111.225.*.*';
這樣從 111.222.*.* 到 111.225.*.* 的IP範圍就都封掉了.
而且我也想看看http://www.ezeshop.com.tw/sidebar/doorkeeper.php中的php file是如何寫的
太感謝了~~
在Yam樂多的Blog管理工具裡,是可以看到留言者的IP的,而且這個IP紀錄是存放在Yam的主機,連版主也沒辦法去修改或調整,所以這個IP紀錄除了可以提供你擋掉不速之客之外,也可以作為提供給警察或檢調機關的證據.
一直在網站上同時開多個頁面
且在購物車上亂放東西
想把它擋掉,但又不知上面的程式要放那裡
不知那為前輩可以交一下
謝謝
http://www.ezeshop.com.tw/ezeshop/product_info.php/cPath/25/products_id/75
已經裝好了,再來就測試效果
IP 66.249.66.110
開了近20個頁面
怎麼辦?
傷腦筋....
我把訪客IP顯示關掉如下
/*$dk_text_client_ip='IP: ';*/
會影響到封鎖的功能嗎?
因為畫面上顯示訪客IP有點在監視對方
覺得不太好,我只是要有封鎖的功能
我查了一下你說的IP,結果是Google,搜尋引擎的spider程式並不是一般的瀏覽器程式,所以網頁守門員程式可能對他無效,你若不想Google造訪你的購物站,可以參考下列討論搜尋引擎最佳化的文章,建立robots.txt
http://www.ezeshop.com.tw/ezeshop/freeframe.php/link/seo.php
ps:不顯示訪客的IP並不會影響網頁守門員的執行.
謝謝你的回答....