Firefox 155 支持查看 NDJSON:代理数据质量检查的新入口

Firefox 155 于 2026 年 9 月 1 日发布。开发者说明中有一项对数据团队很实用的变化:内置 JSON Viewer 现在可以打开使用常见 JSON Lines 媒体类型或 .jsonl 扩展名提供的 NDJSON 文档。
这与代理支持的数据采集有关,因为很多运营记录天然适合追加写入。每一行可以代表一次请求、一个代理出口、一次重试、一项解析结果或一个验收决定。浏览器直接查看这些记录不能替代自动验证,但能更快地从失败任务定位到需要检查的具体事件。
公开来源说明:Mozilla MDN,《Firefox 155 release notes for developers》,2026 年 9 月 1 日发布。
Firefox 155 改变了什么
Firefox 的 JSON Viewer 过去主要面向普通 JSON 文档。Firefox 155 将范围扩展到以 application/jsonlines、application/x-ndjson、text/jsonl 提供,或使用 .jsonl 文件名的 JSON Lines 文档。
NDJSON 每行保存一个有效 JSON 值。与一个巨大的 JSON 数组不同,追加式数据流可以边生成边处理。即使采集进程在第 8,500 行后停止,前面完整的行仍然可以单独解析和检查。
浏览器功能只是查看便利,并不能证明每行符合模式、没有遗漏,或敏感值已经清除。这些仍然是数据管道的责任。
为什么代理团队值得关注
一个笼统的成功计数无法说明坏结果来自代理、目标响应、重试策略还是解析器。精简的逐行事件可以保留区分这些层次所需的证据。
每次获授权请求可记录:
| 字段 | 用途 |
|---|---|
| 事件编号 | 关联请求、响应与验证证据 |
| UTC 时间戳 | 排列不同工作进程与地区的事件 |
| 目标标签 | 标识批准目标而不暴露敏感 URL |
| 代理网关标签 | 对路由配置分组而不保存凭据 |
| 会话编号哈希 | 关联粘性会话内的事件 |
| 出口指纹 | 区分轮换,同时减少个人数据保留 |
| HTTP 状态或错误类别 | 区分目标响应与传输失败 |
| 尝试次数 | 揭示重试放大 |
| 分阶段延迟 | 定位连接、TLS、首字节或读取等待 |
| 验证结果 | 说明是否产生可用数据 |
字段名应保持稳定,并显式写入空值。不要让一个字段承担多个含义,也不要依赖行号猜测缺失内容。
设计“一行一个事件”
最实用的单位是边界明确的事件。每行应能够独立解析,并足够小,便于检查、过滤和安全传输。
一个实用事件模型应分开:
- 请求意图:市场、协议、会话模式与获授权目标标签;
- 路由观察:网关、地址族与脱敏出口身份;
- 响应证据:状态、内容类型、字节数与时间;
- 处理结果:解析器版本、模式结果与接受记录数;
- 控制决定:重试、轮换、退避、隔离或停止。
不要保存原始代理 URL,其中可能包含用户名、密码、网关地址和定向参数。秘密应留在批准的秘密管理器中,事件只写非敏感配置标签。
浏览器查看之前先加入完整性控制
浏览器查看是排错最后一公里,不是第一道防线。数据流应先通过确定性控制生成和验证:
- 每行包含模式版本;
- 唯一事件编号和父操作编号;
- 每个工作流内单调递增的序号;
- 每项任务都有明确开始与完成事件;
- 导出诊断包具有校验和;
- 汇总尝试、成功、拒绝与重试数量;
- 验证器报告第一条非法行和全部缺失必填字段。
多个工作进程写入同一文件时,不要假设物理行序就是因果顺序,应使用时间戳、操作编号与序号。
用 Firefox 155 完成有限检查
代理任务失败时,使用已脱敏的诊断副本:
- 确认文件使用支持的 JSON Lines 媒体类型或
.jsonl扩展名; - 用 Firefox 155 或更高版本打开;
- 找到第一条验证失败或传输错误事件;
- 沿父操作编号与会话哈希查找关联行;
- 对比前一次尝试、路由决定与后续重试;
- 检查出口、地址族或网关是否变化;
- 确认最终接受记录数与下游存储一致;
- 记录事故原因,但不要把秘密复制到工单。
发现常见代理数据故障
重试膨胀
按操作编号聚合并计算尝试次数。一个任务可能报告完成 10,000 个操作,却消耗 25,000 次代理请求。最终结果与每次尝试都必须记录,才能看到带宽成本与目标负载。
会话漂移
在粘性会话内比较连续事件的路由和出口字段。正常轮换与意外会话切换需要不同的修复方法。
输出不完整
必须有完成事件,并将其中的数量与已接受事件数核对。语法正确的文件仍可能因工作进程崩溃而提前结束。
解析器回归
记录解析器和模式版本。如果 HTTP 成功率稳定,但验证失败在发布后突然上升,代理可能正常,问题可能在解析器。
地址族混用
显式记录 IPv4 和 IPv6,否则双栈差异可能表现为随机地域或延迟波动。
设置发布门槛
推广 NDJSON 日志变更前,应要求:
- 每行都能独立解析;
- 每种事件类型的必填字段完整;
- 秘密扫描未发现代理凭据、Cookie、令牌或个人载荷;
- 任务开始、完成与数量核对通过;
- 重试和路由变化保持可见;
- 截断与畸形测试文件按预期失败;
- 大样本可供人工查看,但人工查看不是唯一验证;
- 已记录保留、访问与删除规则。
使用通过、条件通过、失败、证据不足四种结论。文件能在 Firefox 打开,但数量核对失败,不能算通过。
运营检查清单
- 将测试配置升级到 Firefox 155 或更高版本。
- 用受支持的 JSON Lines 媒体类型提供诊断副本。
- 每行只放一个可独立解析的事件。
- 添加模式、操作、事件与序号标识。
- 记录每次重试,而不只是最终成功。
- 使用标签记录网关和会话,不写凭据。
- 分开路由、响应、解析与业务验证字段。
- 将任务汇总与下游接受记录核对。
- 分享前对每次导出执行秘密扫描。
- 为诊断文件设置访问控制与删除日期。
常见问题
Firefox 155 会验证 NDJSON 模式吗?
不会。它只是让受支持的 JSON Lines 文档更易查看。模式验证、必填字段检查和数量核对必须由数据管道完成。
是否一行代表一个页面?
不一定。一次请求可能产生多条记录,一个页面也可能依赖多次请求。应采用边界清楚的事件,并用操作编号关联。
NDJSON 能否为复现保存原始代理凭据?
不应保存。只写安全的配置标签,获授权复现时再从批准的秘密管理器读取凭据。
只保留最终成功行够吗?
不够。需要保存尝试级证据,才能测量重试、路由变化、成本与部分失败。
合规说明
只采集和检查获授权的数据,遵守目标条款、供应商合同、隐私要求与速率限制。诊断流不得保存认证秘密、个人载荷或未受控目标 URL。代理应服务于合法测试和数据运营,不得用于规避访问控制、隐藏滥用或制造虚假流量。