访客会看到验证码吗?
访客会看到验证码吗?
永远不会。Karma 无形地读取会话并给出裁定;真人无摩擦通过。
无需验证码或代理。一段异步代码,全程 TLS。
Karma 只需一个脚本标签,而且在所有平台上都是同一个标签 —— 区别只在于放进哪个文件。把它放在 <head> 的最前面、分析代码和标签管理器之上,它就能在任何其他脚本拖慢它之前开始读取会话。
<script async src="https://cdn.karma-verdict.com/karma-loader.js"
data-endpoint="https://collect.karma-verdict.com/t"
data-src="https://cdn.karma-verdict.com/karma.js"></script>
不需要安装其他东西:服务器上无需代理程序,无需修改 DNS,网站前面也不用架设代理。您的网关向 Karma 询问裁定结果,页面仍由它自己提供。 阅读安装指南
行为与传输信号、按账户的信誉,以及可选的共享黑名单,访客永远看不到验证挑战。
这些网站的流量已经经过 Karma。当机器人不再触达页面、分析数据和行为信号时,搜索引擎看到的网站就和真实访客看到的一样。
加上机器人防护后,流量下滑止住了,三周后搜索排名开始上升。
接入后跳出率立即改善了 3%。
仅仅是清除流量中的机器人,就让停滞了一年的流量重新开始增长。
十五种情形:在这些情形下,自动化流量不再只是分析报表里的一个数字,而开始消耗金钱、客户或信誉。如果其中任何一种与您的网站相符,那些请求已经在路上了。
第一组关乎自动化流量找到一个网站之后,究竟会做些什么。这些都不需要定向攻击,也不需要执着的对手:只要一个地址在 443 端口上应答得够久,这些就会发生。
撞库是互联网上最常见的攻击,也是看上去最不惊心动魄的一种。来自其他公司泄露事件的“邮箱-密码”组合清单,被一遍遍地重放到您的登录表单上:每秒几次请求,来自成千上万个不同地址,日复一日。
这笔账只需要极小的成功率就能成立。一百万组的清单,配上千分之一的密码重用率,就是一千个可用账户--带着已保存的银行卡、积分余额、订单历史和地址簿,而它们属于那些会怪罪网站、而不是怪罪自己密码习惯的客户。
注册表单、联系表单、报价申请、评价和评论框,都会吸引自动化提交。其中一部分是普通垃圾信息;更多的则更安静--批量创建账户以薅新人补贴、种下评价,或者干脆放在那里,直到它们值点什么。
买单的是人,不是服务器。销售同事拨打一份根本不存在的线索名单,审核人员清空一个隔夜又被填满的队列,而客户库正在慢慢不再是一个客户库。
只要一个网站公开价格、库存、信息或名录,这些数据就值得被拿走。竞争对手追踪它以便压价,聚合站把它再发布一遍,而爬虫每天夜里读完整个目录--远比任何客户浏览得更快、更完整。
按 User-Agent 或地址段封禁撑不了多久:值得跑的爬虫,也值得从住宅代理、带着真实浏览器指纹去跑。把它和客户区分开来的,不是它自称是什么,而是它如何行动。
测卡不是在攻击这家店,而是在利用它。一份被盗银行卡清单,会通过任何肯受理的结账口推送小额授权来完成验证,而前面毫无摩擦的支付表单,正是干这件事的理想工具。
网站要付两次钱。先是那些从来不是订单的交易带来的手续费和拒付,然后是支付服务商的风险评分:授权失败率一旦升得足够高,商户账户就会被审查、被限流,最坏的情况下被关停。
一旦相当比例的会话是自动化的,任何从流量推导出来的指标都会漂移。分母被撑大,转化率随之下降;跳出率和会话时长不再有意义;A/B 测试需要多得多的流量才能达到显著性--或者悄无声息地得出错误结论。
而决策依然建立在这些数字上。评判一场投放、重做一个页面、挪动一笔预算,全都基于一份把大量根本不会购买的群体算了进去的测量。
第二组关乎那个常见的应对方式,以及它的代价。验证容易加上、难以撤下,而它把账单开给了你本想留住的那批人,却几乎拦不住它本该拦住的流量。
验证被放在风险所在之处:登录、注册、结账。而那也正是客户耐心最薄、替代方案只隔着一个标签页的地方。每一次验证都是一个原本不存在的决策点,摆在一个已经决定要买的人面前。
这种损失以最要命的方式隐身:没有人会为“我放弃了购物车”提交投诉。流量照旧到来,订单悄悄不来了,而原因看起来像转化问题,而不像一项安全设置。
图片九宫格和扭曲文字,对使用读屏软件的人、有运动功能障碍的人、低视力的人,以及大量觉得这根本无法完成的年长客户来说,都是一道门槛。音频替代方案不是更好而是更糟,而且经常是坏的。
除了丢掉的这笔生意,这越来越是一个法律问题。面向公众的服务所适用的无障碍规定,不会因为它是一项安全措施就网开一面;而“证明你是人”,是一个很糟糕的把客户挡在门外的理由。
解验证码是一门有公开报价的生意。人工打码工作室和自动求解服务,处理一道图片或文字验证只要不到一分钱--相对于一个被接管的账户或一张被验证通过的卡,这点成本可以忽略不计。
于是验证最终筛的是耐心,而不是意图。执着的攻击者付钱继续,赶时间的客户不付钱,转身离开。这恰好是反过来的。
一个与 API 通信的移动应用、一次合作方对接、一个嵌在 WebView 里的结账页、一条被客户端程序消费的数据流--它们都没有地方去画一道验证题,背后也没有人坐着去解它。
这些接口通常是最有价值、也最没有防护的地方,恰恰因为标准答案对它们不适用。守住它们的东西,必须从请求本身作出判断。
第三方验证会把代码加载进每一位访客的浏览器,并回传给一个不在您掌控之内的服务,通常还位于另一个司法辖区。在隐私意义上,这就是一个处理者--而且它就装在您最敏感的那几个页面上。
在类似 GDPR 的制度下,这意味着要有合法性基础、处理活动记录、数据处理协议,以及一个关于数据去了哪里的答复--而这个组件的全部工作,只是打断客户。
第三组关乎在任何一个账户被接管之前就已到来的后果。永远不会转化的流量,照样消耗广告预算、服务器容量、库存和注意力。而迟早会有技术团队之外的人提出一个问题,需要用证据来回答。
付费投放按点击计费,而在某些网络里,相当比例的点击是自动化的。钱花掉了,访问记下了,分析报表显示增长--而这一切都不是人。
更糟的是,这些流量还在训练优化引擎。自动出价策略从拿到的会话里学习,因此一个满是机器人流量的渠道,会教平台去买更多同类流量:预算在错误的方向上不断放大。
激进抓取在最字面的意义上就是昂贵。每个请求都要一次数据库查询、一次页面渲染、一份带宽,在按量计费的平台上还要加上账单里的一行。一个爬遍大型目录的爬虫,就可能超过一家小店全部的人类流量。
问题未必表现为一张账单。它可能表现为网站恰好在最不该慢的时候变慢--活动上线、促销当天、被提及后的第二天早上--因为原本为客户准备的容量流去了别处。
在供给稀缺、需求又卡着时间点的场景里,速度决定结果,而程序比人快。限量发售、门票开卖、折扣尾货、配送时段、预约日历和报名窗口,都会吸引专为那一刻编写的自动化程序。
客户看到结果,然后对这家企业得出结论:要么根本就没有货,要么货给了黄牛。这个印象远比货本身更贵。
企业客户的安全问询、网络安全保险的投保申请、支付行业的规则,问的都是同一件事的不同版本:是什么在阻止针对您公开接口的自动化凭据滥用和支付滥用,您又凭什么知道它在起作用。
“我们有验证码”经不起追问,因为追问会落在那些通过了验证码的流量上。对方要的是一项独立于任何具体验证而存在的控制措施,以及一份记录,说明它在受审期间做出了哪些判定。
代理公司、平台型商家和多品牌企业,往往运营着数十个站点,技术栈、托管方式和域名各不相同。每一个都有自己的流量形态、自己对误判的容忍度,以及自己关于“正常访客长什么样”的理解。
一个个手工配置扩展不了,等客户打电话来才发现问题同样扩展不了。这样的一批站点需要的是一套到处适用的统一基线、在站点确实特殊之处按站点设置的例外,以及一个能一眼看全的地方。
永远不会。Karma 无形地读取会话并给出裁定;真人无摩擦通过。
不会。代码片段在分析脚本之上异步加载并缓冲早期事件,绝不阻塞渲染。
Karma 采取故障放行:出问题时访客只会留在你的站点。可用性优先于严格。
由参与贡献的客户共同标记的地址。读取为可选、默认关闭,从次高档套餐起。
可以。你的名单始终优先于平台,不会失去合作伙伴或良性爬虫。
任何网站:纯 HTML 片段,外加 React/Next、PHP、Vue/Nuxt、WordPress 和 GTM 的封装。
传统的反机器人防护软件对可疑请求的回应是一道考验 - 验证码、中间页、拦截页 - 而且通常要求把流量接入它的代理。Karma 回应的是一个判定:读取行为与传输信号,结合你自己的信誉库为会话打分,真正执行的是你自己的网关。没有谜题,不改 DNS,也不在站点前面加代理。
两者都是,分界点正好落在你想保留控制权的地方。Karma 负责检测与打分,执行留在你的网关,于是拦截、限速还是导向镜像由你决定。免费的 Detect 套餐只提供判定,适合先观察再动手。
大约五分钟。在 <head> 顶部放一行异步脚本标签,再从网关调用判定接口即可。所有技术栈用的都是同一段标签 - HTML、React/Next、Vue/Nuxt、PHP、WordPress 或 GTM - 服务器上什么都不用装。
有。Detect 免费、无需信用卡,每月提供 25,000 次实时判定,并包含你自己的信誉库与 allow / deny 名单。镜像和共享机器人黑名单从付费套餐开始。
使用 Karma,我在分析之前安装异步代码片段,收集会话行为和传输信号,包括 HTTP/2 和 JA3/JA3N 指纹,并将判决传递给网关。我屏蔽的不是一个IP,而是一个与机器行为的会话;我将白名单置于我的声誉之上,因此办公室、合作伙伴 API 和有用的机器人不会被禁止。
在没有 Karma 的情况下,我可以免费禁用使用泄露密码的登录,启用 MFA,为现有和不存在的帐户添加相同的响应,并以滑动窗口的形式同时按 IP、登录和子网进行尝试计数。我创建从新设备成功登录的日志,通知所有者,并暂时要求重新进行身份验证;我仅使用 nginx limit_req 作为第一层,而不是作为针对机器人的唯一保护。
使用 Karma,我将表单提交与同一浏览器会话的判决关联起来,并且仅在评估实际行为和传输指纹后才允许处理。我禁用验证码,将拒绝列表应用于已批准的自动化,将允许列表应用于受信任的集成;如果信誉服务暂时不可用,故障打开不会停止站点本身。
我免费添加了一个蜜罐字段、最短填充时间、一次性 CSRF 令牌、电子邮件确认以及 IP、子网、地址和设备的限制。我推迟发放奖金,直到行动得到确认,在我自己的列表上屏蔽一次性域名,并每天比较确认的份额;该集减少了垃圾邮件,但我手动维护其规则和误报。
使用 Karma,我评估整个会话,而不是用户代理字符串:操作序列、点击率和客户端传输指纹。我将机器人发送到有限的路线或带有网关的块,为受信任的搜索机器人设置明确的允许列表,并维护我自己的地址信誉,以便更快地切断重复的爬行。
我免费关闭未使用的 API,引入带签名游标的分页,限制对 nginx 请求的深度和频率,缓存昂贵的响应,并为搜索和上传设置单独的配额。我检查官方爬虫程序的反向和正向 DNS,分析 access.log 的爬行率,并手动阻止 ASN 或子网,接受住宅代理需要不断调整规则。
通过 Karma,我可以在向支付提供商发送请求之前获得判决,并将其链接到整个会话的行为,而不仅仅是最后一次结帐后的行为。我在网关处阻止机器会话,允许正常客户重试,并仅将已清除的流传输到支付系统,从而减少付费授权和错误拒绝的数量。
免费地,我从支付提供商处对卡进行令牌化,禁止任意金额,通过帐户、令牌卡、BIN、IP 和子网限制尝试次数,在多次拒绝后,我引入了延迟和电子邮件确认。我根据风险规则启用3-D Secure,不保存CVV,并针对拒绝支付与成功支付的比例建立警报;必须根据实际订单手动校准规则。
借助 Karma,我开始在柜台前收集信号,接收会话判决,并在生成分析事件之前将人员与机器人分开。我包装找到的计数器,以便镜像不会创建重复项,并且如果 Karma 不可用,则会在超时后启动分析;然后我比较已清除的人类会话之间的转换。
我免费创建服务器会话 ID、标记已知数据中心和非自然序列、排除内部流量并按已确认的事件(登录、购物车或购买)过滤报告。我单独保存原始流,这样如果过滤器失败,我就不会丢失数据,并且每周都会检查我的正则表达式和机器人列表。
使用 Karma,我用后台会话评估替换了显式质询:代码片段是异步加载的,不会阻止渲染,并在关键操作之前将判决传递给网关。我无需额外步骤即可跳过人工会话,并根据行为、声誉和传输特征的组合停止自动会话。
我免费为每个人删除验证码,并仅在出现风险信号后才应用逐步验证:结账速度太快,一次会话中卡、地址或购物篮过多。我添加确认电子邮件、每个订单的幂等密钥和服务器配额,然后测量对照组的转化情况;我支持我自己的风险引擎及其例外情况。
使用 Karma,我根本不要求访问者证明他是一个人:该解决方案基于会话的背景信号并由网关应用。我保留通常的语义形式、键盘导航和错误消息,并在需要时将受信任的帮助程序脚本固定到允许列表。
我免费删除了无法访问的验证码,添加了隐藏的蜜罐字段、服务器端时间检查、电子邮件确认和操作限制。如果仍需要额外的验证,我建议采用几种等效方法 - 电子邮件、TOTP 或联系支持 - 并使用键盘和讲述人对其进行测试,而不将视觉作为访问条件。
对于 Karma,我不认为解决的图片是证据:判决是基于完整会话的行为、传输指纹和我的声誉基础。即使使用看似正确的浏览器,我也会阻止机器流量,并使用我自己的列表来确定已确认的合作伙伴和攻击源。
免费时,我将验证码视为唯一一个信号,然后我会检查速度、字段的可重复性、帐户数量、卡数以及每台设备的操作。我将令牌与特定会话和一次性操作相关联,限制生命周期,禁止重复使用并设置服务器配额;我发送可疑结果以进行延迟审核。
通过 Karma,我可以收集存在 Web 视图或 Web 客户端的浏览器信号,将它们与服务器会话相关联,并在调用有价值的 API 之前在网关上应用判决。对于真正的合作伙伴客户,我设置单独的可信路由或允许列表,并评估和限制匿名流量,而不管用户代理如何。
免费地,我将人类和机器 API 分开,向合作伙伴发布具有受众和范围的短期 OAuth 令牌,签署请求并引入密钥和操作的配额。对于匿名方法,我使用随机数、幂等密钥、帐户/IP/子网限制和服务器端一致性检查;我认为移动认证是一个额外的信号,而不是唯一的信号。
使用Karma,我使用自己的帐户信誉轮廓,明确选择参与一般黑名单,并且不向用户展示第三方谜题。我记录了通过 TLS 收集的行为和传输信号,将字段捕获限制在最低限度,并在不阻塞外部小部件的情况下应用判决。
我免费实施蜜罐、临时令牌、速率限制和风险日志,无需向外部验证码提供商发送数据。我将日志中的 IP 和用户代理截断至所需长度,排除表格内容,描述策略中的处理并进行法律依据评估;免费航线的价格是它自己制定和定期修改规则。
借助 Karma,我可以用行为和流量判断来标记每个广告会话,在发送关键转化之前分离出自动流量,并存储来源、营销活动和点击 ID 作为证据。我只将已确认的人类事件传递给广告系统,并将重复的来源添加到我自己的拒绝列表中。
我免费匹配 access.log、点击 ID、成本和服务器转化,在没有正常会话的情况下消除重复点击,并将经过验证的离线转化上传回广告平台。我封锁已知的数据中心,对表格设置限制,并定期向网站发送有关异常点击的报告;分布式代理需要手动分析。
使用 Karma,我在昂贵的处理之前做出决定:网关接收会话的判决,并且不允许已确认的自动化访问应用程序和数据库。我在本地缓存解决方案,保持故障开放以确保可用性,并通过优先级允许列表允许有用的索引器。
我免费在公共页面上安装 CDN 缓存,限制 nginx 的频率和并发请求,以最小请求长度和缓存关闭繁重的搜索,以及带有配额和签名游标的 API。我根据 URI、响应时间和传输的字节数从 access.log 构建报告,然后手动阻止最昂贵的模式和来源。
使用 Karma,我在保留剩余部分之前评估会话,并且只允许具有人工判断的线程运行;网关甚至在仓库事务之前就停止机器会话。我添加自己的结帐和合作伙伴列表并分析相关结论,而不强迫每个客户都解决验证码。
我免费发行一个签名的一次性队列令牌,将储备金限制为一个账户和支付工具,为篮子设置一个短的 TTL,并在数据库中自动注销余额。我为相关订单添加电子邮件/电话确认、数量限制和事后检查;我手动处理分布式自动化和错误锁的返回。
通过 Karma,我上传会话和判决的历史记录,记录应用的允许/拒绝规则,并显示在所需点停止自动化的份额。我记录了代码片段的位置、TLS 信号、故障开放模式和策略所有者,并为了测试它,我重播了测试机会话并保存结果。
我免费批准书面速率限制、MFA 和滥用响应策略、集中访问/身份验证/支付日志并将配置更改存储在 Git 中。我每个月都会进行一次受控测试,统计尝试、阻止和误报,并与负责人签署报告;创造证据的是常规程序,而不是文书名称。
通过 Karma,我将每个域与合适的代码段连接起来,但可以从一个帐户面板管理声誉、列表和判决。我使用单个公共信号层,设置显式的特定于站点的异常,并通过我自己的数据库分发经过验证的源,而无需在堆栈之间手动复制配置。
我免费将 nginx/WAF 规则放入一个 Git 存储库中,描述基本模板和域覆盖,检查 CI 中的配置并使用 Ansible 进行部署。我维护一个中央 CIDR 列表,其中包含原因、所有者和到期日期,将日志收集到一个系统中,并按计划删除过期的例外情况;我支持检测器并亲自交付更改。
在把任何东西放到自己的流量前面之前,这三个问题值得先有答案。
机器人防护并不是一个独立话题,而是自动化客户端、为拦截它们而设计的挑战、暴露它们的信号,以及一组公开标准的交汇点。以下是定义它们各自的来源。
链接指向来源本身:实体有标识符时指向 Wikidata,没有时指向一手资料。