@ikenxuan/amagi

v6.4.0

2026-07-30 发布的重要变更

v6.4.0 变更日志

Fetcher

四个平台统一支持单次请求配置覆盖

通过 Amagi Client 或 createBound*Fetcher 创建的 B站、抖音、快手和小红书绑定 Fetcher,现在都会读取方法的第二个 requestConfig 参数,并将它与实例级请求配置合并。

单次配置拥有更高优先级,请求头会单独合并,因此可以只覆盖当前请求的 Cookie,同时保留实例配置的代理、超时和 User-Agent:

import amagi from '@ikenxuan/amagi'

const client = amagi({
  cookies: {
    bilibili: 'SESSDATA=example',
    douyin: '',
    kuaishou: '',
    xiaohongshu: ''
  },
  request: {
    timeout: 10_000
  }
})

const result = await client.bilibili.fetcher.fetchComments(
  {
    oid: '170001',
    type: 1,
    number: 20,
    typeMode: 'strict'
  },
  {
    headers: {
      Cookie: ''
    }
  }
)

该覆盖只影响当前调用,不会修改 Client 或绑定 Fetcher 保存的配置,也不会影响同一实例上的后续请求。显式提供大写 headers.Cookie 时,该值还会同步成为底层 Fetcher 当前调用的 cookie 参数,确保平台签名、前置请求和最终请求处于同一身份状态。

直接导出的裸 Fetcher 也支持单次请求配置,调用签名为 fetcher.method(options, cookie?, requestConfig?):

import { bilibiliFetcher } from '@ikenxuan/amagi'

const result = await bilibiliFetcher.fetchComments(
  {
    oid: '170001',
    type: 1
  },
  '',
  {
    headers: {
      Cookie: ''
    }
  }
)

裸 Fetcher 会在类型层关联参数二与参数三的 headers.Cookie:只要显式传入 Cookie 请求头,参数二就必须是相同的字符串字面量。因此匿名请求必须同时传入空字符串,不能保留登录 Cookie。请求头字段严格使用大写 Cookie,小写 cookie 会导致类型检查失败。

该调用形式同样适用于 douyinFetcher、kuaishouFetcher、xiaohongshuFetcher 以及默认导出上的同名静态属性。

B站

匿名获取评论

B站登录态会影响评论区热度池,不同账号可能得到不同的评论排序。需要稳定获取匿名评论结果时,可以通过上述单次请求配置清空 Cookie,无需创建第二个 Amagi Client。

评论请求仍由原 Client 实例发起,因此会继续经过同一套事件、日志和错误处理链路。

最后更新于 2026-09-17

On this page