M5 执行层 · L15

拟人化与风控:反检测的克制 · M5 毕业课

45 min · human_pace.py 全文精读 + persona_gate 的"永不阻断"哲学

🎒 预备知识:完成上一课「L14」(零基础入口:第 0 课)

本课唯一结论:反检测的正确姿态是克制——按语义分档的随机停顿 + 原生输入事件,而不是激进的指纹伪装。同时看一个反差设计:persona_gate 只提醒、永不阻断—— 安全分级里"什么不该硬拦"和"什么必须硬拦"同样重要。

一、基础:平台怎么识别机器人(知己知彼)

反检测之前要先懂检测。平台区分人与机器主要看两类信号:

① 指纹(你是谁):浏览器暴露一堆可编程读取的特征—— navigator.webdriver(自动化框架会置 true)、UA 串、字体列表、Canvas 渲染差异、 插件列表。无头浏览器指纹更"干净"(少了很多真人环境的杂讯),反而更扎眼。

② 行为(你怎么动):真人操作的特征是不均匀的——打字有快有慢、 读完页面才点按钮、填完表单会通读一遍再提交。机器的特征是均匀的: 毫秒级精确间隔、表单一出现立刻填、填完 0ms 提交。匀速 = 机器的签名。

理解了②就懂了拟人化的本质:不是"装得像人",是"消除机器的均匀性签名"。

二、human_pace.py 全文精读(真实常量表)

# human_pace.py:25-29(源码原文)
"task-switch":  (1800, 4500),   # 从一个任务切到另一个(打开页/进入编辑器)
"field-switch": (650, 1800),    # 字段之间切换(标题→简介)
"verification": (1200, 3000),   # 验证相关动作之间
"review":       (2000, 5000),   # 提交前的复核(再加内容长度加权)
"commit":       (1200, 3200),   # 复核完成到点下提交的反应时间

逐档读语义:task-switch 最长(1.8–4.5s)——人切换任务要"缓一下"; field-switch 最短(0.65–1.8s)——字段间移动焦点是流畅的; review 有加权:min(8000, 内容长度 × 12ms)——文案越长人读得越久, 机器匀速填完就提交是最大破绽;commit 单独一档——按下发布键前最后一犹豫。

神来之笔在采样函数(:33-39):lo + (hi - lo) * centered,其中 centered 是两个随机数的均值。为什么不用单个随机数?均匀分布的单样本 经常落在区间端点附近——停顿总是"很接近上限"或"很接近下限",分布形状本身就是特征。 均值把分布推向中央(中心极限定理的微缩版),更像真人迟疑的自然聚拢。 一行代码的统计学。

三、persona_gate 为什么永不阻断(分级哲学)

现在看一个反差设计。content_guard(安全)命中密钥 → exit 7 硬拦; persona_gate(人设一致性)评分 <80 → 只 warn 展示偏离。为什么不一视同仁都硬拦? AGENTS.md 写明:用户已明确要发布时继续执行,不额外索要确认。 分级逻辑:泄露密钥是不可逆伤害 → 拦;人设偏离是质量瑕疵 → 提醒。 把两类风险混为一谈的 agent,用户很快就学会无脑点"确认"——警报疲劳是硬闸门的敌人 (A15)。确认机制的价值 = 用户真的会看,而"真的会看"是稀缺资源,只能配给真正不可逆的事。

评分本身也写进了 AGENTS.md:人设检查必须优先比较账号定位、内容赛道、内容形式和目标受众, "不能只因语气/用词相似给跨赛道内容高分"——防的是模型走捷径(文风像≠人设合)。 发布后还要 record 留痕(评分/结论/偏离点)——人设决策也可审计。

四、风控的三道防线(M5 收官串讲)

① 事前:登录态用真浏览器 profile(家庭 IP)+ 拟人化输入;
② 事中:IP 风控 300012 显式报错不盲试(L13);
③ 事后:对账 unverified 诚实标注 + publish-log 留痕(L14)。

三道防线的共性:都不试图"赢得对抗",只求"输得起"——被封号是可能结局, 所以测试号、小流量、人工复核高风险操作是各发布 SKILL.md 的明文要求(douyin-upload、xhs-publisher 的风险提示节)。对抗性系统的第一原则: 不做无法承受其反噬的对抗。

五、常见踩坑

坑 1:停顿只加在"点击"上。真人慢的地方是读(review)不是点; 只在 click 前加延迟,节奏画像依然机器。坑 2:所有用户一个随机种子。 两个账号的停顿序列完全相同 = 关联特征,随机性要真随机。坑 3:把拟人化当安全边界。 它降低的是概率不是消灭风险——永远有被封号的账要算,风控预算要做进产品设计。

六、检索练习

七、出口检验

说清两个"为什么":为什么停顿样本取两个随机数的均值?为什么 persona_gate 刻意不做硬拦? 然后给"评论自动回复"设计安全分级(哪些硬拦/哪些提醒)。通过即 M5 毕业,进入 M6 内核层。

一手源:human_pace.py(很短)+ AGENTS.md「对外发布安全」节。