问题标签 [bots]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bots - 程序化机器人检测
我需要编写一些代码来分析我们网站上的给定用户是否是机器人。如果是机器人,我们将采取一些具体行动。除了友好的机器人之外,查看用户代理对于任何事情都不会成功,因为您可以在机器人中指定您想要的任何用户代理。我追求不友好机器人的行为。到目前为止,我的各种想法是:
- 如果您没有浏览器 ID
- 如果您没有会话 ID
- 无法写入 cookie
显然,在某些情况下,合法用户看起来像机器人,但这没关系。是否有其他程序化方法来检测机器人,或者检测看起来像机器人的东西?
artificial-intelligence - AI Bot 编程环境
我刚刚完成了一门人工智能课程,作为作业的一部分,我能够在多人环境(BZFlags)中编写机器人程序。我能够做的是对机器人进行编程,使其与世界交互,并与其他机器人甚至人类对战。
我想知道的是,还有哪些其他环境可以让我做同样的事情(为游戏编程机器人或在专业环境中)?
我之所以能够使用 BZFlags 做到这一点,是因为它们提供了一个 API,以便我可以向我的机器人发送命令并查找有关它们周围世界的信息。
php - 如何用php识别机器人?
我正在为我的用户建立统计数据,并且不希望计算来自机器人的访问。
现在我有一个基本的php,每次调用页面时mysql都会增加1。
但机器人也被添加到计数中。
有没有人能想到办法?
主要是那些把事情搞砸的主要因素。谷歌、雅虎、Msn 等
encryption - MMORPG协议加密
任何人都知道如今 MMORPG 开发人员加密他们的客户端/服务器协议的趋势是什么?
优缺点如下。
加密协议:
- 在一定程度上保护有关客户端/服务器协议的商业机密?
- 机器人并没有停止,它只是改变了,因为人们将创建读取屏幕状态并触发鼠标+键盘事件的机器人然后将被开发,只是缓解机器人的发展而不是无论如何阻止它们。尽管机器人开发的供应量有所减少,但需求仍然存在,他们只是在rentacoder.com上获得更高的出价
常规纯文本:
- 更高级的机器人,因为开发人员能够将自己的数据报注入客户端/服务器协议。(即:穿墙,传送......服务器端现在必须检查,这反过来又导致通过注入修补漏洞之间的开发竞赛(耗时)
scripting - 阻止脚本编写者抨击您的网站
我已经接受了一个答案,但遗憾的是,我相信我们陷入了最初的最坏情况:CAPTCHA 每个人都在购买废话。简短说明:缓存/网络农场无法跟踪点击,任何解决方法(发送非缓存网络信标、写入统一表等)都会比机器人更慢地降低网站速度。可能有来自 Cisco 或类似公司的一些昂贵的硬件可以提供高水平的帮助,但如果每个人都可以进行 CAPTCHA 验证,则很难证明其成本是合理的。稍后我将尝试更完整的解释,并为将来的搜索者清理它(尽管欢迎其他人尝试,因为它是社区 wiki)。
情况
这是关于 woot.com 上的垃圾袋销售。我是 Woot Workshop 的总裁,Woot 的子公司负责设计、撰写产品描述、播客、博客文章并主持论坛。我使用 CSS/HTML,对其他技术几乎不熟悉。我与开发人员密切合作,并讨论了这里的所有答案(以及我们拥有的许多其他想法)。
可用性是我工作的重要组成部分,而让网站变得令人兴奋和有趣是剩下的大部分内容。这就是下面三个目标的来源。CAPTCHA 损害了可用性,机器人从我们的垃圾销售中窃取了乐趣和兴奋。
机器人会在第二次屏幕抓取(和/或扫描我们的 RSS)中猛烈抨击我们的首页数十次,以进行 Random Crap 销售。当他们看到这一点时,它会触发程序的第二阶段登录,点击我想要一个,填写表格,然后购买垃圾。
评估
lc:在使用此方法的 stackoverflow 和其他站点上,它们几乎总是与经过身份验证(登录)的用户打交道,因为正在尝试的任务需要这样做。
在 Woot 上,匿名(未登录)用户可以查看我们的主页。换句话说,slamming 机器人可以是未经身份验证的(并且除了 IP 地址之外基本上是不可追踪的)。
所以我们回到扫描IP,a)在这个云网络和垃圾邮件僵尸时代相当无用,b)考虑到来自一个IP地址的企业数量,它捕获了太多的无辜者(更不用说问题了)非静态 IP ISP 和试图跟踪此问题的潜在性能损失)。
哦,让人们打电话给我们将是最糟糕的情况。我们可以让他们给你打电话吗?
BradC:Ned Batchelder 的方法看起来很酷,但它们的设计非常牢固,可以击败为网站网络构建的机器人。我们的问题是机器人是专门为击败我们的网站而构建的。其中一些方法可能会在短时间内起作用,直到脚本编写者将他们的机器人进化为忽略蜜罐,屏幕抓取附近的标签名称而不是表单 ID,并使用支持 javascript 的浏览器控件。
lc 再次:“当然,除非炒作是你营销计划的一部分。” 是的,绝对是。物品出现时的惊喜,以及如果你设法得到一件的兴奋,可能与你最终得到的废话一样重要或更重要。任何消除先到先得的行为都会损害“赢得”垃圾的快感。
novatrust:首先,我欢迎我们的新机器人霸主。实际上,我们确实提供 RSSfeeds 以允许 3rd 方应用程序扫描我们的站点以获取产品信息,但不会在主站点 HTML 之前。如果我的解释是正确的,那么您的解决方案确实通过完全牺牲目标 1 来帮助目标 2(性能问题),并且只是放弃机器人将购买大部分废话的事实。我对你的回答投了赞成票,因为你最后一段的悲观主义对我来说是准确的。这里似乎没有灵丹妙药。
其余的响应通常依赖于 IP 跟踪,这似乎既无用(僵尸网络/僵尸/云网络)又有害(捕获许多来自相同 IP 目的地的无辜者)。
还有其他方法/想法吗?我的开发人员一直在说“让我们做 CAPTCHA”,但我希望对于所有想要我们的废话的实际人类来说,有更少的侵入性方法。
原始问题
假设您正在销售具有很高感知价值的廉价商品,而您的数量非常有限。没有人确切知道您何时会出售此商品。超过 100 万人定期来看看你在卖什么。
您最终会遇到脚本编写者和机器人试图以编程方式 [a] 找出您何时出售所述物品,并 [b] 确保他们是第一批购买它的人。这很糟糕有两个原因:
- 您的网站遭到非人类的猛烈抨击,使所有人的一切都变慢了。
- 脚本编写者最终“赢得”了产品,导致常客感到受骗。
一个看似显而易见的解决方案是在下订单之前为您的用户创建一些跳线,但这至少存在三个问题:
- 用户体验对人类来说很糟糕,因为他们必须破译验证码、挑选猫或解决数学问题。
- 如果感知到的好处足够高,并且人群足够多,那么一些群体会找到解决任何调整的方法,从而导致军备竞赛。(更简单的调整尤其如此;隐藏的“评论”表单、重新排列表单元素、错误标记它们、隐藏的“陷阱”文本都将工作一次,然后需要进行更改以对抗针对此特定表单.)
- 即使脚本编写者无法“解决”您的调整,也不会阻止他们猛击您的首页,然后发出警报让脚本编写者手动填写订单。鉴于他们从解决 [a] 中获得了优势,他们可能仍然会赢得 [b],因为他们将是第一个到达订单页面的人。此外,1. 仍然会发生,导致服务器错误和每个人的性能下降。
另一种解决方案是监视 IP 访问频率过高,阻止它们进入防火墙,或者以其他方式阻止它们排序。这可以解决 2. 并防止 [b] 但扫描 IP 对性能的影响是巨大的,并且可能会导致像 1. 这样的问题,而不是脚本编写者自己造成的问题。此外,云网络和垃圾邮件僵尸的可能性使得 IP 检查毫无用处。
第三个想法,强制加载订单表格一段时间(比如半秒)可能会减慢快速订单的进度,但同样,脚本编写者仍然是第一个进入的人,只要速度不损害实际用户。
目标
- 将项目出售给非脚本人员。
- 保持网站以不被机器人减慢的速度运行。
- 不要让“普通”用户完成任何任务来证明他们是人类。
c# - 如何使用 C# 创建 IM 机器人
有没有一种简单的方法可以在多个即时通讯网络(aim、gtalk、yim 等)上创建即时通讯机器人,可以接受和解释发送给它的特定命令以执行服务器相关任务?
比方说,我有一个管理 RSS 提要的网站。我想向 IM 机器人发送命令以向我的收藏添加另一个提要。IM 机器人会将我的屏幕名称与我之前在网站上设置的帐户相关联。
c# - 检测诚实的网络爬虫
我想检测(在服务器端)哪些请求来自机器人。在这一点上,我不关心恶意机器人,只关心那些玩得很好的机器人。我见过一些方法,主要涉及将用户代理字符串与“bot”等关键字进行匹配。但这似乎很尴尬,不完整且无法维护。那么有人有更可靠的方法吗?如果没有,您是否有任何资源用于与所有友好的用户代理保持同步?
如果你很好奇:我不会试图做任何违反任何搜索引擎政策的事情。我们有一个网站部分,用户会随机看到几个稍微不同的页面版本之一。但是,如果检测到网络爬虫,我们将始终为它们提供相同的版本,以使索引保持一致。
我也在使用 Java,但我想这种方法对于任何服务器端技术都是相似的。
instant-messaging - 创建 IM 机器人
我正在尝试创建一个 IM 机器人,但我无法找到必要的资源。
更新
Imified 存在一个问题,使 gtalk 机器人无法在线显示(并且没有响应),它现在可以正常工作,所以我要关闭它。
本教程确实有效。
原始问题未删除以供参考
首先,我确实找到了一个关于如何编写自己的 IM Bot的很棒的教程,但它使用的 IMified 平台看起来已经死了(2008 年 9 月的最后一篇博文,在他们的帮助论坛上没有任何反馈,...)。
我确实设法使用他们的服务创建了一个测试版机器人,但正如我在他们的帮助论坛中看到的那样,它永远不会在线。
那么,有人设法做到了吗?
笔记
我正在寻找的东西是:
- 自由
- 适用于 PHP* 或一些免费的托管解决方案(如 IMified 但有效)
- 适用于 Google Talk(我真的不在乎其他)
当然,请发布有关任何不符合这些标准的解决方案的答案,这可能会有所帮助。
*我在 GoDaddy 上有一个 Linux 托管计划
security - 如何在不阻止行为良好的机器人的情况下阻止 Web 抓取?
我正在建立一个包含大型产品数据库的电子商务网站。当然,当 Goggle 索引网站的所有产品时也很好。但是,如果某个竞争对手想要Web 抓取网站并获取所有图像和产品描述怎么办?
我正在观察一些具有类似产品列表的网站,它们放置了验证码,因此“只有人类”才能阅读产品列表。缺点是……它对 Google、Yahoo 或其他“行为良好”的机器人是不可见的。
api - 带有 api 的推特机器人
我正在编写一个即时回复用户消息的机器人。从我读过他们的api只允许每分钟左右检查一次更新。
是否有推送功能或第三方服务可以立即将新消息推送到我的服务器?
我见过可以做到这一点的机器人。