如何防止访问除我自己的客户端代码之外的URL



我使用的是带有大量jQuery客户端交互的ASP.NET MVC。我有一个jQuery聊天窗口,它每隔7秒轮询服务器以获取更新。所有这些工作都很棒,我有两个操作方法来处理聊天的两个主要功能;一种方法用于向聊天室发布消息,另一种方法则用于检索更新。

我的问题是,我有一些用户正在编写与这些URL交互的机器人,以发布消息和获取更新。如果有人想阻止用户与这些URL交互,除非通过我自己的客户端代码,那么该如何实现呢?

我曾想过在页面加载时传入一个GUID,然后在每次请求时都返回这个GUID,但我不确定这是最好的方法。此外,什么能阻止他们在机器人程序中写入额外的步骤,对加载页面的URL进行正常的GET请求,然后解析GUID的响应?

好吧,不可能编写以其他人无法模拟的方式运行的代码,。。。如果您的代码是Javascript,那么任务就很容易完成。

CAN所做的就是努力让它变得更加困难。使用某种身份验证,使用一个好的模糊器来模糊代码,等等。不过,除非你在网站上到处都是captchas,否则你永远不会100%确定。

您还可以通过过滤器、验证等方法在服务器端阻止骚扰用户。

我会尝试攻击使用机器人的原因和好处。让人们停止使用在你的代码上运行的机器人和脚本的最简单方法是,以一种不会困扰你的方式,提供他们想要的功能。

这是一个相当困难的问题,因为您的客户端代码本质上与机器人没有什么不同,机器人也是客户端。你可以做的一件事是对登录进行某种CAPTCHA检查,可能会间歇性地对发布消息进行检查,但这可能会激怒你的真实用户。所以我不确定这里是否有一个非常优雅和流畅的解决方案。

聊天客户端从互联网出现之初就已经存在,我知道一个非常流行的客户端:IRC。他们有完全相同的问题:你如何识别机器人?鉴于这几天仍然是一个问题,我认为可以肯定地说你不能。

也许有一些启发式方法可以用来检测机器人,但这是一个猫捉老鼠的游戏。CAPTCHA也只是一个猫捉老鼠的游戏,尽管它处于前沿。

最新更新