授权市场数据请求返回200,入库后两个商品ID却变成同一个值,先检查数据处理边界,而不是立刻换代理。JSON语法完全合法,也可能因为客户端把所有数字转成浮点数而丢失标识精度。
本文针对通过代理接收的JSON设计小规模受控验收,重点是去重与关联所用标识的精确保留,不讨论分页数量、NDJSON分帧或价格计算。样本均为合成数据,不代表已实测98IP兼容性或线上错误率。
一、先确认哪些字段是标识
向目标接口负责人确认哪些字段是不可拆解的ID、哪些是数量,并记录JSON类型、允许字符、最大长度,以及前导零和大小写是否有意义。只包含数字的ID不代表需要参与算术,也不能为了让本地解析器通过就改写接口契约。
自有接口允许调整时,明确约定字符串形式通常更容易跨运行时保留。若接口必须返回JSON整数,则需要在普通浮点转换前选用能够保留精确值的解析与存储链路。不支持的值应明确拒绝或隔离,并保留原始证据,不能默默取近似值。
MDN给出的JavaScript最大安全整数是9007199254740991,更大的整数并非都能由Number精确区分。这是整数精确处理的限制,不是JavaScript能表示的最大数值范围,也不能泛化到所有语言和解析器。
二、制作独立且精确的样本
- 在自有端点准备两条记录,数字ID分别为9007199254740992与9007199254740993,并配不同的无害标记字段。
- 测试清单以字符串保存预期ID原文,不要先转成JavaScript Number再生成样本。
- 另备字符串ID版本、普通小整数,以及仅在规则允许时包含前导零的字符串。
- 声明预期记录数及ID与标记的精确对应关系,两个大ID必须保持不同。
- 在批准的基线与代理路径使用同一版本样本,并设置少量请求预算和固定期限。
这两个大整数专门用于暴露常见的不安全转换,本文没有宣称已运行该样本。若生成器本身已经舍入,测试在进入代理之前就失效了。
三、先保存表示,再做JSON解析
核对状态和内容类型,在JSON反序列化前保存有大小上限、已遮蔽的响应表示。明确客户端是否自动解压,两条路径比较同一层数据,不要一边哈希压缩传输字节,一边哈希解压后的正文。
自有确定性样本可按批准清单比较表示字节或哈希。真实响应可能持续变化,不能要求两次独立请求完全相同,应以某次请求捕获的响应作为该次解析参考,并限制关于线路的推论。
98IP动态住宅IP产品页适合用于了解授权市场数据线路测试所需产品;通过API配置页核对当前接入方式与账户选项。代理接入不规定目标站JSON结构,也不决定客户端数值精度。
四、逐个转换边界找首次变化
使用五栏证据:原始响应中的写法、解析后的值与运行时类型、应用规范化ID、存储值与类型、导出并重新载入的值。每栏都与清单中的精确字符串及标记对应关系比较,找到不同ID首次变相等的地方。
JSON reviver若拿到的数字已被舍入,再转字符串或BigInt也无法找回缺失的位数。应使用合适的无损解析器,或经过当前运行时验证支持的原始数值词元能力,保留转换前的原文。不要假设所有版本都有相同能力。
不要用正则表达式批量给任意JSON数字加引号;它可能影响数量、字符串或其他字段,并掩盖结构错误。按明确契约进行字段感知解析,类型不符合预期就清楚失败,不要静默强制转换。
原始样本正确而解析后ID合并,优先查解析器与转换;解析精确但数据库或导出改变值,查后续边界;原始确定性样本就不同,再核对响应生成、中间环节及客户端正文转换,不能提前判定是代理篡改。
五、验收关联与往返,不只看显示
界面能看到两行,不代表去重安全。将每个ID关联到预期标记,按约定精确键去重,再重新读取存储结果。验收要求两个不同ID及原来的标记对应关系均保留,不只是总行数等于二。
契约规定文本键时,就维持文本,并防止下游电子表格或ETL导入器自动转数字。导入时明确列类型,重新打开后再核对真实值。显示格式增加位数,不能修复早先已丢失的精度。
确需规范化标识时必须单独定义。只有目标标识语义允许,才能去前导零或改大小写。不能把处理数量的数值规范化规则套在不可拆解的业务标识上。
六、用有限矩阵检查故障及恢复
- 精确字符串ID:解析、存储和重新读取后逐字符不变。
- 大整数对:选定无损链路保留两个ID,或明确拒绝不支持的精度。
- 受控不安全转换:独立清单发现ID碰撞,不把舍入结果当成功。
- 精确解析后注入数值存储或导入错误:能定位首次失败的下游边界。
- 字段意外换类型:按契约隔离或拒绝,不静默转换。
- 修复后重放:由保留的精确证据重建受影响派生键,检查关联后再替换输出。
这些是待执行案例。不要换IP重新处理已经损坏的解析对象。若未保留精确原文,应按授权与目标请求政策重新获取,并标记早先派生输出受影响,不能声称把舍入值转回字符串就已修复。
FAQ与完成清单
JSON有效代表ID完整吗?不代表,语法通过与字段精确保留是两项检查。
所有数字都改成字符串吗?不应如此,要区分标识和数量,并遵循文档契约。
- 预期清单精确且独立于被测解析器。
- 有损转换前已捕获原始表示。
- 不同ID经过关联、存储和重载仍不同。
- 不支持的精度和意外类型明确失败。
- 恢复基于精确证据,而非舍入输出。
- 仅用授权端点和合成记录,公开报告不含凭据、个人资料或真实响应正文。