2011-06-02 81 views
3

我正在使用ASP.NET MVC與沉重的jQuery客戶端交互。我有一個jQuery聊天窗口,以7秒的間隔定期輪詢服務器以獲取更新。所有這些都很好,我有兩種操作方法來處理聊天的兩個主要功能;一種方法用於將消息發佈到聊天中,另一種用於檢索更新。如何防止通過我自己的客戶端代碼訪問URL?

我的問題是,我有一些用戶在編寫與這些URL進行交互的機器人來發布消息並獲取更新。如果有人希望阻止用戶通過我自己的客戶端代碼與這些網址進行交互,那麼如何實現這一目標呢?

我想在頁面加載時傳遞一個GUID,然後在每個請求中傳回這個GUID,但我不確定這是做這件事的最好方法。另外,什麼會阻止他們向其bot程序中寫入額外的步驟,以便對加載頁面的URL執行正常的GET請求,然後解析GUID的響應?

任何想法都非常感謝。謝謝!

+0

我假設你的代碼與你的API會談是公開的。所以你不能在客戶端「隱藏」一些計算。它是否正確? – Halcyon 2011-06-02 21:19:07

+0

這是正確的。 – Chev 2011-06-02 21:20:14

回答

3

那麼,不可能編寫代碼以其他人無法模擬的方式執行代碼......如果代碼是Javascript,那麼這個任務很容易完成。

CAN做什麼,就是想讓它變得更加困難。使用某種身份驗證,使用一個很好的混淆器來混淆代碼等等。但是,如果你不把所有的驗證碼都放在你的網站上,你永遠不會100%確定。

您還可以使用過濾器,驗證等來停止騷擾用戶服務器端。

我會嘗試攻擊使用機器人的原因和好處。讓人們停止使用在你的代碼之上工作的機器人和腳本的最簡單的方法就是僅僅提供他們想要的功能,而不會打擾你。

+0

機器人實際上並沒有引起問題,他們只是爲了好玩而做。我只是想知道,如果我想阻止他們,會怎樣。謝謝(你的)信息。 – Chev 2011-06-02 21:21:03

+3

如果你的用戶喜歡它,你甚至可以加入這個樂趣 - 爲什麼你不圍繞這些機器人創建某種遊戲機制?讓他們競爭!你可以用一個瑣事機器人自己設置示例 – slezica 2011-06-02 21:23:24

+0

這實際上是一個非常好的主意。 – Chev 2011-06-02 21:24:11

3

這是一個相當困難的問題,因爲您的客戶端代碼本質上與客戶端的機器人沒有區別。你可以做的一件事是實施某種CAPTCHA檢查登錄,並可能間歇性地發佈消息,但這可能會刺激你的真實用戶。所以我不確定這裏是否有非常優雅和流暢的解決方案。

+0

用戶確實需要用戶名,所以禁止bot是簡單地禁止冒犯用戶名,但我只是好奇如果有更好的方法。謝謝你的回答:) – Chev 2011-06-02 21:21:41

+0

如果人們爲了好玩而這樣做,這不是我想的問題。如果它被用於垃圾郵件等類似的事情,那麼你可以採取一些措施,比如限制和顯示CAPTCHA,如果有人濫發垃圾郵件。然而,如果這不是問題,這不是值得的努力:) – 2011-06-02 21:28:21

+0

是的,這是真的。我其實沒有計劃去做任何事情。我只是好奇,如果我想停下來,會怎麼樣。我越想越多,我意識到這並不容易。 – Chev 2011-06-02 21:31:11

0

聊天客戶端自互聯網曙光以來一直存在,我知道一個非常受歡迎的聊天客戶端:IRC。他們有完全相同的問題:你如何識別一個機器人?現在看來,這仍然是一個問題,我認爲可以肯定地說你做不到。

也許有一些啓發式可以用來檢測機器人,但它是一個貓和老鼠的遊戲。 CAPTCHA也只是一款貓捉老鼠遊戲,儘管它只是一個最前沿的遊戲。

相關問題