2011-07-30 48 views
0

我有一個應用程序,其中任何頁面上的請求都必須插入到一個計數表中,但是如何檢查請求是否是真正的用戶,而不是用戶製作的某個工具來製作100萬請求一秒鐘或類似的這樣的asp.net? 請注意:我無法在此輸入驗證碼或類似信息,因爲用戶沒有輸入任何數據在asp.net中檢測機器人

回答

1

如果cookie是出了問題的話,我會建議時間在服務器上跟蹤。我會假設你有一些跟蹤用戶的方法,不管它是基於cookie還是通過身份驗證(他們登錄到你的站點)。 (沒有跟蹤用戶,這將是毫無意義的計數請求)。

這意味着從每個用戶的每一個請求,你跟蹤了兩兩件事:

  • 用戶ID
  • 當他們請求的頁面

當他們提出請求的時候,你增加計數器。如果他們提出另一個請求,則檢查先前請求的時間戳 - 如果它太早,則不計算當前請求。這種機制可以非常容易地修改爲每x秒計數請求一次,或者甚至每天只計數1次請求等。如果您解決了代表來自普通用戶的連續請求的時間跨度,則可以跳過計數在該時間段之前發生的任何請求都已過去。或者,您也可以記錄這些可疑請求。如果您發送的是每個請求的某種數據,那麼您可以不發送任何可疑數據。

+0

沒有我沒有用戶ID,例如,在他們的視頻櫃檯的YouTube是否考慮用戶ID或不?我不這麼認爲,即使我記錄了我沒有用戶標識的時間戳。 – user510336

+0

@user - 至少,用戶標識可以是請求來源的IP。這仍然有點粗糙(有幾個人可能在一個IP後面),但是它可以讓你跟蹤請求的來源,並且請求者必須花費更多的麻煩來僞裝/隱藏IP地址。 – slugster

0

您可以檢查用戶代理並查看請求是否來自網絡瀏覽器。

請參閱this article瞭解更多信息。

+1

UserAgent不能被信任,它可以是請求代理想要它的任何東西。 – slugster

+0

不能這個信息被僞造? – user510336

2

我想大多數網頁都是通過cookie來做到這一點,或者他們存儲請求者的IP地址。代理可以僞造,並且有相當多的工具可以做到這一點。

心連心

馬里奧

+0

但有時候一羣用戶共享ip地址......就像一家公司或其他所有內部用戶將使用相同的IP地址一樣。 – user510336

+0

是真的,那麼你可以使用cookie或用戶登錄 - 另見:http://en.wikipedia.org/wiki/Unique_visitor或http://www.opentracker.net/article/hits-or-pageviews –