Skip to content

实现抓取节点令牌的管理 - #93

Merged
JunieXD merged 1 commit into
mainfrom
crawler-tokens
Nov 8, 2026
Merged

JunieXD merged 1 commit into
mainfrom
crawler-tokens

Conversation

@JunieXD

@JunieXD JunieXD commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

关联

Closes #39

改了什么

抓取节点用令牌调网站的接口(接口 §6)。线上的令牌要由站长在系统设置里生成和作废,不能只靠本地的 pnpm crawler-token(总体设计 §6.2)。

  • 接口(只有站长能调,只认网页会话):
    • GET /admin/crawler-tokens:名字、生成时间、上次来领活、作废时间,新的在前。
    • POST /admin/crawler-tokens:写个名字(用在哪个抓取节点),返回的令牌只出现这一次,库里只存 SHA-256。
    • POST /admin/crawler-tokens/{id}/revoke:作废,马上生效:抓取节点每个请求都按令牌查一次,作废后的请求返回 401。已经作废的返回 409 already_revoked。
    • 生成和作废记进 audit_log(target_type 是 crawler_token,带名字)。pnpm crawler-token 是本地用的,没有登录的人,不记日志。
  • 页面 /admin/settings:「抓取节点令牌」一节。
    • 填名字生成,生成后把令牌显示一次,提示现在复制下来;点一下输入框就全选。
    • 列出全部令牌,作废的标出来;作废前在页面上确认(和详情页「撤销全部修改」一样用 ?revoke= 显示确认,不用浏览器的弹窗)。
    • 站长的导航里有「系统设置」;别人打开是「只有站长能操作」。
  • 分层:crawler_tokens 归 ingest,函数在 ingest/service.ts,接口在 ingest/token-routes.ts。

怎么验证的

  • pnpm check 全部通过。新测试覆盖:
    • 站长生成的令牌能领活,列表里看得到、记下了上次来领活;作废后马上领不到(401),再作废返回 409;操作日志里有生成和作废。
    • 名字为空返回 400。
    • 管理员看不了、生成不了、作废不了(403),访客 401。
  • 本地在浏览器里以站长走了一遍:生成、复制、作废和确认,管理员打开是 403;手机宽度(390px)没有横向滚动。
  • pnpm openapi 后 openapi/crawler.json 没变。

影响

  • 接口:新增上面三个接口。
  • MCP 工具的使用者:无,这几个接口只认网页会话。
  • 表结构:无。
  • 抓取节点:无,接口不变;站长作废令牌后,用它的抓取节点要换新令牌。

线上的抓取节点令牌要由站长在系统设置里生成和作废,不能只靠本地的 pnpm crawler-token(总体设计 §6.2)。

- 接口 GET、POST /admin/crawler-tokens,POST /admin/crawler-tokens/{id}/revoke:只有站长能调;生成时令牌只返回这一次,作废马上生效;生成和作废记进操作日志
- 页面 /admin/settings 的「抓取节点令牌」一节:生成后把令牌显示一次,作废前在页面上确认;站长的导航里有「系统设置」
@JunieXD
JunieXD merged commit 825f4c8 into main Nov 8, 2026
2 checks passed
@JunieXD
JunieXD deleted the crawler-tokens branch November 8, 2026 11:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[任务] 抓取节点令牌:站长的系统设置

1 participant