Aver005/deep-reverse
GitHub: Aver005/deep-reverse
该项目是对 DeepSeek 网页端 HTTP API 进行系统化逆向工程后产出的协议规范文档与配套 SDK 工具集,帮助开发者理解并集成 DeepSeek 的私有接口。
Stars: 0 | Forks: 0
# deep-reverse
针对 **chat.deepseek.com** 逆向工程的 HTTP API 规范,已通过
2026-06-27 的真实账号实时流量验证。
这是早期两份逆向工程草案(`deep-reverse`
v1 和 `deep-reverse-v2`)的合并版。原始的 v1 版本保留在 [`.old/`](./.old) 中。
## 目录结构
```
docs/ – human-readable endpoint & flow documentation (start here)
schemas/ – JSON Schema (draft-07) for request/response bodies
types/ – TypeScript type definitions, modular per domain
scripts/ – runnable SDK + capture/analysis utilities (bun)
.old/ – the original v1 draft, kept for reference
```
## 文档索引
- [概述](./docs/00-overview.md) – base URL、headers、envelope、更正表
- [通用](./docs/01-common.md) – device id、分页、PoW 概述、错误
- [身份验证](./docs/02-authentication.md)
- [客户端设置](./docs/03-client-settings.md)
- [聊天会话](./docs/04-chat-sessions.md)
- [对话补全](./docs/05-chat-completion.md) – SSE endpoint
- [文件上传](./docs/06-file-upload.md)
- [分享](./docs/07-share.md)
- [POW 挑战](./docs/08-pow-challenge.md) – DeepSeekHashV1 / WASM
- [SSE 协议](./docs/09-sse-protocol.md)
- [模型切换](./docs/10-model-switching.md)
- [搜索 / 索引](./docs/11-search-index.md)
- [导出](./docs/12-export.md)
- [功能开关与遥测](./docs/13-feature-flags-telemetry.md)
- [场景](./docs/15-scenarios.md) – 16 个端到端流程
- [页面加载序列](./docs/16-page-load-sequence.md)
## 脚本
```
bun install
# 登录(将 DEEPSEEK_TOKEN / DEEPSEEK_DEVICE_ID 写入 .env)
DEEPSEEK_EMAIL=... DEEPSEEK_PASSWORD=... bun run login
bun run sessions list
bun run chat "Hello, how are you?"
bun run upload ./test-upload.txt
```
`capture.ts` / `analyze.ts` 通过 Playwright 重新捕获实时流量,并生成一份
markdown endpoint 报告 —— 这在 DeepSeek 发布
更新后刷新规范时非常有用。
## 验证状态
已通过实时流量(2026-06-27)验证的字段:
- `device_id` 是一个 UUID v4(不是哈希值,也不是 base64 随机字符串)
- PoW 通过 `sha3_wasm_bg..wasm` 使用 `DeepSeekHashV1`(属于 SHA-3 系列,
而不是 SHA-256 —— 具体的构造方式仍需进行 WASM 反编译)
- `TitleType` ∈ { `WIP`, `SYSTEM`, `USER` }(早期草案中的 `MANUAL` / `FIXED` 是错误的)
- `FragmentType` ∈ { `REQUEST`, `RESPONSE`, `THINK` }(不是 `THINKING`)
- `share/create` 需要 `{ chat_session_id, message_ids: number[] }`
- `users/settings` 返回 `{ training_allowed: boolean }`
- `client/settings/report` 的请求体为 `{ settings_ids, did, sso_id }`
- 思考 SSE 流程:THINK fragment → `elapsed_secs` SET → RESPONSE fragment
- `share/list` 需要 `count` 查询参数;`share/content` 是公开的
## 注意事项
- `scripts/client.ts` 中的 `solvePow` 会启动来自
`fe-static.deepseek.com/.../37627..js` 的官方 wasm-bindgen worker,并向其发送
`pow-challenge` 消息 —— 已针对实时流量完成端到端验证
(返回与官网自身生成的相同的 nonce)。它在首次使用时需要网络访问权限
以下载 worker bundle;该 bundle 的 URL 是硬编码的,
如果 DeepSeek 轮换了哈希值,它就会失效。在生产环境中使用时,请在
本地镜像该 bundle。
- `MessageStatus.ABORTED` 被 Web 客户端引用,但并未被直接
捕获;来自 v1 草案的 `FAILED` / `CANCELLED` 状态未经证实,因此已被省略。
- `index/*`、`export_all`、`wechat_js_sdk_signature`、`client/span` 的请求体是
根据 v1 草案 / 客户端行为推断出来的;未捕获到实际请求体。
标签:AI工具, API文档, DeepSeek, TypeScript, 云资产清单, 安全插件, 数字取证, 熵值分析, 特征检测, 网络协议分析, 自动化攻击, 自动化脚本, 逆向工程