2015-03-13 79 views

回答

1

有許多方法可以防止大多數機器人盜取您的網站。

除了通過用戶代理和已知的IP地址進行過濾,您還應該實施行爲驅動的阻止。這意味着,如果它的行爲像一個爬蟲,阻止它。

您可以找到多個搜索引擎機器人列表here。但大多數大牌球員都遵守robots.txt。

因此,另一個相當大的部分是由於機器人行爲造成的阻塞。當您使用像Laravel或Symfony這樣的框架時,事情變得越來越複雜,因爲您可以在每次頁面加載之前輕鬆設置要執行的過濾器。如果不是,則必須實現在每次加載頁面之前調用的函數。

現在有一些事情要考慮。蜘蛛通常儘可能快地爬行。因此,您可以使用會話來測量給定時間範圍內頁面加載和頁面加載之間的時間。如果數量X超過,則客戶端被阻止。

不幸的是,這種方法正確地依賴於bot處理會話/ cookies,這可能並非總是如此。

另一個或另一種方法是測量來自給定IP地址的頁面加載量。這很危險,因爲可能有大量的用戶使用相同的IP地址。所以這可能會排除人類。

我能想到的第三種方法是使用某種蜜罐。創建一個指向特定網站的鏈接。該鏈接必須對計算機可見,但對人不可見。用一些css隱藏它。如果某人或某事使用隱藏的鏈接訪問該頁面,則可以(接近)確定它是一個程序。但請注意,有些瀏覽器插件會預加載他們可以找到的每個鏈接。所以你不能完全依靠這個。

根據您的網站的性質,最後一種方法是將整個網站隱藏在捕獲背後。這在可用性方面是一個苛刻的措施,所以請仔細確定它是否適用於您的用例。

然後有像使用Flash或複雜Javascript的技術大多機器人不明白,但它是令人厭惡的,我不想談論它。 ^^

最後,我現在會得出結論。

通過使用寫得很好的robots.txt大多數機器人會讓你孤單。除此之外,你應該結合前面提到的全部或部分方法來找到壞人。

畢竟,只要你的網站是公開可用的,你永遠不能逃避爲你的網站專門量身定做的定製機器人。當瀏覽器可以解析它時,機器人也可以做到這一點。

對於更有用的答案,我需要知道你想要隱藏什麼以及爲什麼。

+0

哇,謝謝你這麼寬的回答,3stadt!我想我會去一個htaccess的規則:拒絕訂單,允許 拒絕所有 – dotzzy 2015-03-13 14:57:28