@apicity/har

中文文档
0.27.0发布于 2026/11/06MITTypeScriptES Module零依赖近 30 天下载 2569

HAR 1.2 序列化,秘密洗涤和Polly记录身份.

中文使用文档
文档目录3 节
  1. 仓库整合
  2. 成本证据
  3. 交换分析助手

@apicity/ har (英语)

无依赖性节点.js HAR 1.2 序列化、秘密清洗和选入 请求/回复抓取. createHarCapture 提供可注射取回, 调用瞄准镜,可选全局安装,以及带有JSONL索引的已刷取文件. 见 抓取指南 关于设置和保留的细节.

import { exchangeToEntry, scrubHar, pollyEntryId } from "@apicity/har";

declare const request: Request; // the request you sent
declare const response: Response; // its response, body unread

const entry = await exchangeToEntry(request, response, {
  startedAt: new Date(),
  durationMs: 120,
});
entry._id = pollyEntryId(entry);
  • createHarCapture({ dir, mode: "all" | "failures", providers?, maxBodyBytes?, maxSummarizeBytes?, sseTailBytes?, context?, onError?, clock?, idFactory? }) 返回时 { fetch, call, install, flush, close }。包装提供者在 call({ provider, endpoint, input, context?, estimate? }, fn) 等待着 close() 退出前; 一个呼叫 context 被浅浅地合并在俘虏 context 只有那个电话. estimate (单位:千美元)usd, (中文(简体) ), source, (中文(简体) ), rateAsOf, (中文(简体) ), warnings, (中文(简体) ), breakdown, (中文(简体) ), status)写给 log._apicity.estimate 作为 estimateUsd 内 index.jsonl。 。 。 . input 与 1024 以上的每个数据 URL 或基数64 字段一起写 字符,以及每个字节数组,取而代之的是其散列的占位符,解码 大小和媒体类型。 抓取在写出错误后被禁用,而不更改 提供者结果。 无法读取的正文不会禁用它: 交换是 保存为 bodyTruncated,以及 responseCut 和呼吁的结果 实值 network_error。 。 。 .
  • exchangeToEntry(request: Request, responseOrError: Response | Error, timing, options?) 读取克隆并返回被擦除的条目。 时机已经 startedAt, (中文(简体) ), durationMs 和可选 HAR timings选项 maxBodyBytes (262144号) 默认), maxSummarizeBytes (16个米B), sseTailBytes (64个基B), streamed 财务报告和审定财务报表 role二进制和超大小的身体成为SHA-256、字节和MIME型 占位符,但 JSON 请求最多 maxSummarizeBytes 其文本符合 其介质汇总后封顶。 多段文件成为名称/类型/大小 总结。 内置数据URL和长基64被汇总. 一个文本流结束 盖子是第一个 maxBodyBytes 最后一个 sseTailBytes,整行 添加一个 : apicity-gap <n> bytes dropped 注释; _apicity.streamed 财务报告和审定财务报表 bodyTruncated 说明 他们。 中读失败的躯体 保存到达的东西: 溪流的整行,或 任何不解析整个 JSON 文档的占位符。 一个网络 错误生成状态 0; 呼叫级别错误元数据属于 log._apicity。 。 。 . streamIncomplete 标记一条无新线的线尾或 在公认的Anthropic、OpenAI或Google流中没有最终使用 也标记了整个保留的JSON反应,不解析,即使 运输报告清洁 EOF。 此 JSON 仅保存为散列/ 大小占位符 . 它设置 bodyTruncated 并保持成本证据未定。 不可分类 在一个公认的协议中,一个米B以上的框架或线条不完整。 这是 与留存额上限无关 responseCut (运输故障):完成 运输失败之后的最后用途仍然可以解决。 遗产捕获 无 streamIncomplete 保留现有的成本语义。 机构必须 未使用, 溪流必须最终完成; 中止的请求取消其 获取复制件, 这样它无法控制冲浪 .
  • scrubEntry(entry) 财务报告和审定财务报表 scrubHar(har) 变相而还其辩. 扫描覆盖信头、 URL、 JSON 和窗体编码的供应商证书 尸体,饼干, 响应账户元数据及 _apicity 输入/估计/内容/字段。 它保留了提示和 普通载荷。 这不是一般的个人数据匿名.
  • pollyEntryId(entry, options?) 使用 存储器的默认带匹配规则 。 自定义匹配要求 excludeHeaders, (中文(简体) ), headers: false,或 body: false 视情况而定。 URL 网络 以 Polly 的 url- parse 和 qs 的 url- parse 使其 正常化 : 键被排序并 RFC 3986 逃脱、重复、无值和括号的密钥被保留 碎片被丢弃。 被总结的身体不能复制其特征 原生字节, % 畸形的查询部分也不可能一次逃脱 (单位:千美元) Request 重新编码了它。 未关闭的已录入的 URL [ 或超过 作为对该 URL 的新请求, 不如所记录:波利的再序列化在那里并不稳定.
  • pollyRecordingDir(name) 执行Polly的分块弹道和FNV-1a散列.
  • HAR 类型 : Har, (中文(简体) ), HarLog, (中文(简体) ), HarEntry, (中文(简体) ), HarRequest, (中文(简体) ), HarResponse, (中文(简体) ), HarContent, (中文(简体) ), HarPostData, (中文(简体) ), HarNameValue, (中文(简体) ), HarCookie, (中文(简体) ), HarPage, (中文(简体) ), HarCacheEntry, (中文(简体) ), HarTimings, (中文(简体) ), ApicityCallMetadata,以及 ApicityEntryMetadata。 。 。 .
  • 选项 : ExchangeTiming, (中文(简体) ), ExchangeOptions, (中文(简体) ), PollyIdentityOptions。 。 。 .

记录工具的兼容性导出 : redactPersistedHarSecrets, (中文(简体) ), persistSafeTextRequestBody, (中文(简体) ), summarizeJsonRequestBodyMedia, (中文(简体) ), summarizeMultipartFormData, (中文(简体) ), summarizeMultipartRequestBody, (中文(简体) ), redactedRequestId, (中文(简体) ), PersistedHarRecording, (中文(简体) ), REDACTED_HAR_VALUE, (中文(简体) ), HarHeaderLike, (中文(简体) ), HarCookieLike, (中文(简体) ), HarRequestLike, (中文(简体) ), HarResponseLike, (中文(简体) ), HarRecordingLike, (中文(简体) ), isSensitiveRequestHeaderName, (中文(简体) ), isSensitiveResponseHeaderName, (中文(简体) ), scrubSensitiveRequestHeaders, (中文(简体) ), scrubSensitiveResponseHeaders, (中文(简体) ), scrubRequestCookies, (中文(简体) ), scrubResponseCookies, (中文(简体) ), scrubSensitiveResponse, (中文(简体) ), scrubPolymarketAuthArtifacts, (中文(简体) ), scrubSensitiveRecording, (中文(简体) ), PERSISTED_REQUEST_HEADER_PLACEHOLDERS, (中文(简体) ), persistedRequestHeaderPlaceholder, (中文(简体) ), redactFalCheckpoints, (中文(简体) ), findUnredactedRequestSecrets,以及 findLiveFalCheckpoints。 。 。 .

仓库整合

包裹拥有规则. tests/harness.ts 财务报告和审定财务报表 tests/har-scrub.ts 为: 兼容导出; Vitest 源别名与此包相悖 . 独立的 HAR 查看器/ 报告/ 电子邮件工具通过导入同一来源 har-data.ts 财务报告和审定财务报表 har-scrub.ts 使用相对路径,所以 tsx 还行 从寄存器之外,没有软件包构建或虚拟化名. gen:shared 副本 src/har-secrets.mjs 改为 scripts/lib/har-secrets.mjs (共享源的显式把它接上). 此已执行, 生成的复制让 gen:examples:check, (中文(简体) ), lint:recordings 财务报告和审定财务报表 doc-gen:check 运行一个干净的取出 在创建任何软件包之前. gen:shared:check 防止漂移。 没有运行时间软件包 这些脚本需要依赖或建立进口.

成本证据

entryToProviderExchange 将一个 HAR 输入到交换形状 extractActual 内 @apicity/cost 改为:小写页眉名称,解析出JSON或 SSE 数据框架和无效 requestBody 一个被俘的占位符。 这个包 不导入 @apicity/cost;形状结构吻合.

import { entryToProviderExchange, type HarEntry } from "@apicity/har";

declare const entry: HarEntry;

const exchange = entryToProviderExchange(entry, {
  provider: "openai",
  dotPath: "v1.responses",
});
exchange.responseHeaders["content-type"];

provider 回到拥有请求主机的那个.

交换分析助手

exchangeSucceeded(provider, entry) 需要 HTTP 2xx 并拒绝 KIE 和 xAI 失败信封. responseObject(entry) 解码 JSON 对象响应, 包括基础64 HAR内容.

findMatchingRow(entry, rows, {provider}) 首先匹配完整的 URL,然后使用一个 提供者扫描路径匹配, 然后再次匹配 Fal 的全部 URL {endpoint_id} 横跨整个路径段( c)fal-ai/flux/dev) (中文(简体) ). 带行 provider, (中文(简体) ), method, (中文(简体) ), dotPath 财务报告和审定财务报表 fullUrl。 。 。 . matchHarEntryStrict, (中文(简体) ), matchHarEntryLenient, (中文(简体) ), matchHarEntrySpanning 财务报告和审定财务报表 compileTsvUrlPattern 曝光个人匹配操作. 这些是犬科动物 执行也同步到存储器脚本.

版本与发布记录

@apicity/har 共发布 14 个版本,首次发布于 2026/10/24;过去 12 个月发布了 14 个版本。

版本发布日期距今
0.27.0latest2026/11/061 天前
0.26.02026/11/053 天前
0.25.02026/11/034 天前
0.24.12026/11/025 天前
0.24.02026/11/016 天前
0.23.12026/11/016 天前

关于 @apicity/har 的常见问题

@apicity/har 是什么?

HAR 1.2 序列化,秘密洗涤和Polly记录身份.

如何安装 @apicity/har?

在项目目录运行 npm install @apicity/har,或使用 pnpm add / yarn add / bun add。

@apicity/har 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@apicity/har 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@apicity/har 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@apicity/har 可以商用吗?

@apicity/har 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@apicity/har 的下载量有多少?

根据 npm 官方下载统计,@apicity/har 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,569 次,日均约 86 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@apicity/har 还在维护吗?

最新版本 0.27.0 发布于 2026/11/06(1 天前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/10/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。