2012-11-14 45 views
8

到目前爲止,我能夠通過匹配這些字符串已知用戶代理來檢測來自用戶代理字符串列表的機器人,但我不知道還有什麼其他的方法有很這樣做使用PHP,因爲我正在使用這種方法檢索比預期更少的機器人。如何檢測瀏覽器欺騙和機器人從用戶代理字符串在PHP

我也希望找出如何在瀏覽器或機器人欺騙使用的用戶代理字符串其他瀏覽器檢測。

任何意見表示讚賞。

編輯:這必須使用日誌文件來實現與線如下:

129.173.129.168 - - [11月/ 10月/ 2011:00:00:05 -0300]「GET /攝像頭/ uni_ave2 .jpg?time = 1318302291289 HTTP/1.1「200 20240」http://faculty.dentistry.dal.ca/loanertracker/webcam.html「」Mozilla/5.0(Macintosh; U; PPC Mac OS X 10.4; zh-CN; RV:1.9.2.23)的Gecko/20110920火狐/ 3.6.23"

這意味着我不能從訪問時間檢查用戶行爲一旁。

+3

不幸的是,無論你嘗試多麼努力,機器人仍然會得到你設法實現的任何東西。 – noko

+2

這是不可能的。你可以試探性地看它,但就是這樣。 – Brad

回答

4

除了僅比較用戶代理之外,您還可以記錄活動日誌並查找機器人行爲。通常情況下,這將包括檢查/robots.txt並且不加載圖像。另一個訣竅是詢問客戶是否有javascript,因爲大多數機器人不會將其標記爲啓用。

但是,要小心,你可能會意外地得到一些真正的人。

+1

我應該澄清;我必須使用用戶代理的日誌文件做到這一點,因此我無法檢查JavaScript或加載的圖像,但感謝您的幫助 – user1422508

+0

然後您需要發佈日誌,否則我不知道您必須使用哪些信息。 – Kyros

+0

原始文章已經用日誌文件中的一行例子編輯,實際文件包含70000多行,但它們的結構與此類似。 – user1422508

13

除了需要過濾的用戶代理字符串的關鍵詞,我有運氣把所有頁面上隱藏蜜罐鏈接:

<a style="display:none" href="autocatch.php">A</a> 

然後在「autocatch.php」記錄會話(或IP地址)作爲一個機器人。這個鏈接對用戶是不可見的,但它的隱藏特性有望不會被bot實現。將style屬性取出並放入CSS文件可能會有更多幫助。

+1

這種技術對於通過輸入類型=「隱藏」命名電子郵件並使您真正可見的電子郵件表單字段稱爲其他內容來捕獲垃圾郵件發送者非常有效。隱藏鏈接的唯一缺點是它可能被標記爲黑名單Google搜索引擎優化 – WebChemist

+0

正如@WebChemist所說,這是危險的。我們生活在一個智能和其他「正確」解決方案往往是「錯誤」解決方案的世界中,因爲:Google。對隱藏的鏈接要非常小心。 – Bangkokian

2

不,用戶代理可能被欺騙,因此他們不被信任。

除了檢查JavaScript或圖像/ CSS加載後,你還可以測量頁面加載速度機器人通常會抓取你的網站很多快於任何人的來訪者跳來跳去。但是,這隻適用於小型網站,這些熱門網站可能會有許多共享外部IP地址(大型公司或大學校園)背後的訪問者,這些網站可能會以類似bot的價格擊中您的網站。

我想你也可以衡量其加載爲機器人將在一個先到先爬爲了在那裏爲人類用戶通常將不適合這種模式抓取順序,但多數民衆贊成有點複雜追蹤

+1

這很有幫助,謝謝! – user1422508

+0

沒問題,這裏是一篇文章,我幫助其他用戶製作了一個阻止腳本來阻止過多的bot頁面加載,您可能可以根據自己的需要進行調整http://webmasters.stackexchange.com/questions/35171/number-of-頁面請求由任何機器人在5秒 – WebChemist

+0

偉大,謝謝,我會upvote,如果我能 – user1422508

5

因爲,如前所述,您可以欺騙用戶代理IP,因此這些IP不能用於可靠的機器人檢測。

我一個安全公司,我們的機器人檢測算法看起來是這樣工作的:

  1. 步驟1 - 收集數據:

    一個。交叉檢查用戶代理與IP。 (都需要正確)

    b。檢查標題參數(缺少什麼,訂單是什麼等)

    c。檢查的行爲(早期訪問並遵守robots.txt的,一般的行爲,訪問頁數,就診率和等)

  2. 第2步 - 分類:

    通過交叉驗證的數據,機器人是分爲 「好」, 「壞」 或 「可疑」

  3. 第3步 - 主動挑戰:

    可疑機器人進行以下挑戰:

    a。 JS挑戰(可以激活JS嗎?)

    b。 Cookie挑戰(它可以接受coockies?)

    c。如果仍然沒有定論 - > CAPTCHA

這種過濾機制是非常有效的,但我真的不認爲它可以由一個人甚至未特提供複製(一兩件事,挑戰和BOT DB需求由安全團隊不斷更新)。

我們以Botopedia.org的形式提供某種形式的「自己動手」工具,我們的目錄可用於IP /用戶名交叉驗證,但對於真正有效的解決方案,您將不得不依賴專門的服務。

有幾種免費的機器人監控解決方案,包括我們自己的,大多數將使用我上面描述的(或類似的)相同的策略。

GL

1

您的問題具體涉及使用用戶代理字符串進行檢測。正如許多人所說,這可能是欺騙性的。

爲了理解欺騙行爲有哪些可能性,以及要發現檢測有多困難,建議您最好使用cURL學習PHP中的藝術。

在本質上使用捲曲幾乎可以在一個瀏覽器(客戶端)請求被髮送可以與IP顯着的例外是虛假的,但即使在這裏,一切都確定欺騙也將自己隱藏在一個代理服務器,以消除你的檢測他們的IP。

不言而喻,使用相同參數的請求時每次都會讓被檢測到欺騙,但使用不同的參數旋轉會變得非常困難,如果不是不可能的檢測之間真正的流量日誌任何仿冒。