资讯动态

AI Agent替人上网,网站如何精准识别与分级放行?

发布时间:2026/10/14 4:47:04 来源:尧图企业网站定制
当 AI Agent 开始替人上网网站还该把它挡在门外吗最近处理了一个挺有意思的模拟项目X需求是在某内部系统里接入一款能帮用户自动完成表单填写的AI Agent。开发进度倒是不慢麻烦全出在系统现有的访问控制上验证码弹得比人点得还快行为检测插件时不时把正常请求标成异常安全团队还专门开会问了我一句——这东西到底是用户还是爬虫这个问题我看着像技术判断其实骨子里是产品方向的取舍。以前我们做访问控制边界很清楚浏览器里跑的是人脚本跑的是爬虫。但AI Agent不一样它既有脚本的自动化特征又确实是在替一个真实用户办事。这篇文章不打算纠结伦理我把这个项目里遇到的问题、试过的方案、踩过的坑梳理一遍聊点实在的东西。1. 当用户不再是一个浏览器标签页1.1 从填表助手到全流程代办的形态变化你要理解AI Agent替人上网和传统爬虫的差别得先看它是怎么工作的。早期爬虫是写死规则开发人员手动指定请求这个URL、解析这个字段、提交那个参数每一步都是人脑规划好的。AI Agent则完全不同它拿到的是一个目标描述比如帮我在系统里注册一个新的测试账号并完善资料然后自己拆解目标、决定访问哪些页面、识别表单结构、逐项填写遇到选择框还会依据上下文推理选哪个。这种能力来自大语言模型的通用推理栈和工具调用机制。Agent内部通常有一个规划模块、一个工具调用模块、一个记忆模块。访问网页时会先拉取页面的可访问性快照然后决定要不要点某个按钮、填某个输入框、等多久再提交。换句话说它的行为模式看起来更像一个人在操作浏览器而不是传统意义上按固定节奏请求接口的脚本。我见过更极端的情况是托管浏览器方案Agent在云端启动一个完整Chromium实例由模型控制鼠标键盘事件页面里的JavaScript、异步渲染、滚动加载全部正常触发。站在网站服务器的角度看流量来自同一个浏览器指纹、同一个IP段、一样的User-Agent它和一个真实用户之间的区别几乎只能从鼠标轨迹的细微特征里去挖。这在架构上带来的变化是网站入口不再只服务人浏览器这一种形态。以前访问方就两类人是人工请求程序是自动化脚本规则简单。现在中间多出一个被模型驱动、目标导向、行为高度拟人的流量来源老一套是人还是机器的判定逻辑天然就失灵。1.2 为什么传统的机器人管理方案出现盲区传统网站防护对自动化流量的识别思路可以分成几层表层特征User-Agent、Headers、IP信誉、行为特征访问频率、鼠标轨迹、点击间隔、环境特征浏览器指纹、Canvas指纹、WebGL信息。问题在于这些指标对抗的是不怎么想伪装的爬虫。AI Agent托管浏览器模式下这些层面全部可以被伪装成正常人类。真实用户的User-Agent范围极广Agent可以随便挑一个常见版本行为轨迹上模型已经学会模拟人类阅读速度、两次操作之间的思考延迟、滚动节奏指纹层面Chromium实例和本地浏览器几乎同源区分度肉眼不可见。更有意思的是很多验证码场景在Agent面前并不像传说中那么难。图像类验证码配合视觉模型基本是降维打击滑块验证码通过对轨迹的刻意平滑也能混过去。我在项目里做过测试纯人机验证环节Agent的通过率超过八成人眼都未必能到这个成绩。这意味着网站自认为固若金汤的验证层在通用大模型面前已经形同虚设。盲区带来的直接后果是误判成本。防得太松爬虫跟着Agent一起长驱直入防得太紧真实用户用Agent的合理需求也被误杀。这是所有做访问控制的人眼下最头疼的地方因为旧工具里没有既接受自动化、又拒绝滥用的现成旋钮。1.3 正反两个方向的典型场景正方场景很好理解。我在项目里接的Agent需求就是替用户批量填报表单类似场景还有比价助手、聚合阅读、日程管理、定时打卡汇报。这些任务用户自己也要花十分钟二十分钟委托给Agent纯粹是为了省时间。网站上挂着的验证码、频控、JS挑战对它来说不是安全屏障而是纯添堵的阻碍。反方场景则没那么友好。同一套技术换个目标就能变成批量薅羊毛、抢购囤货、刷票占座、撞库攻击的数据采集器。最典型的恶意行为是用Agent模拟多个账号批量注册在活动页面上集中领券或者在未授权的情况下抓取他人数据。这些行为的本质是绕过业务规则而不是简单的爬取。这两类流量在技术上没有本质区别同一个Agent代码改个目标和参数就能双向切换。这正是网站方左右为难的核心你没办法通过简单的技术特征把善意代办和恶意自动化分开因为底层是同一条链路。2. 网站防御方真正在防什么2.1 安全底线数据、配额和账户安全站在防御方视角反机器人措施不是拍脑袋做的底下压着三条真实的业务安全底线。第一条是防数据泄漏。很多网站的核心资产就是数据商品价格、库存量、运输时效、用户评价、公开的工商信息每一类都有商业价值。以前爬虫批量抓取还会因为高频率被封AI Agent能做低频率智能采集语义理解哪些字段有价值、哪些页面不用重复抓日积月累数据丢失依然可观。某公司就吃过这个亏让Agent代替手动搜索去扫供应商底价结果自家报价体系被竞对摸了个透。第二条是配额保护。优惠券、秒杀库存、预约名额、免费次数这些资源背后都是真金白银的运营成本。自动化程序可以毫秒级出手把人工用户完全挤掉。用一个运维同事的话说人还在看页面信息的时候Agent已经把单下完了。这种场景下不防自动化等于允许极少数人用技术作弊抢走大多数人的参与机会。第三条是账户安全。自动化流量经常用于撞库、批量注册、恶意枚举。通过低频分散的Agent请求传统基于频率和容量特征的异常检测很难发现。它是贴着合法用户进来的等到触发业务逻辑层校验时可能已经试过几千个账号密码了。反自动化从来不是单纯的技术洁癖而是这层业务安全底线在工程上的被迫表达。理解了这个前提再回头讨论该不该把AI Agent挡在门外才有意义——不是要不要防的问题而是怎么在保底线的同时不误伤真需求。2.2 检测技术的进化路线与边界网站侧的反自动化技术这几年迭代挺快但每一代技术都有自己的边界。早年最基础的是静态特征检测检查User-Agent、Referer、HTTP头顺序、TLS指纹。这个方案对付最早期的无脑爬虫绰绰有余但如今随便一个开源浏览器自动化框架都能伪造得像模像样。后来流行行为分析采集鼠标轨迹、键盘时序、点击热区、页面停留分布。AI Agent刚出现时确实在这一层露馅因为轨迹太完美、零抖动、无慌乱修正。不过视觉语言模型迭代两轮之后Agent已经能在轨迹里注入噪声和回退动作这层检测也开始失效。再往后是计算验证包括JavaScript挑战、梯度验证码、设备指纹。防御者通过执行一小段JS获取浏览器环境的细节或者要求用户完成一个对人类容易、对程序困难的任务。问题是Agent现在可以直接驱动完整浏览器来执行这些JS视觉模型又能解大部分验证码计算验证的区分度同样在下滑。边界在哪里我发现单纯依赖区分人与机器这一思路本身走不远。因为技术对抗是螺旋上升的你每出一个新招Agent就能在两周到一个月内用新模型适配绕过。真正的出路是换一个问题——不再问对面是人还是机器而是问这个请求有没有授权、值不值得信任。这个视角变化是后面所有方案的基础。2.3 误伤成本被拦截的合法用户说起误伤我见过最典型的是一个无障碍场景。某高校内部系统为了挡住Agent注册上了强制滑块验证。结果一位视障同学用屏幕阅读器访问时滑块无法用键盘操作直接被卡在验证界面。工作人员后来排查日志才发现这个用户过去半年一直在正常使用系统被滑块误伤后才发起投诉。这类案例恰恰揭示了把所有自动化流量一刀切的问题所在。AI Agent某种程度上也在扮演数字无障碍助手的角色它能帮老年人完成复杂的在线办事流程帮信息障碍用户朗读并操作页面。如果网站的访问策略只认真人操作这一个标准那么所有工具型流量、辅助型流量、委托型流量都会被无差别拦截。短期看安全指标确实好看了长期看产品价值和生活便利性都在流失。安全部门和业务部门为此吵架的案例我见过不止一次两边各有道理缺的是一个共同认可的分流标准。3. 别急着唱对台戏先聊聊握手言和的技术路径3.1 显式声明机制让Agent自己亮明身份技术圈在对抗之外其实还有另一条路线就是引导Agent主动表露身份网站再决定给什么待遇。这个思路的实现方式是在访问协议层增加一个身份声明字段。Agent每次发出HTTP请求时在一段自定义Header或Cookie里附带其身份标识、所属服务方、用途类别、开发者联系方式。声明机制本身不难做难的是让大家愿意做、做得真。我在项目里测试过一套简单声明协议Agent在启动时请求一个令牌后续所有请求都带上这个令牌。服务端先验证令牌有效性和用途声明再按预设策略分配访问权限。声明为合法代办的Agent会走低风险通道不需要过验证码声明为测试专用的走沙箱环境不声明的一律默认高风险正常走完整验证流程。当然单靠自觉显然不行因此这套机制需要和签名绑定。Agent服务方用私钥对其声明做签名网站持有公钥进行验证这种方法能将伪造门槛提高一个量级。就算有人逆向伪造后续封禁也有明确目标不再是打一堆无差别IP。这套路线的核心收益是给网站一个看得见的信任依据。以前请求来路不明只能靠猜现在至少有一个可追责的声明链条安全团队再做策略分级就从容很多。3.2 协议层互认从开放协议到生态标准声明机制解决了单个网站和单个Agent之间的信任问题但放到整个互联网生态里还远远不够。头部的Agent服务商、浏览器内核团队、云服务商和网站平台谁家的Agent该配什么权限需要一个跨平台互认的标准。现在行业里已经有一些尝试比如Agent间通信协议、工具调用协议、机器可读的访问规则声明。大致方向是网站在robots.txt或专用的声明文件里写清楚什么样的Agent可以访问哪些路径、需要什么权限、有哪些限制Agent服务端在发起访问前自动读取并遵守这个规则。这件事听起来很优雅实操中麻烦不少。最大难点是生态协调网站方担心一旦开放规则文件等于给恶意者递高精度地图Agent方担心规则不透明、被针对性歧视。我在模拟项目X里也尝试过写一套自己的规则声明后续发现不同Agent框架的解析标准并不统一有的读、有的不读最后效果打了不少折扣。不过方向是对的。协议层互认虽然短期难有统一标准但只要几巨头的Agent产品开始带头遵守声明文件中小网站直接套用就好生态的雪球就能滚起来。对网站从业者来说尽早支持这类协议总比临到头被逼着适配要从容。3.3 商业化通道把Agent流量转成收入更现实的破局思路是绕过放不放行的争论直接给Agent流量开一条收费通道。网站提供API或专属接入端口Agent按调用量计费购买数据或操作权限各取所需。这本质上是把怎么对付你变成怎么给你定价。这个方案在数据密集型网站已经比较常见某比价平台提供结构化数据API某商旅平台对代理预订返佣某内容社区开放搜索接口给开发者做垂直应用。API方式下网站完全不必再纠结机器检测的攻防对抗而是主动提供稳定、合规、有版本管理的访问途径。Agent也没有必要费劲逆向页面结构拿到的数据质量反而更高。有些平台更进一步推出Agent友好Subscription套餐按对话次数或任务数计费。用户用了AgentAgent消耗套餐配额网站收到了真金白银。这在中国互联网的生态里落地阻力其实不小因为不少网站靠广告变现Agent访问会绕过广告展示。但这恰恰说明商业模式要跟着变——当AI替用户消费内容时网站的收入模型必然要从展示广告给人看转向提供数据与能力给机器调用。3.4 分级策略不同Agent、不同权限无论走协议认还是API通道最终落到网站工程上都要支持分级授权。不能打开大门全部欢迎也不能一视同仁全部拒绝分级的目的就是按信任程度和用途分配差距极大的访问权限。分级思路可以参考已有的信任分层模型。可信Agent已完成身份签名、来源可查的服务方可以拿到接近人类用户的访问权限不需要验证码正常速率能完成复杂操作。半可信Agent未知来源但声明了合规用途可以访问公开页面不能操作敏感接口需要经过更严格的风控。不可信流量则保持传统机器人管理策略该验证验证该拦截拦截。这就带来一个技术问题分级策略在业务系统里怎么落地总不能在网关处写死。我在模拟项目X里用的是一套动态规则表按URL前缀、接口动作、Agent声明同时匹配每条规则有独立阈值。比如注册接口可信Agent允许每秒2次半可信Agent每分钟限制5次不可信必须过验证码。规则存配置中心可以热更新这样安全团队调整策略不用改代码发版。分级方案的好处还在于可以逐步灰度。刚开始只给明确白名单的Agent放行跑一个月看异常指标再慢慢放开半可信层级。这种保守推进的方式既能验证安全性又不至于一把梭哈把防护全拆了。4. 实操细节模拟项目X里我们怎么识别AI Agent流量4.1 能从访问痕迹里找到Agent的几个线索永远不要指望单一特征能识别AI Agent真实经验是必须组合多家数据才有参考价值。下面这些痕迹是我们在模拟项目X里验证过、最有区分度的一组。第一个线索是思考延迟。人类在表单页面的操作间隔是无规律的有人填完姓名会停顿3秒有人在电话号码前面会驻留更久因为要回忆号码。Agent常见模式是各字段之间的间隔偏向均匀分布或者出现固定范围的高斯噪声。这个特征用统计学方法能抓出来延迟方差明显低于人类分布。第二个线索是路径规整度。人类在网站上会迷路、会返回、会开新标签页浏览轨迹乱中有序。Agent是目标驱动的从入口到目标的路径极少有回头路也很少打开与目标无关的页面。统计会话内URL转移矩阵Agent路径的熵值显著偏低。第三个线索是错误模式。人填表单会打错字再删掉重输会不小心点到相邻按钮会重复提交。Agent的输入基本一次正确点击命中率高得反常。我们一度开玩笑说真人反而更像bug用户因为他们的行为充满错误而Agent的行为过于正确。这三个线索单独看都不致命但组合起来做一个轻量级机器学习打分能在一大批流量里把可能的Agent会话挑出来。挑出来之后再结合声明机制和IP信誉做综合判定准确率就相当可观了。4.2 在服务端做一套分级访问策略下面是一段简化配置展示我们在模拟项目X里实际落地的一套分级策略基于网关的规则引擎实现。不同Agent分类对应不同动作字段说明写在后缀注释里。# 分级访问策略示例简化自模拟项目X policy_sets { trusted_agent: { description: 可信Agent已通过签名验证的服务方, match_rules: [ header.agent_id exists, header.agent_signature valid, ip.reputation 80 ], actions: { captcha: skip, rate_limit: 100 per minute, access_scope: [public_pages, form_submit, profile_update] } }, semi_trusted_agent: { description: 半可信Agent声明了用途但来源未知, match_rules: [ header.agent_purpose in [assist, accessibility], behavior.score between 40 and 79 ], actions: { captcha: challenge_easy, rate_limit: 10 per minute, access_scope: [public_pages] } }, untrusted_agent: { description: 不可信流量或未声明Agent, match_rules: [not matched_above], actions: { captcha: always, rate_limit: 2 per minute, access_scope: [login_page, public_pages_slow] } } }这个配置想表达的核心思想不是怎么识别Agent而是识别出来之后怎么办。可信和半可信之间差的不是一道验证码而是访问范围和操作能力的巨大差异。准入门槛松一点没关系但敏感动作必须收紧这是我们设计时的底线。日志系统里我们还会记录每一次分级命中的原因字段方便后续复盘和审计。安全团队拉报表时可以看到当天有多少请求被放行、多少被拦截、放行的Agent来自哪些服务方做到可观测、可追溯。4.3 改造页面结构降低对代理的认知负担等分级策略跑通下一个让我印象深刻的问题是技术之外的。AI Agent在理解页面时存在偏差——尤其是复杂表单页。当时自测发现Agent在手机号输入框上频频出错。原因是我们页面里手机号的label和placeholder写了请输入11位手机号码附近再一个手机验证码输入框语义相近模型容易选错。这个在人类看来完全没毛病但Agent解析时会有歧义。解决办法是强化表单的可解析性每个输入框用清晰的for属性关联label增加autocomplete字段描述用途给必填项加上aria-required标记甚至可以在表单底部加一段隐藏的机器可读JSON描述字段直接告诉Agent每个控件的用途和取值格式。这些改动对人类的视觉效果毫无影响却让Agent的理解成本大幅下降表单填写的成功率从78%提升到了接近100%。还有一类场景是时序和异步交互。页面提示某个按钮提交后3秒内跳转真实用户能等也会等但Agent经常在首个按钮点击后就认为任务完成不去等待结果页状态。我们的经验是这类异步提示最好在无障碍文本里额外标注提交成功后将继续处理请轮询到页面标题变为xxx为止。给模型一个明确的完成条件比让它猜要可靠得多。4.4 监控指标与阈值调优引入Agent访问之后原有监控体系下的数据口径也变了。以前PV、UV、转化率默认都是人现在混入了机器流量统计失真。必须在指标层做拆分把Agent流量单独切出去看。我们在监控看板里新增了三条核心指标Agent会话占比、Agent访问成功率和Agent分级的误判率。Agent会话占比衡量的是整个平台上自动化流量的比例正常趋势应该在某个区间内突然暴涨说明可能有新的Agent产品上线也可能是爬虫换了个马甲。Agent访问成功率反映我们页面可解析性是否稳定降级通常意味着页面改版破坏了兼容性。误判率则用人工抽样的方式去核对被当成Agent的会话里有多少其实是真人。阈值调优是门细活。头几天我们拍脑袋把误判率阈值定在5%结果安全团队认为线上有5%的真人被降级不可接受业务团队又觉得这个比例对Agent识别来说已经很优秀两拨人差点吵起来。最后大家各退一步采用动态容忍度根据历史基线自动调整比如比照过去30天均值超过两个标准差才触发告警误判率下降了但核心告警反而一个没漏。这个经验后来做成了默认参数。5. 常见问题与避坑指南5.1 高频问题速查表下面这几类问题大量出现在实际接诊线上系统的会话中。我整理成速查表方便后来人直接对着查。问题现象最可能原因快速处理方式Agent频繁触发验证码未声明身份走了默认不可信策略让Agent通过认证并携带签名声明降级到半可信通道Agent能打开首页但提交表单失败表单结构语义不清晰Agent找不到字段补充label的for关联与autocomplete属性人工用户被判定为Agent而降级行为评分模型过敏感把高正确率真人误伤调低行为评分权重引入更多人工样本标注Agent流量在某个时间点突然暴增新版本Agent产品上线或促销活动拉动了自动化检查Agent声明和UA分布按声明来源分组观察网关放行了Agent后数据库压力飙升放行阈值过宽导致Agent高频拉取大接口为可信Agent单独设置接口级配额优先级低于人类流量验证码在Agent面前形同虚设视觉模型能力太强传统图形类验证码失效切换为不可自动化环节比如短信或邮箱一次性口令5.2 踩过的坑策略放太松引发的连锁反应有一件小事值得单独讲。模拟项目X的测试阶段我们为了检验分级策略的稳定性把可信Agent的速率阈值从每分钟100次调到了每分钟500次想着Agent声明了身份放开点应该没事。结果当天下午某个Agent因业务逻辑bug进入了死循环不断请求同一个列表接口把后端一个原本P95只有80毫秒的接口直接打到了2秒以上数据库连接池差点被打穿。这次事故给我们的教训很朴素再可信的Agent也需要有配额上限因为程序不会累、不会觉得无聊也不会自己停。速率限制不是防人的是防程序的故障模式。从那以后我们定了一条铁律机器身份只影响质保通道要不要验证码、要不要额外挑战配额控制永远单独设限不论身份是否可信。后来又遇到一次某Agent声明的用途是无障碍辅助走半可信通道结果它批量拉取用户列表接口显然不是辅助该干的事。这让我们意识到用途声明不能只写个字符串就完事需要和接口权限强绑定。于是我们在规则引擎里加了结构化的scope枚举Agent只能请求它声明范围内允许的接口越权直接拒绝。5.3 给安全、产品与开发的三条建议做这块工作技术只占一半另一半是组织内的沟通与共识。我给三个角色分别沉淀一条建议。对安全团队不要追求百分之百拦截早点接受AI Agent是常态流量的一部分。把精力放在可审计、可追责、可快速熔断的机制上一旦出事能定位到具体Agent服务方就已经赢了大半。过度拦截的代价是产品体验流失这笔账迟早要还。对产品团队请尽早定义你们官方支持的Agent使用场景。是想让用户用Agent代填表单还是不希望Agent碰你们的业务逻辑把答案写清楚传达给开发和安全否则他们只能猜。同步要考虑给Agent设计专用入口或API而不是等Agent逆向你的页面之后被动封堵。对开发团队强烈建议把Agent友好性纳入前端开发规范。表单语义、按钮状态说明、异步回执标识这些基础项每写一次顺手就做了等Agent流量大到影响业务时再补就是历史债务。另外在日志里做自定义字段记录Agent声明信息成本很低收益很高——日后任何风控策略的调整都依赖这些数据底子。6. 在项目里沉淀下来的一些体会再回到开头那个问题网站到底该不该把AI Agent挡在门外。我的回答是分裂的该挡但这种挡要精准。该挡的是无授权、无声明、绕过业务规则的自动化行为而不是所有机器发起的请求。AI Agent替人上网这件事本身有巨大的正面价值对老年人、视障用户、忙碌的上班族都是实在的效率提升但凡是自动化就有被滥用的可能网站不会因为看到了伦理层面的善意就放弃防护。个人实操中最有效的做法永远是组合拳声明机制解决身份来源问题分级策略解决权限差异问题接口API解决合理的高频需求问题行为学统计解决未声明流量的兜底识别问题。这四个层级套在一起既不会让合法Agent寸步难行也不会让恶意流量如入无人之境。我们在模拟项目X里也验证了这条路是完全走得通的——线上稳定运行两个月Agent合法访问的成功率维持在95%以上而恶意自动化请求的拦截率没有下降。这个领域节奏非常快现在的方案放到明年很可能又落后半代。但底层的思路框架是稳定的别把人机对抗当成军备竞赛把它当成一次访问生态的制度重构。谁能早一点把Agent当作用户来治理而不是当敌人来消灭谁就能在下一轮交互变革里抢占先机。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑