☰
xhshow CryptoConfig自定义配置指南:前缀、随机区间与校验常量的调优清单
2026/10/16 5:33:53 网站建设 项目流程
  • 后端
  • 网页爬虫

【免费下载链接】xhshow

小红书xs纯算 小红书x-s x-s-common xsc 等字段 纯算逆向

项目地址:https://gitcode.com/gh_mirrors/xh/xhshow
点击查看免费下载

xhshow 是一个小红书请求签名生成库,可生成x-s、x-s-common、x-rap-param等签名请求头。它的CryptoConfig配置类集中管理了全部加密常量,本指南用一份调优清单,带你快速完成 CryptoConfig 自定义配置——只需几行with_overrides调用,无需改动任何核心代码。

🎯 什么时候需要自定义配置?

大多数情况下默认值即可开箱即用,但以下场景值得动手调整:

  • 签名格式改造:将XYS_、mns0301_等签名前缀替换为自己的标识,便于日志排查或多版本签名共存
  • 随机区间模拟:调整随机序号、窗口长度等区间的取值范围,让签名更贴近特定环境的行为特征
  • 算法逆向调试:对照校验常量、环境检测表与自定义哈希初值,定位签名差异的具体来源
  • 会话行为定制:配合SessionManager调整会话状态计数器,模拟连续操作

核心入口:CryptoConfig定义在 src/xhshow/config/config.py,安装后可直接from xhshow import CryptoConfig引入(pip install xhshow,需 Python 3.10+)。

📋 可调常量一览

CryptoConfig是冻结 dataclass(frozen=True),所有默认值都写在类体里,按下表对照即可快速定位:

类别常量默认值作用
前缀X3_PREFIXmns0301_x3 签名片段前缀
前缀XYS_PREFIXXYS_x-s完整签名前缀
前缀XYW_PREFIXXYW_XYW 格式签名前缀
随机区间SEQUENCE_VALUE_MIN/MAX15 / 50序号字段随机取值范围
随机区间WINDOW_PROPS_LENGTH_MIN/MAX1000 / 1200窗口特征长度随机范围
随机区间ENV_FINGERPRINT_TIME_OFFSET_MIN/MAX10 / 50环境指纹时间偏移(秒)
会话SESSION_SEQUENCE_INIT_MIN/MAX15 / 17会话序号初始值区间
会话SESSION_WINDOW_PROPS_INIT_MIN/MAX1000 / 2000会话窗口特征初始区间
会话SESSION_SEQUENCE_STEP_MIN/MAX0 / 1每次请求的序号增量
会话SESSION_WINDOW_PROPS_STEP_MIN/MAX1 / 10每次请求的窗口特征增量
校验CHECKSUM_VERSION1校验和版本标识
校验CHECKSUM_XOR_KEY115校验和异或键
校验CHECKSUM_FIXED_TAIL14 字节序列校验和固定尾部

源码位置:前缀常量、随机区间、会话区间、校验与环境常量。

⚡ 三步完成自定义配置

with_overrides基于dataclasses.replace生成新的配置实例,原默认配置不受影响(config.py#L147-L164):

from xhshow import CryptoConfig, Xhshow config = CryptoConfig().with_overrides( X3_PREFIX="custom_", SEQUENCE_VALUE_MIN=20, SEQUENCE_VALUE_MAX=60, ) client = Xhshow(config=config)

之后client的所有签名调用(sign_xs_get、sign_headers_post等)都会走你自定义的常量。配置注入点在 client.py#L30-L33,内部会级联传递给加密处理器CryptoProcessor与XsCommonSigner。

🔧 前缀常量调优清单

三个前缀分别控制签名输出的"外观",改哪个就影响哪个字段:

  1. X3_PREFIX(mns0301_):拼接在 x3 签名片段头部,最终内嵌于x-s签名的x3字段。解密方法decode_x3会按该前缀剥离(client.py#L329-L333),所以生成端与解析端要使用同一份配置。
  2. XYS_PREFIX(XYS_):x-s完整签名的开头标识,decode_xs同样依赖它做前缀判断(client.py#L348-L349)。
  3. XYW_PREFIX(XYW_):XYW 格式签名前缀,用于部分数据接口的 406 规避路径。

⚠️ 注意:前缀属于"格式层"改动,改完签名仍然有效,只是外观变化;但下游若写死了XYS_开头的解析逻辑,需同步更新。

🎲 随机区间常量调优

签名 payload 中的随机字段由区间常量约束(crypto.py#L128-L136):

  • SEQUENCE_VALUE_MIN/MAX:控制 payload 中序号字段的随机落点。区间越窄,签名"指纹"越集中,便于统计验证;区间越宽,越接近真实浏览器的离散分布。
  • WINDOW_PROPS_LENGTH_MIN/MAX:模拟浏览器窗口属性长度(像素量级),默认 1000~1200。若模拟的客户端分辨率较小,可整体下移区间。
  • ENV_FINGERPRINT_TIME_OFFSET_MIN/MAX:环境指纹的时间偏移秒数,影响"页面加载时间"的随机回拨幅度。

调优建议:保持 MIN < MAX,且跨度控制在两位数到三位数量级,过窄会显得机械,过宽会引入不合理的异常值。

🔒 校验与环境常量:按需只读

以下常量深度参与签名计算,没有明确的逆向结论时不建议修改:

  • CHECKSUM_VERSION/CHECKSUM_XOR_KEY/CHECKSUM_FIXED_TAIL(config.py#L62-L67):校验和三元组,属于签名完整性校验环节的版本锚点,改动通常直接导致验签失败。
  • ENV_TABLE/ENV_CHECKS_DEFAULT:环境检测表,参与 payload 的 part11 异或构造(crypto.py#L154-L156),对应"正常浏览器"的环境指纹。
  • HASH_IV:自定义哈希custom_hash_v2的初始向量,决定 a3 字段生成(crypto.py#L38-L44)。
  • HEX_KEY:144 字节 XOR 密钥,签名与解密的对称基础(bit_ops.py)。

它们的共同特点是生成与校验两端强绑定:仅在调试、复现差异或做协议对比时才需要覆盖。

🔄 会话区间调优(SessionManager)

启用session参数后,签名从"每次独立随机"变为"会话内连续演进",演进幅度由SESSION_*区间控制(session.py#L25-L50):

目标调整项效果
更接近真实连续浏览适当调大SESSION_WINDOW_PROPS_STEP_MAX窗口特征增长更快
更保守的增量SESSION_SEQUENCE_STEP_MIN/MAX均设为 0序号几乎不增长
模拟更久的会话调大SESSION_WINDOW_PROPS_INIT_MAX起始窗口特征更高

多账户场景下,为每个账户创建独立的SessionManager并传入同一份自定义config即可复用。

✅ 调优避坑与最佳实践

  1. MIN 不能大于 MAX:random.randint(MIN, MAX)在 MIN > MAX 时直接抛ValueError,覆盖区间前请自查顺序。
  2. 利用不可变性:CryptoConfig是 frozen dataclass,直接赋值会抛dataclasses.FrozenInstanceError——请始终通过with_overrides派生新实例,避免污染全局默认值。
  3. 前缀改动要两端同步:decode_x3/decode_xs依赖配置中的前缀做剥离,加解密密钥必须一致。
  4. 一次只改一组:前缀、随机区间、校验常量分开验证,出问题时能快速二分定位。
  5. 核心密钥保持默认:HEX_KEY、HASH_IV、ENV_TABLE等参与算法本体,仅在明确掌握协议变更时覆盖。
  6. 版本升级后复查:平台协议升级可能调整默认常量,升级 xhshow 后建议重跑一遍签名校验用例(仓库测试位于 tests/)。

📁 关键源码速查

模块文件说明
配置常量src/xhshow/config/config.py全部 CryptoConfig 默认值与with_overrides
客户端入口src/xhshow/client.py配置注入与签名方法
加密处理器src/xhshow/core/crypto.pypayload 构造、随机字段写入
会话管理src/xhshow/session.pySESSION_*区间消费点
Base64 编码src/xhshow/utils/encoder.py三套字母表与加解码
快速上手README.md安装、签名与配置示例
  • 后端
  • 网页爬虫

【免费下载链接】xhshow

小红书xs纯算 小红书x-s x-s-common xsc 等字段 纯算逆向

项目地址:https://gitcode.com/gh_mirrors/xh/xhshow
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询