2012-01-14 101 views
4

我有一個在線工具,可以跟蹤任務和用戶完成任務。作爲該過程的一部分,我記錄了$_SERVER['HTTP_USER_AGENT']。但是,偶爾我會收到各種機器人和爬蟲的訪問。我如何輕輕地將他們重定向到別處而不「傷害他們的感受」?重定向爬蟲

我在想我會建立一個帶有bot名字的數組,並且運行每個AGENT信息,如果在數組中找到,重定向。

有沒有更好的方法呢?

+2

如果你這樣做,不要忘記發送一個頭(「Vary:User-Agent」);' – mario 2012-01-14 15:41:52

+0

給真實用戶和抓取工具提供不同的內容可能會讓大型搜索引擎通過降低你網站的等級來懲罰你在他們的搜索結果中。 – ThiefMaster 2012-01-14 15:46:49

+0

哦,我需要檢查一下。我不熟悉「Vary」。謝謝。 – santa 2012-01-14 15:51:05

回答

6

如果還沒有完成,可以使用robots.txt文件去除大多數爬蟲。然而,這並不是嚴格遵守的。那些不斷爬行的人可能被禁止。你可以使用iptables在Linux上執行此操作。例如:

iptables -A INPUT -s IP-ADDRESS -j DROP 
+0

我有robots.txt主要禁止一些「壞」機器人,並禁止去某些目錄。我還可以添加他們無法訪問的頁面嗎?該網頁是動態的,始終以相同的前綴開頭:/ plan ... like/planDWXWS5WsD?謝謝。 – santa 2012-01-14 15:50:16

+1

'disallow/plan *'可能適用於谷歌,但通配符不被愚蠢的爬蟲支持。您應該在每個鏈接上將它與rel =「nofollow」後綴結合使用[http://support.google.com/webmasters/bin/answer.py?hl=zh-CN&answer=96569](http://support.google.com/網站管理員/的bin/answer.py?HL = EN&答案= 96569)。 – 2012-01-14 16:03:40

+0

是的,我有rel =「nofollow」,但我認爲有些用戶轉發了這些鏈接,這就是我得到「不速之客」訪問者的方式。我想現在我會嘗試通配符解決方案,並進一步監控,看看我是否得到機器人。 – santa 2012-01-14 16:11:25

3

使列表與needed spiders,並與該代碼重定向:

header('HTTP/1.1 301 Moved Permanently'); 
header('Location: NEED_URL_HERE'); 

Actualy可以使用.htaccessrobots.txt(如果履帶使用它)

User-agent: * 
Disallow:/

UPD:如果你使用這個SEO(cloacking),你可能會受到搜索引擎的懲罰,要小心。

+0

我可以使用類似於:User-agent:* 不允許:/計劃如果我試圖保護的頁面以/ plan開頭,就像/ planDWXWS5WsD – santa 2012-01-14 15:56:11

+0

什麼是.httpaccess? – Vultour 2012-01-14 15:57:00

+1

我的意思是'.htaccess'課程。您可以禁止使用此代碼:用戶代理:*禁止:/計劃* – Barif 2012-01-14 15:59:46