經營好口碑!連鎖店招牌、精緻招牌
LED廣告工程、專業設計全省服務!
窗簾油漆功細料實在堅持最平價 ,工程大小不拘免費專人
到府估價 無毒,無味,最省錢

首頁  •  j2h 論壇 • 程式設計討論     • 

[php] 如何抵擋網路蜘蛛

房東:阿凱
發表時間:2012-08-23
[檢舉]


自從網路突然成了大家每天必需的基礎工具之後,無論是雲端SEO網路行銷或各種能夠讓你在網路上被人知道的動作,似乎都能了一門潛學問,大家都有些門道、方法,或是小撇步能夠達到自己想要達到的效果,不過,若是對於網站的經營面來說,有很多看似應該欣喜的東西,最後很有可能會成為另外一種沉重的壓力,例:網站流量看似有明顯的成長,實際上卻消耗在許\多非預期的動作上。



這時候別忘記在台灣弄一個網站,除了需要花在網站上的設計、程式和必要人力之外,最昂貴的代價就是花在網站經營的頻寬及系統資源(我手上也有不少個網站就是...昏),大家可以回頭想想,如果Youtube沒有被Google接下的話,有辦法發展成現在的模樣嗎?雖然拿Youtube當例子有點不妥,畢竟它是自身內容,產生出相當可觀的流量。



但是,對於其它類型的網站來說,卻很有可能,被那些提供搜尋結果的網站給打趴,因為這些網站大多都會放出自己的自動化搜尋程式(俗稱:網路蜘蛛機器人爬蟲),雖然自己的網站能夠被愈多人知道愈好,但是,如果在還沒長大之前,就先因為這些潛在的宣傳者(機器人、蜘蛛)打趴的話,或許\你連長大的機會都沒有,既然在網路世界有這個工具存在,其實它也有它的運行規則,不過,並非每一個參加者都會遵守(尤其是對岸的搜尋引擎),如此一來,或許\我們也只能見招拆招,不然就可能是跟自己白花花的銀子過不去了。



針對網路機器人、爬蟲這一類的程式,對於網站本身來說,應該可以分為消極和積極的兩種處理方式,我也就簡單的描述一下方法吧!或許\多於很多前輩來說,那已經是相當熟稔的技能,對我自己來說也算是一些記錄。



消極方式:



1.透過Robots.txt來抵擋:



基本上這個應該最常用來給Google看吧?因為這個的設定,基本上對GoogleBot來說,它就會乖乖的依據這個來爬你的網站,Google也有針對這個有說明 ,簡單地說就是,告訴搜尋蜘蛛什麼路徑、檔案不要進來爬,當然你也可以直接設定直接跳過我,例:


User-Agent: Googlebot

Disallow: /

雖然這種方式一樣有它的風險,因為針對資安來說,有些人會很仔細地把自己網站那邊有機敏資料的資料夾都列上去,這時候就會有種:此地無銀三百兩的感覺,但是為了避免因為某些蜘蛛,可能把你系統資源或是頻寬吃完,這個檔案還是不得不設呀!只是要怎麼設就見仁見智了,如果你只是要抵擋某些可能對你網站來說,不是主要族群的搜尋引擎的話(例:百度、搜狗),或許\就直接下個:


User-Agent: Buiduspider

Disallow: /



User-Agent: Sogou web spider

Disallow: /

至於全部開放的方式應該就不用特別說了(直接不要設就好了吧?),當你設置好了之後,如果你會害怕自己設錯,就可以透過檢查網站(例:Robots.txt Checker)來測試一下,或是仔細閱\讀一下這一篇的說明,應該也不會太難才對。



2.透過頁面宣告來抵擋:



雖然可以透過Robots.txt來設置規則,但是這有個先決條件,那就是你要有辦法編寫那個檔案,在根目錄(/)之下,像我這個Blog就沒有辦法自己編寫那個檔案,位置應該是:http://indeepnight.blogspot.com/robots.txt ,基本上只要是免費的BSP應該都不允許\你能夠直接到根目錄底下加油添醋才是,這時候你可能就只能夠在頁面上加上中繼資料(說明)來處理這個問題,例:


<meta name="Sogou web spider" content="nofollow">

<meta name="Sogou web spider" content="noarchive">

照理說,你只要加上這些標籤,這些Web Robot或Crawler就應該直接會跳過這個頁面上產生的內容,但是實際的狀況,還是得依實際運作之後才會得知。



不過,我也說過這些都是消極的方式,所以並非所有的搜尋引擎的蜘蛛都會乖乖地聽從你所設置的Robots.txt或是 tag(例:百度似乎就不太理),所以這兩種方式,真的是防君子,若是這些搜尋引擎的蜘蛛真的要爬,還是擋不住的,當然也有可能會有蜘蛛沒有看見你所寫的設定,所以有的搜尋引擎會提供移除的申請,例:Google(將特定網頁或網站從 Google 的搜尋結果中移除



積極方式:



1.透過權限控制:



既然消極的方式對於那些強力蜘蛛派不上用場,那也只要使出強烈一點的手段來處理,那就是可以透過你的網頁伺服器,利用權限控制的設定來阻擋這些機器人或蜘蛛的入侵,當然,這也是會消耗系統資源的,不過在取捨之下,這還是必要的動作,以Apache Server來說,你可以直接在.htaccess裡設定,當遇到某些關鍵字的User-Agent就將它導去特定的錯誤頁面,例:


適用於:Apache的.htaccess



SetEnvIfNoCase User-Agent ^Baiduspider bad_bot

SetEnvIfNoCase User-Agent ^Sogou bad_bot



<Files *>

Order Allow,Deny

Allow from all

Deny from env=bad_bot

</Files>

簡單說明一下:


SetEnvIfNoCase User-Agent:偵測使用端所用的User-Agent

^Baiduspider:以Baiduspider開頭的User-Agent

bad_bot:設置至某個群組名

<Files *>...</Files>:所有檔案

Order Allow,Deny:規則順序是先允許\後抵擋

Allow from all:允許\所有

Deny from env=bad_bot:阻檔設置為bad_bot群組的內容

如果是另一個現在很熱門的Nginx呢?其實也很簡單,只要在只要在nginx.conf裡找到location / { 的位置,接著加上下列判斷即可:


適用於:Nginx的nginx.conf



if ($http_user_agent ~* Baidu|Sogou) {

return 403;

}

基本上,加上這些設定,就可以主動阻擋大部分的蜘蛛,不過這裡其實一樣有些讓人難以處理的部分,可能就要用更暴力的方式,雖然不一定可以全部擋住,但是也應該我們能做的最後一道關那了!畢敬公開在網路上,別人要怎麼爬,我們也真的是無能為力。



2.直接封鎖網段:



最後一招就是,直接把那些蜘蛛的來源IP擋於門外,因為有些搜尋引擎的蜘蛛不只一隻,甚至還有各種不同的化名,例:搜狗就有好幾個不一樣的化名,例:


Sogou web spider

New-Sogou-Spider

Sogou Mobile Spider

有看出什麼端倪嗎?對!就是那個New-Sogou-Spider,如果你是設定SetEnvIfNoCase User-Agent ^Sogou bad_bot,它不是Sogou開頭的,所以就會很自然地逃過你的過濾,其實類似的問題是防不完的,更何況上面那三個User-Agent是我實際在log裡濾出來的,代表他們也真實存在(透過ip反查也的確是屬於Sogou),這時候可能就只好使出最後一招,那就是把對方的IP封鎖,直接拒絕相關IP的來存取網站,至於使用的方式有很多,無論是在httpd.conf.htaccessiptables或甚至直接在防火牆設備上擋掉都可以,例:

httpd.conf:


<Directory "/var/www/html">

Options FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

Deny from 220.181.94.234

Deny from .crawl.baidu.com

</Directory>

.htaccess:(可透過http://tools.dynamicdrive.com/userban/ 協助設置


## USER IP BANNING

<Limit GET POST>

order allow,deny

allow from all

deny from 220.181.94.234

</Limit>

 


## SITE REFERRER BANNING

RewriteEngine on

# Options +FollowSymlinks



RewriteCond %{HTTP_REFERER} \\.crawl\\.baidu\\.com [NC]

RewriteRule .* - [F]

iptables:


iptables -A INPUT -s 220.181.94.0/24 -p tcp --dport 80 -j DROP

雖然這樣子封鎖IP已經是不得已的方式,但是很多搜尋引擎的蜘蛛會透過多個IP(網段)來爬,如果真的想要捨棄某些國家的流量來源,或許\可以參考 http://www.countryipblocks.net/,直接把該國的IP全部封鎖,不過,在封鎖之前,最好自己也檢查一下,以免發生把自己關在門外的可能性。



我想,針對網路蜘蛛的處理方式,應該不外乎是上述幾種方式,對於網站的推廣來說,其實這些網路蜘蛛應該是利大於弊才對,但是,如果某些特定的Spider佔了你總流量30~40%,對於自行租用主機(無論海內、外)應該都是相當嚇人的一件事(尤其是燒錢的速度),這時候你可能就得自己時常去分析一下log檔(有空再來討論),才能夠得知是否有類似的情事發生。





  • 贊助網站       

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!
    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務



  •  共 0 人回應

    姓名:
    佈告內容: