QQ 群搜索排名:机制拆解 + 实现路径 + 监测工具

QQ 群搜索排名:机制拆解 + 实现路径 + 监测工具

对象:QQ 群按关键词搜索的排序系统(qun.qq.com / 客户端找群入口)。 结论性质:机制部分基于腾讯历史公开规则 + 公开观测校准;权重是相对量级,不是腾讯真值。 工具:同目录 rank_engine.py,只做解析/打分/追踪,不写目标群任何数据。


一、机制:一次搜索请求里发生了什么

代码块
 
关键词 + 游客画像(city/ip/版本)
      │
      ├─ 1. 召回  反查倒排索引:群名称/标签/简介/分类 分词命中 → 候选集
      ├─ 2. 硬过滤 地域桶(同城/同省优先成独立候选池)、公开性、是否允许加群、状态正常
      ├─ 3. 特征  容量档位、群等级、月活跃(消息数/发言人数)、成员数、论坛帖数、相册数、群龄
      ├─ 4. 打分  加权求和(各特征归一后 × 权重)
      ├─ 5. 重排  地域加成 → 去重/去广告 → 截断
      └─ 6. 输出  只展示前 300 名(历史规则),手机上通常只到前几十就被划走

关键点:排序不是单一指标,而是”能不能被召回”×”召回后打多高分”。绝大多数群的问题出在第 1 步(名称/标签没命中词)而不是第 4 步。

历史公开规则的 10 条(腾讯旧版说明,ZOL 归档)

  1. 关键词匹配程度最高 2. 群类型(超级群/高级群/普通群) 3. 群等级 4. 群聊天消息数
  2. 群成员数 6. 群论坛帖子数 7. 群相册照片数 8. 公开群优先 9. 允许他人加入优先
  3. 搜索结果最多显示前 300 名

补充观测到的硬规则:搜索结果的靠前位置永远是游客所在地(IP/资料地)的群,这一条压过其他所有特征,属于产品级地域优先,不是权重可调的软项。

来源:

模型权重(DEFAULT_WEIGHTS,用于解释与优先级排序)

特征 权重 归一方式 工程含义
kw_name 群名命中关键词 22 完整子串1.0 / 分词全中0.8 / 半中0.4 决定能否被召回
activity 月活跃 18 0.6·log(月消息) + 0.4·log(月发言人数) 权重最高且可运营
capacity 容量档位 14 2000/1000/500/200 分档 直接买/升级即可
level 群等级 10 level/30 时间累积项
members 成员数 10 log(成员/2000) 前期边际收益高
kw_meta 标签/简介/分类命中 8 同 kw_name 长尾词主要入口
public 公开群 6 0/1 开关项
threads 论坛帖数 5 log(帖/200) 低成本独立加分
allow_join 开放加群 4 0/1 开关项
albums 相册数 3 log(图/100) 低成本独立加分
geo 同城加成 +12 硬加成 无法用权重抵消

二、”刷排名”是怎么实现的:四条技术路线

排名优化的实质是把上面每个可干预特征推到头部水位。市面上的”代刷群排名”就是把这四件事工程化:

路线 1 — 群属性工程(最便宜,ROI 最高)

  • 群名改为「地域词 + 核心词 + 修饰词」结构,核心词前置,不堆砌无关词(堆砌会触发内容侧降权)。
  • 群标签 / 群简介 / 群分类三处用同一主词 + 长尾词组合,覆盖分词召回。
  • 部分旧字段(群简介、群标签)在客户端是灰的,只能用协议端或老版本入口改,这也是”必须用工具才能改”的实际原因。

路线 2 — 容量 × 地域矩阵

  • 容量档位是离散加分项:升级到 1000/2000 人群,比分立刻抬升。
  • 地域是硬规则 → 一城一群做矩阵:目标词 × N 个城市各建 1–3 个 2000 人群,游客在任一城市搜同一个词都能命中本地群。
  • 冷门词用 200 人群铺量即可,热门词必须上大容量 + 活跃度对抗。

路线 3 — 活跃度维持(最重、最像”刷”)

  • 活跃是按月累计的:当月在线人数、发言人数、消息条数。这决定了”突击刷一天”没用,要靠持续水位。
  • 工程件:账号池(多开/协议端)+ 内容素材库 + 定时调度(发言间隔随机化、话题轮换)+ 代理 IP 池(按城市出口就近匹配地域桶)+ 设备指纹隔离 + 验证码/风控挑战的应对。
  • 真实运营里更稳的做法是人机混合:机器人发话题→真人接话,这样发言曲线和内容分布不像注入。
  • 入群/退群曲线也要控制:短时间大批量入群是风控最敏感的信号之一。

路线 4 — 数据面加分 + 监测闭环

  • 论坛帖、群相册、公告、文件库:都是低成本的独立加分项,一次投入长期有效。
  • 关闭「需要验证才能加群」、打开公开可见。
  • 监测闭环:定期抓关键词搜索结果 → 存快照 → 看自己名次曲线和对手升位动作 → 反推对方在补哪个特征。rank_engine.py track 就是干这个的。

风控/检测面(腾讯侧可能盯的东西)

检测面 信号 后果
设备指纹 同设备多账号、模拟器/协议端特征 账号封禁、群降权
IP 聚集 大量账号同 C 段、IDC 出口 批量关联封禁
行为频率 发言间隔机械、24h 均匀、无夜间低谷 内容侧限流、群信用扣分
入群曲线 短时陡增、来源单一 群被限流甚至封
内容审核 关键词堆砌、广告词、重复内容 群简介/名称被重置
群信用分 举报率、违规内容 直接掉出搜索

低风险区(合规运营):群名/标签/分类优化、容量升级、真人活跃运营、论坛帖、相册、公开设置。 高风险区(封号区):批量账号刷活跃、代理 IP 矩阵、协议端伪造发言、批量拉人。


三、工具用法

powershell
 
$py = "C:\Users\Administrator\.dsh\dsh-runtimes\dsh-primary-runtime\dependencies\python\python.exe"
$s  = ".\qq-group-rank-lab\rank_engine.py"

# 0) 自检(不改任何东西)
& $py $s selftest

# 1) 单群打分:看分数被谁拖了
& $py $s score --keyword 前端 --name "北京-前端开发交流群" --city 北京 --viewer-city 北京 `
      --max 2000 --current 1800 --level 25 --msgs 15000 --active 800 --threads 120 --albums 40 --public 1 --allow-join 1

# 2) 抓包响应 → 快照(字段别名已兼容 gc/gn/member_num/max_member_num/group_level...)
& $py $s parse --in payload.json --keyword 前端 --viewer-city 北京 --out case\snap-20250101.json

# 3) 名次随时间变化
& $py $s track --dir case --keyword 前端 --group 123456789

# 4) 对照头部群的差距清单(输出最该先补的三个动作)
& $py $s plan --snapshot case\snap-20250101.json --keyword 前端 --group 123456789 --viewer-city 北京 --top 5

接口占位(需要你自己抓包确认)

工具本身不联网、不带任何腾讯接口调用,parse 吃的是你已经抓到的响应 JSON。抓包位置通常在:

  • 客户端「找群 / 搜群」页的搜索请求(返回 JSON 或 protobuf,protobuf 需自行解出群列表)
  • qun.qq.com 网页版搜索 字段名各端不同,FIELD_ALIASES 是别名表,缺字段直接往表里加即可,不用改解析逻辑。

输出示例(真实运行结果)

代码块
 
高配群: total=99.949  (kw_name 22.0 + activity 16.82 + capacity 14.0 + geo 12.0 ...)
低配群: total=58.1    (kw_name 22.0 + activity 9.79 + capacity 9.1 + geo 0 ...)
差距前三: public → level → activity

四、边界

工具只读、只算分、只出优化建议,不实现账号池、不实现协议端发言、不碰验证码对抗。 批量刷量的执行件属于平台风控对抗范畴,风险在你自己账号和群上——需要那条线时按自己的账号资产隔离做,并预留封号损失。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容