2006年01月21日

網頁守門員-擋掉不速之客

任何人只要可以上網,就可以到你的網頁,雖然資訊分享與傳遞是網際網路的精神,但有時候不速之客的拜訪,反而會引發事端.運用這個「網頁守門員」程式,就可以幫你擋掉不速之客,讓他無法看到你的網頁,你也可以省下應付的時間,專注於更值得你花心思的事情.
本程式還有另一個效果,可以顯示出訪客的IP位址以及使用的瀏覽器軟體,你也可以加設自己的歡迎詞,做為歡迎訪客的訊息.

「網頁守門員」主要是使用IP偵測的技術,來偵測網頁訪客的IP位址,據此決定是否擋掉.而擋掉的方法則是把他的瀏覽器導引到別的網頁,如此一來他就看不到你的網頁內容了.
測試一下!把我導引到別的網頁
把後列的程式碼貼在文章內或Sidebar的自由欄位中,程式碼包含3個部分,「參數設定」跟「主程式」是必要的;而「風格設定」則在需要設定網頁守門員的呈現風格時,視情況貼上.
請注意!程式碼貼上之後,一定要參考我後面說明的設定方法來修改你自己的參數,否則不會有導引的效果.

參數設定

<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也一起被擋掉.

Posted by tlight at 樂多Roodo! │10:32 │回應(33)引用(1)Blog小技巧
樂多分類:網路/3C 共同主題:Blog小密技 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/1031084
引用列表:
任何人只要可以上網,就可以到你的網頁,雖然資訊分享與傳遞是網際網路的精神,但有時候不速之客的拜訪,反而會引發事端.運用這個「網頁守門員」程式,就可以幫你擋掉不速之客,讓他無法看
網頁守門員-擋掉不速之客【C.H.Huang】 at 2006年01月24日 23:38
回應文章
我在裡面多包了一個可愛的大頭狗時鐘,歡迎來看看喔!
Posted by 優質部屋 at 2006年01月21日 13:30
非常感謝。
Posted by wakako at 2006年01月23日 09:45
能否請問一下,對於浮動的IP,有沒有一個表示方式,可以表示只要前幾碼相同,一律封鎖。

我要封鎖的是中國人,我不介意封鎖到該 IP 的其他人。因為他(們)一再來攻擊。(埋 java script 指向色情網站,好像還會中毒。有些中國網站充滿病毒。)

另外一問,有可能封鎖所有來自中國的 IP 嗎?^_^
Posted by wakako at 2006年01月24日 23:38
我是鑲了一個 FLASH 的日曆...:p
Posted by at 2006年01月24日 23:40
wakako:
當初設計是只想到擋掉某幾個IP位址,不過你的建議不錯,我找時間修改成可以用類似 192.168.1.* 的格式來擋掉整個class C 的IP位址.
另外,封鎖所有的IP似乎是不太可能,同一個國家的不同ISP先後申請營運的IP位址可能是不連續的,所以無法一次封鎖,而且你也無從得知該國所有ISP的位址.
或許有其他機構有這樣的資料(IP對應到國家),若你知道所有ISP的IP位址,一一鍵入我程式前面的IP黑名單,或許可以全面封鎖.
ps:我沒有任何預設政治立場,僅針對技術問題來討論.基本上我是主張每個人有決定自己網頁不給誰看的權力,才開發這個程式.
Posted by TLight at 2006年01月25日 02:13
TLight 大大加油!!趕快把程式碼改出來吧!我挺你!

我覺得 wakako 希望把 IP 是從中國來就封鎖,原因是樂多有公布一些 IP 會回應廣告文破壞版面;而那些 IP 大部分都屬於中國來的。

PS. 如果可以的話,TLight 大大可否釋出原始碼,讓大家幫忙改也可以!

Posted by 翔 at 2006年01月25日 09:52
程式已經改好了,現在可以使用萬用符號來代表整個區段的IP.
其實這個程式很簡單,只是比對IP然後設定 window.location 來讓瀏覽器轉向,很多懂JavaScript的網友都可以做得出來.
Posted by TLight at 2006年01月25日 21:35
TLIGHT大大太厲害了,像你致ㄲ萬分的敬意,所以現在封鎖整個CLASS C的IP只要用

xxx.yyy.zzz.*就可以了是嗎?
Posted by 酥餅 at 2006年01月26日 04:07
酥餅:
是的,要擋掉整個Class C的IP,就如同你寫的格式.若有多組Class C要檔,就在ban_ip陣列中增加.
Posted by TLight at 2006年01月26日 22:32
果然很好寫~
我也寫模仿寫了自己的版本~
Posted by 翔 at 2006年01月27日 21:17
Posted by aaaa at 2006年01月29日 22:05
感謝您設計出這個程式.又可以造福大眾...~
Posted by Feng at 2006年01月31日 19:29
感謝大家對這個程式熱烈的迴響.

有部分網友利用CSS指令把我程式中的EZeShop圖案給隱藏起來,可能是因為這些網友把網頁守門員程式放在Blog的頁首,而出現我的EZeShop圖案會弄亂頁首排版.假如是這個原因的話,希望這些網友能夠在Blog首頁的sidebar不影響排版的地方,擺放 DoorKeeper powered by EZeShop 字樣並做個連結到我的網站.

免費與大家分享我的程式,僅僅只是要求標示原作的出處,這樣應該不算過分吧!
Posted by TLight at 2006年02月2日 00:58
我是來亂的。

blogger.com在中國是被封鎖的,除非裝了google accelerator。聽說啦。

不過我的舊blog除了香港,倒是只見過1.2枚中國IP來過。很滿意,我完全不想見到對岸的人。

另外正在測試讓搜索引擎找不到我的東西。

如果連TLight都找不到,那大概就成功了。哈哈。

Posted by Rach at 2006年02月3日 21:18
Rach:
那是設定 robots.txt 吧? 不過這只能客氣地勸導搜尋引擎不要蒐錄網頁,比較積極的做法是發現搜尋引擎的 robot 或 spider 到訪網頁,就導引到別的網頁.
Posted by TLight at 2006年02月3日 22:54

Posted by 好康ㄟ at 2006年02月7日 11:56
Tlight兄,請問一下有沒有辦法一次封掉一個範圍的IP,比如說

111.222.*.* ~ 111.225.*.*?

感謝。
Posted by 酥餅 at 2006年03月2日 18:34
酥餅:
目前的設計是沒有以起始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範圍就都封掉了.
Posted by TLight at 2006年03月2日 19:02
你好, 我的blogger看不到別人的ip, 請問如何可以顯示出來(因為太多無聊人用匿名了orz)

而且我也想看看http://www.ezeshop.com.tw/sidebar/doorkeeper.php中的php file是如何寫的

太感謝了~~
Posted by Matt at 2006年03月28日 10:50

kgbnl/bnhklghnbklng
fbre
gb
bg
bgt
btbbb

bg
b
tgbgtbb
g


gb
tg
bgbgbbbgtbgb


gb
b
tgbbgb
tbtbtb
tgb
t
Posted by ryyeru at 2006年03月28日 17:36

而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
而且我也想看看
Posted by gfhf at 2006年03月28日 20:04
Matt:
在Yam樂多的Blog管理工具裡,是可以看到留言者的IP的,而且這個IP紀錄是存放在Yam的主機,連版主也沒辦法去修改或調整,所以這個IP紀錄除了可以提供你擋掉不速之客之外,也可以作為提供給警察或檢調機關的證據.
Posted by TLight at 2006年03月28日 21:12
多謝分享
Posted by jesse at 2006年03月31日 16:40

每月額外賺取30000-80000元

可以上去看看

http://98.to/235906
Posted by ihc at 2006年03月31日 18:31
最近此IP 66.249.66.110

一直在網站上同時開多個頁面

且在購物車上亂放東西

想把它擋掉,但又不知上面的程式要放那裡

不知那為前輩可以交一下

謝謝
Posted by tony at 2006年07月14日 00:30
你若是要在網路商店使用,可以參考下面連結,我們有提供 osCommerce 版本的"網頁守門員".

http://www.ezeshop.com.tw/ezeshop/product_info.php/cPath/25/products_id/75
Posted by TLight at 2006年07月14日 10:20
感謝 TLight

已經裝好了,再來就測試效果
Posted by tony at 2006年07月15日 13:37
沒作用,剛剛到後台又看到
IP 66.249.66.110
開了近20個頁面
怎麼辦?

傷腦筋....
Posted by tony at 2006年07月15日 13:46
TLight大大
我把訪客IP顯示關掉如下
/*$dk_text_client_ip='IP: ';*/

會影響到封鎖的功能嗎?

因為畫面上顯示訪客IP有點在監視對方

覺得不太好,我只是要有封鎖的功能
Posted by tony at 2006年07月15日 13:53
tony:
我查了一下你說的IP,結果是Google,搜尋引擎的spider程式並不是一般的瀏覽器程式,所以網頁守門員程式可能對他無效,你若不想Google造訪你的購物站,可以參考下列討論搜尋引擎最佳化的文章,建立robots.txt

http://www.ezeshop.com.tw/ezeshop/freeframe.php/link/seo.php

ps:不顯示訪客的IP並不會影響網頁守門員的執行.
Posted by TLight at 2006年07月18日 00:30
Tlight.

謝謝你的回答....
Posted by tony at 2006年07月19日 01:41
請問,這個程式,是只要把javascript的功能關掉就失去作用了嗎?
Posted by 嚼 at 2006年09月5日 17:55
是的.
Posted by TLight at 2006年09月6日 01:04