百趣云 百趣云的博客

行为风控的本质:请求序列里的『人味』工程

参数全对为什么还是被封

很多逆向工程师卡在同一个困惑:签名算法完美还原、设备指纹成套伪装、IP 也是住宅代理——请求还是触发风控。问题出在行为序列:风控不只校验单个请求合不合法,更分析请求序列像不像人。

这是行为风控的核心:单点校验防的是"假请求",序列分析防的是"机器人"

风控在看什么:行为序列的特征维度

时间维度

请求间隔分布:真人是长尾分布(快 1s 慢几分钟),机器是正态/均匀分布
操作时段:真人有作息(深夜低频),机器 24 小时均匀
会话节奏:真人"浏览-停顿-操作",机器"请求-请求-请求"

路径维度

页面跳转路径:真人 首页→列表→详情→(返回)→详情,机器 详情→详情→详情
接口调用顺序:真人的接口调用由页面行为驱动(有依赖关系),机器直奔目标接口
无效请求比例:真人会产生大量"非目标"请求(静态资源、埋点、预加载),机器只有目标 API

深度维度

浏览深度:真人会翻页、会滚动、会点开又关掉
停留时长:详情页真人停留 5-60 秒,机器 0 停留

对抗:给机器人注入"人味"

1. 请求编排模拟真实路径

协议模拟别直奔目标接口,把前置链路补齐:

def human_like_flow(session, target_id):
    # 1. 先进首页(种下上下文 cookie + 产生浏览记录)
    session.get('https://target.com/')
    time.sleep(random.uniform(1, 3))

    # 2. 访问列表页(真实用户的必经之路)
    session.get('https://target.com/api/list?page=1')
    time.sleep(random.uniform(2, 5))

    # 3. 才访问目标详情
    return session.get(f'https://target.com/api/detail/{target_id}')

2. 间隔用对数正态分布

真人操作间隔的统计特征接近对数正态分布(大量快操作 + 少量长停顿):

import numpy as np

def human_delay():
    # 对数正态:中位数 2 秒,长尾到几十秒
    return min(60, np.random.lognormal(mean=0.7, sigma=0.8))

time.sleep(human_delay())

3. 会话化而非匀速化

把任务切成"会话":每个会话连续操作 5-20 分钟(拟人节奏),然后休息 30 分钟-几小时。7×24 匀速运行的账号是风控的活靶子。

4. 混入噪声请求

目标请求之间穿插无害请求(首页、推荐流、静态资源),让请求序列的"目标密度"降下来。真人用户的目标接口占比可能只有 10%,你的机器人是 100%——这个比值本身就是特征。

精髓:三个认知升级

  1. 行为风控是统计游戏,不是密码游戏。你不需要"完美"的行为,只需要行为特征落在真人分布的区间内。研究目标站点的真人行为基线(自己正常用几天,记录自己的操作节奏),比凭空设计参数靠谱
  2. 账号信誉是行为风控的复利。老账号(有历史正常行为积累)的行为容忍度远高于新号。同样频率的操作,老号没事新号封——所以账号要"养":前期低频正常用,逐步提升操作强度
  3. 风控反馈是延迟的、累积的。今天的异常行为可能三天后才封号(风控模型 T+1 跑批)。测试新策略时用小号灰度,观察一周再放量——别拿主账号池试错

总结

  1. 行为风控分析请求序列:时间分布、路径依赖、浏览深度
  2. 注入人味四招:补齐前置链路、对数正态间隔、会话化运行、混入噪声请求
  3. 研究真人行为基线比设计参数靠谱
  4. 账号要养,策略要灰度,风控反馈有延迟

交流微信:run1255

By 百趣云 阅读量:6 On