标签: bots

阻止脚本编写者抨击您的网站

我已经接受了答案,但遗憾的是,我相信我们仍然坚持我们最初的最坏情况:CAPTCHA每个人都在购买废话的尝试.简短说明:缓存/ Web场无法跟踪命中,任何解决方法(发送非缓存的Web信标,写入统一表等)都会使网站的速度比机器人更慢.思科等可能有一些昂贵的硬件可以提供高水平的帮助,但如果每个人都可以选择CAPTCHA,那么很难证明成本是合理的.我稍后会尝试更全面的解释,以及为未来的搜索者清理它(尽管欢迎其他人尝试,因为它是社区维基).

情况

这是关于woot.com上的包装销售情况.我是Woot Workshop的总裁,Woot是Woot的子公司,负责设计,撰写产品说明,播客,博客文章以及审核论坛.我使用CSS/HTML,我只是熟悉其他技术.我与开发人员密切合作,并在这里讨论了所有答案(以及我们已经拥有的许多其他想法).

可用性是我工作的重要组成部分,使网站令人兴奋和有趣是其余部分.这就是下面三个目标的来源.CAPTCHA损害了可用性,机器人从我们的垃圾销售中窃取了乐趣和兴奋.

对于随机垃圾销售,机器人在第二次屏幕抓取(和/或扫描我们的RSS)时数十次关闭我们的头版.他们看到的那一刻,它触发了登录程序的第二阶段,点击我想要一个,填写表格,并购买废话.

评估

lc:在stackoverflow和其他使用此方法的站点上,它们几乎总是处理经过身份验证的(已登录)用户,因为正在尝试的任务需要这样做.

在Woot上,匿名(未登录)用户可以查看我们的主页.换句话说,砰击机器人可以是非认证的(并且除了IP地址之外基本上是不可跟踪的).

所以我们又回到了扫描IP,其中a)在这个云网络和spambot僵尸时代相当无用,以及b)因为来自一个IP地址的企业数量而吸引了太多的无辜者(更不用说与非静态IP ISP和潜在的性能命中试图跟踪这个).

哦,让人们打电话给我们将是最糟糕的情况.我们可以让他们打电话给你吗?

BradC:Ned Batchelder的方法看起来很酷,但它们的设计非常坚固,可以击败为网站构建的机器人.我们的问题是机器人是专门为打败我们的网站而构建的.其中一些方法可能会在很短的时间内工作,直到脚本编写者发展他们的机器人忽略蜜罐,屏幕刮擦附近的标签名称而不是表单ID,并使用支持javascript的浏览器控件.

 

lc:"当然,除非炒作是你营销计划的一部分." 是的,肯定是.当项目出现时的惊喜,以及如果你设法获得一个项目的兴奋可能与你最终得到的垃圾一样重要或更重要.任何消除先到先得的东西都不利于"赢得"垃圾的快感.

 

novatrust:我是一个人,欢迎我们新的机器人霸主.我们实际上提供RSSfeeds以允许第三方应用程序扫描我们的网站以获取产品信息,但不会超出主站点HTML.如果我正确地解释它,你的解决方案确实通过完全牺牲目标1来帮助目标2(性能问题),并且只是辞去机器人将购买大部分垃圾的事实.我对你的回复进行了投票,因为你的最后一段悲观情绪对我来说是准确的.这里似乎没有银弹.

其余的响应通常依赖于IP跟踪,再次,这似乎无用(使用僵尸网络/僵尸/云网络)和有害(捕获来自同一IP目的地的许多无辜者).

还有其他方法/想法吗?我的开发人员一直在说"我们只是做CAPTCHA",但我希望所有真正想要我们废话的人都会采用较少侵入性的方法.

原始问题

假设您正在销售具有很高感知价值的便宜货,并且您的数量非常有限.没有人确切知道你何时会出售这件物品.超过一百万人经常来看看你卖的是什么.

你最终会得到脚本编写者和机器人试图以编程方式[a]弄清楚你卖的东西,并且[b]确保他们是第一个购买它的人.这很糟糕有两个原因:

  1. 您的网站遭到非人类的抨击,所有人都放慢了速度.
  2. 脚本编写者最终"赢得"了产品,导致常客感到受骗.

一个看似显而易见的解决方案是为您的用户创建一些环节,以便在下订单之前跳过,但至少有三个问题:

  • 用户体验对人类来说很糟糕,因为他们必须解密CAPTCHA,挑选猫或解决数学问题.
  • 如果感知到的好处足够高,并且人群足够大,那么一些团队会找到适合任何调整的方式,导致军备竞赛.(尤其如此,调整更简单;隐藏'评论'形式,重新排列表单元素,错误标记它们,隐藏'gotcha'文本都将工作一次然后需要更改以针对此特定表单进行定位.)
  • 即使脚本编写者无法"解决"您的调整,也不会阻止他们抨击您的首页,然后发出警报,让脚本编写者手动填写订单.鉴于他们从解决[a]中获得优势,他们可能仍然会赢[b]因为他们将成为第一批到达订单页面的人.此外,1.仍然会发生,导致服务器错误和每个人的性能下降.

另一种解决方案是监视IP经常发生的攻击,阻止它们进入防火墙,或以其他方式阻止它们进行排序.这可以解决2.并且防止[b],但是扫描IP的性能是巨大的,并且可能会导致比脚本编写者自己造成的更多问题.此外,云网络和spambot僵尸的可能性使IP检查相当无用.

第三个想法,迫使订单表格被加载了一段时间(比如说,半秒钟)可能会减慢快速订单的进度,但同样,脚本编写者仍然会成为第一批人,无论如何都不会对实际用户.

目标

  1. 将该项目出售给非脚本人类.
  2. 保持网站以不受机器人减速的速度运行.
  3. 不要为完成任何任务而对"正常"用户进行麻烦,以证明他们是人.

scripting bots detection e-commerce

489
推荐指数
19
解决办法
9万
查看次数

115
推荐指数
11
解决办法
11万
查看次数

WhatsApp API(java/python)

我在寻找WhatsApp API,最好是Python或Java库.

我已经尝试过Yowsup,但无法注册我的号码; 我在印度工作,我不确定这与它有什么关系.

我确实尝试过WhatsAPI(Python库),但它也没有用.

对此有何建议?Yowsup的任何用户都在这里?

python java api bots whatsapp

87
推荐指数
5
解决办法
22万
查看次数

如何删除其他人创建的slackbot提醒?

有一个松弛的私人频道与slackbot提醒.它是由人创建的,不再在我们公司工作.我怎么能删除这个嘈杂的slackbot提醒?

bots slack

71
推荐指数
1
解决办法
3万
查看次数

通过JavaScript检测搜索爬虫

我想知道如何检测搜索爬虫?我问的原因是因为如果用户代理是机器人,我想要禁止某些JavaScript调用.

我找到了一个如何检测某个浏览器的示例,但是找不到如何检测搜索爬虫的示例:

/MSIE (\d+\.\d+);/.test(navigator.userAgent); //test for MSIE x.x

我想阻止的搜索抓取工具示例:

Google 
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) 
Googlebot/2.1 (+http://www.googlebot.com/bot.html) 
Googlebot/2.1 (+http://www.google.com/bot.html) 

Baidu 
Baiduspider+(+http://www.baidu.com/search/spider_jp.html) 
Baiduspider+(+http://www.baidu.com/search/spider.htm) 
BaiDuSpider 
Run Code Online (Sandbox Code Playgroud)

javascript bots web-crawler

43
推荐指数
4
解决办法
3万
查看次数

程序如何控制另一个程序?

机器人,他们是如何工作的?他们是否告诉视频游戏按下了键或点击了鼠标?

如果没有,是否有办法让你的程序告诉另一个程序按下了一个键?我想做一个程序来击败一些游戏.因此,任何资源或示例都受到赞赏.

更新:所以一种方法是模拟击键,那么有什么方法可以做到这一点(用任何语言)?

bots

40
推荐指数
2
解决办法
6万
查看次数

通过Selenium进行类似人类的鼠标移动

故事:

解决验证码的方法之一,如谷歌ReCaptcha,是试图模仿人类鼠标动作:动作,悬停和点击.

一些用户报告说,将鼠标移动作为B样条曲线可以为它们工作.

问题:

如何通过Selenium将鼠标移动到B样条轨迹之后的特定元素?


请注意,常规browser.actions().mouseMove(elm).perform();会直接"跳"到元素并且太快.我的理解是,这是一个减慢运动速度的问题,在B样条轨迹的数学模型之后,从一点到另一点平滑地"跳跃".

我们使用的是Protractor/JavaScript,但问题实际上与语言无关. 请注意,我并不是要尝试解决验证码,也不是为了"使用验证码解决新恶意机器人在这里和那里违反使用条款"的空间.我只是好奇并渴望在测试自动化领域获得更多技能.

selenium automation bots selenium-webdriver protractor

39
推荐指数
1
解决办法
8719
查看次数

如何让松散的机器人离开频道?

机器人不能使用常规频道.离开api呼叫,那么如何让机器人离开频道,没有踢它?我需要它留下一个我没有权利踢用户的频道.

bots slack

38
推荐指数
1
解决办法
3万
查看次数

检测诚实的网络爬虫

我想检测(在服务器端)哪些请求来自机器人.我现在不关心恶意机器人,只关注那些玩得很好的机器人.我见过一些主要涉及将用户代理字符串与'bot'等关键字匹配的方法.但这似乎很尴尬,不完整,不可维护.那么有没有人有更坚实的方法?如果没有,您是否拥有用于跟上所有友好用户代理的最新资源?

如果你很好奇:我不打算对任何搜索引擎政策做任何事情.我们有一个网站的部分,其中用户随机呈现一个页面的几个略有不同的版本之一.但是,如果检测到Web爬网程序,我们将始终为它们提供相同的版本,以使索引保持一致.

我也在使用Java,但我认为这种方法对于任何服务器端技术都是类似的.

c# bots web-crawler

36
推荐指数
4
解决办法
2万
查看次数

Selenium headless:如何使用 Selenium 绕过 Cloudflare 检测

希望专家能帮助我解开 Selenium/Cloudflare 之谜。我可以让一个网站在普通(非无头)Selenium 中加载,但无论我尝试什么,我都无法让它在无头中加载。

我已遵循 StackOverflow 帖子中的建议,例如Is there a version of Selenium WebDriver that is not detectorable? window我还查看了和对象的所有属性window.navigator,并修复了无头和非无头之间的所有差异,但不知何故仍然检测到无头。此时我非常好奇 Cloudflare 如何能够找出其中的差异。谢谢你的时间!

我尝试过的事情列表:

  • 用户代理
  • 替换cdc_为 chromedriver 中的另一个字符串
  • options.add_experimental_option("excludeSwitches", ["enable-automation"])
  • options.add_experimental_option('useAutomationExtension', False)
  • options.add_argument('--disable-blink-features=AutomationControlled')(这是让网站以非无头方式加载所必需的)
  • navigator.webdriver = undefined
  • 设置navigator.pluginsnavigator.languages、 和navigator.mimeTypes
  • window.ScreenY, window.screenTop, window.outerWidth,设置window.outerHeight为非零
  • 设置window.chromewindow.navigator.chrome
  • 将图像的宽度和高度设置为非零
  • 设置WebGL参数
  • 使固定Modernizr

重复实验

为了让网站在正常(非无头)Selenium 中加载,您必须点击_blank另一个网站的链接(以便目标网站在另一个选项卡中打开)。要复制该实验,首先创建一个包含内容的 html 文件<a href="https://poocoin.app" target="_blank">link</a>,然后在以下代码中粘贴该 html 文件的路径。

下面的版本(非无头)运行良好并加载网站,但如果您设置 …

python selenium bots webdriver selenium-webdriver

35
推荐指数
1
解决办法
6万
查看次数