2011-02-08 127 views
0

我最近一直在抓取很多網站的內容,並且很驚訝到目前爲止沒有網站能夠提出很多抵制。理想情況下,我正在處理的網站不應該很容易被收穫。所以我想知道什麼是阻止漫遊者收集您的網頁內容的最佳方法。 明顯的解決方案:什麼是保護內容不被抓取的最佳措施?

  • 的robots.txt(雅右)
  • IP黑名單

什麼可以做趕上機器人活動?怎樣才能使數據提取變得困難?可以做些什麼來給他們提供不好的數據?

關於SEO的關注,有沒有辦法來限制訪問某些數據塊(有點像文本<nofollow>塊?) 只是看看的想法,沒有正確/錯誤答案

+7

嗯...不要將它連接到互聯網? – 2011-02-08 07:19:05

回答

4

使用客戶端解密/解碼方案。基本上發回一些編碼數據,然後依靠JavaScript將其解碼爲可讀的內容。爬行者會得到你的內容,但它對他們來說毫無用處(至少在你的網站變得如此之大以至於人們會專門針對它)。

但是,爲什麼你要這麼做?你不希望網站被搜索引擎收錄嗎?通過IP(可能與用戶代理相結合)

+0

同意你的回答。這種技術的缺點是它會嚴重影響頁面搜索引擎優化**上的網站**,對搜索引擎不好,但如果你的流量不是來自搜索引擎,如Facebook,比它是一個好的解決方案 – Adeel 2011-02-08 07:24:09

+0

聽起來不錯,特別是,作爲我只是想保護特定的信息。機器的其餘部分可以被機器人索引。 – Moak 2011-02-08 07:55:24

1

跟蹤活動,並嘗試通過網頁調用之間的延遲來檢測機器人。太多的網址在一定的時間間隔內被要求 - 開始發送修改後的內容,重定向,或者您想要的任何內容。

1

已有javascript在客戶端設置了一個Cookie。在服務器端,檢查是否存在這個cookie,並且只有當cookie存在時才提供您的內容。

如果沒有cookie的存在,發送一個網頁與設置cookie,並重新加載頁面的JavaScript。

這應該防止所有自動化的Web工具,不執行任何JavaScript。

1

你不能阻止爬行如果履帶真的想,但是你可以讓他們的樂趣。

方法來檢測機器人

  • 由用戶代理
  • 通過日誌分析IP
  • (大多數時候,機器人負載一頁每x秒)
  • 使一個JavaScript負載的特定的文件即[yadda.gif]。如果您加載某個網頁,但沒有下載yadda.gif,你沒有啓用JS和賠率是,你是一個機器人(或正在使用無腳本)

可能的處罰:

  • 重定向到microsoft.com :-)
  • 設置thoutput率非常低,因此需要永遠下載任何東西。你可以用Apache的mod_throughput或PHP的輸出緩衝功能
  • 回報胡言亂語爲此,devowel內容或類似的東西。
+0

+1懲罰=) – Moak 2011-02-08 07:43:52

0

實施驗證碼只允許人類查看您的網站。

2

企圖阻止webscrapers就不容易。沒有一個複雜的,不斷髮展的解決方案,你所能做的就是提高難度,並希望他們沒有足夠的決心繼續前進。你可以做的一些事情是:

  • 速率限制。請確保您不要基於IP執行此操作,而是使用唯一的會話來避免阻止NAT後面的用戶。
  • 強制用戶執行javascript訪問該頁面。有 幾種方法可以做到這一點,它使得顯著更難 刮,但仍然不是不可能的。有很多的腳本工具 (紅寶石,硒等),讓您使用一個真正的web瀏覽器 刮。
  • IP黑名單。阻止代理服務器,TOR,亞馬遜ec2等

也值得注意的是,你應該白名單搜索引擎,以避免SEO /流量的損失。通過查看用戶代理並將其與IP的whois進行比較,您可以將大多數搜索引擎列入白名單。

完全公開,我的Distil Networks的創始人和我們提供了一個抗刮的解決方案爲服務。這使我有偏見,我不相信你的問題有一個靜態的答案,也就是說,你不能做一件事,並停止。這是一場軍備競賽,你將永遠不得不繼續戰鬥。

相關問題