2013-12-12 62 views
-2

據我所知,如果我們想阻止機器人訪問我們的網站,我們必須在http請求中解析'User-Agent'標頭,然後檢查請求是來自機器人還是瀏覽器。我們是否可以完全阻止機器人訪問我們的Web應用程序?

我想我們不能完全阻止機器人訪問我們的網站,因爲有人可以編程使用任何http客戶端向FAKE瀏覽器用戶代理髮送Http請求,所以對於這種情況,我們無法知道假的用戶代理是真實的用戶代理來自瀏覽器或來自機器人程序(通過編程)。

我的問題是有什麼辦法來防止完全機器人訪問我們的網站?

+0

爲什麼downvote?這不是我們可以問的那種問題嗎? – Loc

+0

你的問題在這裏回答。 http://stackoverflow.com/questions/7045705/stop-abusive-bots-from-crawling – Zeeba

+0

@Loc不,這是不實際的答覆。 – rene

回答

0

除了將頁面置於某種認證方式之外,答案是否定的。

很明顯,認證也適用於人類。

+0

你的權利。謝謝。 – Loc

0

我認爲驗證與captcha是更簡單的方法和最常用的。其他選擇是向用戶簡單地詢問問題(僅針對人類,而不針對機器人)。然而,所有這些方法對於人類用戶都很煩人。

+0

你的權利。謝謝。 – Loc

1

你不能消除機器人,但你可以大大減少它們。

你已經在使用明顯的選擇是用戶代理檢測

您也可以通過Ajax使用JavaScript這將消除不能處理JavaScript的任何機器人加載頁面的內容。所以只需要一個id爲「content」的空白div,並且在頁面上準備好進行ajax調用來插入內容。這意味着如果任何人使用捲曲或類似的方式來刮你的頁面內容,它將無法正常工作。如果機器人是專門爲您的站點構建的,那麼很容易解決,但大多數隨機機器人可能無法完成。

您也可以在JS中混淆目標網址...並/或通過使用location.href使其自動通知ajax在不同文件夾中通過相同名稱查找內容文件。

您當然可以在用戶(或機器人)進入該網站之前進行驗證碼驗證,但這對用戶來說很煩人。

如果訪問頁面的次數較少,並且與表單提交有關,那麼captcha是一個不錯的選擇,或者你可以做一個蜜罐,在那裏你放置一個被css隱藏的表單域,機器人將填寫該領域,但人類不會(因爲它是隱藏的),你可以檢測到。

+0

感謝您的提示:在身體負荷時使用空div + ajax調用。 – Loc

相關問題