2011-07-06 182 views
5

商業網站(ASP.NET MVC)的內容通常會被競爭對手抓取。這些人是程序員,他們使用複雜的方法來抓取網站,以便通過IP識別它們是不可能的。 不幸的是,用圖像替換值不是一種選擇,因爲該網站應該仍然保持屏幕閱讀器(JAWS)的可讀性。保護爬蟲網站內容

我個人的想法是使用robots.txt:從頁面上訪問一個共同的URL(:http://example.com?itemId=1234禁止:http://example.com?itemId=123下128這可以被僞裝成一個正常的項目詳細信息的鏈接,而是從普通用戶的有效URL隱藏)禁止爬蟲。如果IP所有者輸入禁止鏈接,則顯示CAPTCHA驗證。 一個普通用戶永遠不會按照這樣的鏈接進行瀏覽,因爲它不可見,所以Google不必抓取它,因爲它是僞造的。與此相關的問題是屏幕閱讀器仍然讀取鏈接,我認爲這不值得實施。

+4

如果您的競爭對手足夠關注使用不同的代理,爲什麼他們應該關心您的robots.txt? – Jacob

+0

在屏幕閱讀器閱讀的隱藏文本中,爲什麼不說'忽略此鏈接請僅限於漫遊器' –

+0

+1好問題。 –

回答

2

你的想法可能適用於幾個基本的抓取工具,但會很容易解決。他們只需要使用一個代理,並從新的IP獲取每個鏈接。

如果您允許匿名訪問您的網站,那麼您永遠無法完全保護您的數據。即使您設法防止搜尋器花費大量時間和精力,他們也可以讓人類用像小提琴手那樣的內容瀏覽和捕獲內容。防止你的數據被你的競爭對手看到的最好辦法是不要把它放在你的網站的公共部分。

強制用戶登錄可能有助於解決問題,至少可以找到誰在抓取您的網站並將其禁用。

0

我即將到達保護我的內容不被抓取的任何階段。

我想限制一個匿名用戶可以看到的網站,並要求他們註冊一個完整的功能。

例如:

public ActionResult Index() 
{ 
    if(Page.User.Identity.IsAuthorized) 
     return RedirectToAction("IndexAll"); 

    // show only some poor content 
} 

[Authorize(Roles="Users")] 
public ActionResult IndexAll() 
{ 
    // Show everything 
} 

既然你現在知道的用戶,你可以懲罰任何爬行。

+0

如果您想讓搜索引擎限制他們可以抓取的內容,這是一個好主意。 –

+0

這取決於網站本身,我的意思是說,您可以將此權衡關閉,因爲搜索引擎首先會將用戶帶到您的網站,然後他可以自由註冊。 –

0

如前所述,它不可能隱藏確定用戶的公開訪問數據,但是,由於這些是自動抓取工具,您可以通過定期更改頁面佈局來讓他們更加困難。

可能使用不同的母版頁來生成相同(或類似)的佈局,並且可以隨機交換母版頁 - 這會使編寫自動爬蟲程序變得更加困難。