2010-07-24 58 views
6

我想确保我的网站阻止像Selenium和QTP这样的自动化工具。有没有办法做到这一点 ? Selenium网站上的哪些设置会失败?如何确保我的网站可以阻止自动化脚本,机器人?

+9

你为什么要那样做? 由于自动化工具是模仿用户的,所以阻止它们的最好方法是拔掉Web服务器,浇注混凝土,然后逃跑。 但也许你有一个很好的理由。 – Scharron 2010-07-24 21:41:33

+2

更多关于serverfault的问题 - 如果您有一个好的防火墙 - 限制每个IP或用户每秒/秒(或X次)的TCP连接数量。也可能是Apache插件。 – EdH 2010-07-24 21:46:16

+0

我同意@Scharron--你想达到什么目的?如果以某种方式阻止Selenium/QTP,那么阻止用户使用其他工具尝试,或者用'curl','wget'或Apache'HttpClient'编写自己的代码? – pdbartlett 2010-07-24 21:56:43

回答

3

考虑到对原始问题的评论问“你为什么要这样做?”,你基本上需要遵循与任何网站用来验证用户实际上是人类一样的策略。诸如要求用户认证或从图像等文字输入文字的方法可能会奏效,但这可能会阻止谷歌搜索器和其他一切。

根据用户代理字符串或类似的东西做任何事情都是没用的。这些都是微不足道的。

速率限制连接或类似的可能有限的效果,但它似乎你会无意中阻止任何网络爬虫。

+1

我同意@Gian最好的方式来阻止某人自动与您的网站进行用户互动,就是介绍一些类似captcha的内容。 http://en.wikipedia.org/wiki/CAPTCHA – 2010-07-26 08:25:26

+1

使用REcaptcha(http://en.wikipedia.org/wiki/ReCAPTCHA)将其提升到新的水平。然后,您可以阻止自动交互,同时帮助数字化旧书和报纸! – Zugwalt 2010-07-27 18:44:00

+0

我不认为CAPTCHA是最好的解决方案,因为它们非常便宜。有人运行自动脚本可以轻松绕过它。如果你不想让任何人在你的网站上运行自动脚本,解决方案就是首先不要有网站。 – KJW 2011-11-10 14:35:07

3

虽然这个问题似乎很奇怪它是有趣的,所以我试图探讨的可能性

除了增加一个CAPTCHA这是最好的和唯一的终极解决方案,您可以通过添加下面的JavaScript来阻止硒你页面(本例中重定向到谷歌网页,但你可以做任何你想要的):

<script> 
var loc = window.parent.location.toString(); 
if (loc.indexOf("RemoteRunner.html")!=-1) { 
    // It is run in Selenium RC, so do something 
    document.location="http://www.google.com"; 
} 
</script> 

我不知道你怎么能阻止其他自动化工具,我不知道这将不会阻止硒IDE

0

要100%确定没有自动化机器人/脚本可以针对您的网站运行,请勿在线上有网站。这将确定地满足您的要求。

由于众包和OCR方法,CAPTCHA很容易打破,如果不便宜的话。

代理可以免费在野外找到,或批量可以极低的成本。再次,无用的限制连接速度或检测机器人。

一种可能的方法可能是在您的应用程序逻辑中,通过诸如电话验证,信用卡验证等方式实施增加访问网站的时间和成本的方法。您的网站永远不会起步,因为没有人会相信您的网站处于初期阶段。

解决方案:不要让您的网站在线,并期望能够有效地消除运行中的机器人和脚本。