2011-06-02 40 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也只是一款猫捉老鼠游戏,尽管它只是一个最前沿的游戏。

相关问题