- 后端
- 网页爬虫
【免费下载链接】xhshow
小红书xs纯算 小红书x-s x-s-common xsc 等字段 纯算逆向
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_PREFIX | mns0301_ | x3 签名片段前缀 |
| 前缀 | XYS_PREFIX | XYS_ | x-s完整签名前缀 |
| 前缀 | XYW_PREFIX | XYW_ | XYW 格式签名前缀 |
| 随机区间 | SEQUENCE_VALUE_MIN/MAX | 15 / 50 | 序号字段随机取值范围 |
| 随机区间 | WINDOW_PROPS_LENGTH_MIN/MAX | 1000 / 1200 | 窗口特征长度随机范围 |
| 随机区间 | ENV_FINGERPRINT_TIME_OFFSET_MIN/MAX | 10 / 50 | 环境指纹时间偏移(秒) |
| 会话 | SESSION_SEQUENCE_INIT_MIN/MAX | 15 / 17 | 会话序号初始值区间 |
| 会话 | SESSION_WINDOW_PROPS_INIT_MIN/MAX | 1000 / 2000 | 会话窗口特征初始区间 |
| 会话 | SESSION_SEQUENCE_STEP_MIN/MAX | 0 / 1 | 每次请求的序号增量 |
| 会话 | SESSION_WINDOW_PROPS_STEP_MIN/MAX | 1 / 10 | 每次请求的窗口特征增量 |
| 校验 | CHECKSUM_VERSION | 1 | 校验和版本标识 |
| 校验 | CHECKSUM_XOR_KEY | 115 | 校验和异或键 |
| 校验 | CHECKSUM_FIXED_TAIL | 14 字节序列 | 校验和固定尾部 |
源码位置:前缀常量、随机区间、会话区间、校验与环境常量。
⚡ 三步完成自定义配置
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。
🔧 前缀常量调优清单
三个前缀分别控制签名输出的"外观",改哪个就影响哪个字段:
X3_PREFIX(mns0301_):拼接在 x3 签名片段头部,最终内嵌于x-s签名的x3字段。解密方法decode_x3会按该前缀剥离(client.py#L329-L333),所以生成端与解析端要使用同一份配置。XYS_PREFIX(XYS_):x-s完整签名的开头标识,decode_xs同样依赖它做前缀判断(client.py#L348-L349)。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即可复用。
✅ 调优避坑与最佳实践
- MIN 不能大于 MAX:
random.randint(MIN, MAX)在 MIN > MAX 时直接抛ValueError,覆盖区间前请自查顺序。 - 利用不可变性:
CryptoConfig是 frozen dataclass,直接赋值会抛dataclasses.FrozenInstanceError——请始终通过with_overrides派生新实例,避免污染全局默认值。 - 前缀改动要两端同步:
decode_x3/decode_xs依赖配置中的前缀做剥离,加解密密钥必须一致。 - 一次只改一组:前缀、随机区间、校验常量分开验证,出问题时能快速二分定位。
- 核心密钥保持默认:
HEX_KEY、HASH_IV、ENV_TABLE等参与算法本体,仅在明确掌握协议变更时覆盖。 - 版本升级后复查:平台协议升级可能调整默认常量,升级 xhshow 后建议重跑一遍签名校验用例(仓库测试位于 tests/)。
📁 关键源码速查
| 模块 | 文件 | 说明 |
|---|---|---|
| 配置常量 | src/xhshow/config/config.py | 全部 CryptoConfig 默认值与with_overrides |
| 客户端入口 | src/xhshow/client.py | 配置注入与签名方法 |
| 加密处理器 | src/xhshow/core/crypto.py | payload 构造、随机字段写入 |
| 会话管理 | src/xhshow/session.py | SESSION_*区间消费点 |
| Base64 编码 | src/xhshow/utils/encoder.py | 三套字母表与加解码 |
| 快速上手 | README.md | 安装、签名与配置示例 |
- 后端
- 网页爬虫
【免费下载链接】xhshow
小红书xs纯算 小红书x-s x-s-common xsc 等字段 纯算逆向
相关推荐
dynamic-datasource配置加密:自定义前缀终极指南
dynamic datasource配置加密:自定义前缀终极指南 在Spring Boot多数据源项目中,数据库敏感信息的保护至关重要。dynamic data
后端数据库免费网盘直链解析: LinkSwift 覆盖八大网盘的完整指南
免费网盘直链解析: LinkSwift 覆盖八大网盘的完整指南 LinkSwift(网盘直链下载助手)免费开源,装进浏览器就能用:它在本地向各网盘官方接口发起请
前端终极指南:3分钟将OneNote笔记转为Markdown的免费神器 🚀
终极指南:3分钟将OneNote笔记转为Markdown的免费神器 🚀 你是否曾经为这些困扰而烦恼?📝 想要从OneNote迁移到更现代化的笔记工具,却担心
后端数据库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考