snapWONDERS/snapWONDERS-SDK-JavaScript
GitHub: snapWONDERS/snapWONDERS-SDK-JavaScript
snapWONDERS API 的官方 JavaScript/TypeScript 客户端,封装了隐写术、媒体取证分析和格式转换的完整任务编排流程。
Stars: 0 | Forks: 0
snapWONDERS — 揭示隐藏之物。隐藏属于你的秘密。
# @snapwonders/sdk — snapWONDERS API 的 JavaScript / TypeScript 客户端
snapWONDERS API 的官方 JavaScript/TypeScript 客户端:隐写术、取证媒体
分析,以及格式转换。该客户端封装了可恢复的 TUS 上传和
session → job → poll → download 的编排流程,因此一整个任务只需几个 `await` 即可完成。零
运行时依赖 —— 它使用全局的 `fetch` (Node ≥ 18)。
所有 snapWONDERS API 服务均可通过 Clearnet / **Web** 以及暗网 **Tor** 和
**I2P** 访问。
# 安装与设置
## snapWONDERS API key
在开始之前,你需要一个 snapWONDERS API key:
* 在 [snapWONDERS 注册](https://snapwonders.com/sign-up) 注册并创建一个账户。如果你
希望通过 Tor 或 I2P 创建账户,可以通过 Tor 或 I2P 门户访问 snapWONDERS 来实现。有关暗网链接,请访问
[安全浏览](https://snapwonders.com/browsing-safely)。
* 在你的账户设置中,生成一个 API key。新的 key 以 `sw_` 开头。它会作为
每个请求的 `X-Api-Key` header 发送 —— 请妥善保密。
## 安装包
```
npm install @snapwonders/sdk # once published
```
# 快速入门
```
import { Client } from "@snapwonders/sdk";
const client = new Client("sw_your_key_here"); // baseUrl defaults to https://snapwonders.com
console.log(await client.status()); // no key needed for status
// Hide a secret inside a cover image (the last file is the cover).
const job = await client.stego.hide(["secret.png", "cover.jpg"], { password: "Str0ng!Pass" });
for (const result of await job.results()) {
await result.download("out/"); // "out/" is a directory — the server filename is kept
}
// Reveal it again.
const revealed = await client.stego.reveal("out/cover-share.avif", { password: "Str0ng!Pass" });
await (await revealed.results())[0].download("recovered/");
```
`client.analyse`(取证分析)和 `client.convert`(媒体转换)遵循相同的结构 ——
一次调用输入,结果输出:
```
// Forensic analysis — grade each file A–F.
const analysis = await client.analyse.run(["photo.jpg"], { face_detection: true });
for (const item of await analysis.results()) {
console.log(item.filename, item.grade, item.faceCount);
}
// Convert media — the image format key is `image_format` (jpeg/png/webp/avif/heic/jxl).
const converted = await client.convert.run(["photo.png"], { image_format: "webp" });
await (await converted.results())[0].download("out/");
```
# 示例
可运行的端到端示例位于 [`examples/`](examples/) 中 —— 包含隐写术、取证分析
和转换,每个都是一个独立的脚本(纯 ESM)并附带一张示例图片:
```
export SNAPWONDERS_API_KEY=sw_your_key_here
node examples/hide-and-reveal.mjs # hide a file in an image, then reveal it
node examples/analyse.mjs # grade an image A–F + download overlay assets
node examples/convert.mjs # JPEG → WebP
```
有关真实的输入/输出图片和实时的取证分析 JSON 结果,请参阅 [`examples/WALKTHROUGH.md`](examples/WALKTHROUGH.md);有关如何运行它们,请参阅 [`examples/README.md`](examples/README.md)。
# 错误
SDK 抛出的每个失败都是 `SnapwondersError` 的子类,因此你可以根据失败的
类型进行分支处理,而无需检查 HTTP 状态码:`AuthError`、`ProRequiredError`、
`SessionExpiredError`、`RateLimitError`、`MaintenanceError`、`JobFailedError`、`TusUploadError`、
`NetworkError`、`ApiError`。
# 运行测试
```
npm install
npm run typecheck # tsc --noEmit
npm test # offline smoke tests (no key required), via tsx
npm run build # emit dist/
```
# 文档
有用的文档可以在以下位置找到:
* 交互式 Swagger UI 和完整的 endpoint 参考:
[snapWONDERS API](https://snapwonders.com/api)
* 循序渐进的引导式集成演示:
[snapWONDERS 开发者](https://snapwonders.com/developers)
# 联系方式
## 关于安全问题
如果你发现了任何安全问题,请通过
[联系 snapWONDERS](https://snapwonders.com/contact) 告知我们,并将主题设置为
**"SECURITY CONCERNS"**,同时提供有关你发现的问题的信息。如果你希望通过
Tor 或 I2P 联系,可以通过 Tor 或 I2P 门户访问 snapWONDERS 来实现。有关暗网
链接,请访问 [安全浏览](https://snapwonders.com/browsing-safely)。
## 关于 FAQ 和疑问
你的问题可能已经在 [FAQ](https://snapwonders.com/faq) 中得到了解答。请务必
先查看 FAQ 内容。否则,你可以通过
[联系 snapWONDERS](https://snapwonders.com/contact) 与我们取得联系。
## 联系作者
使用此链接联系作者 [Kenneth Springer](https://kennethbspringer.au/)。
# 许可证
MIT — 版权所有 (c) 2026 Kenneth Springer @ snapWONDERS。详见 [LICENSE](LICENSE)。
**范围。** MIT 许可证仅涵盖**此客户端库**。它不授予与其通信的
snapWONDERS API、服务、数据、模型或算法的任何权利 —— 这些均为**专有**
资产,且仍归 Kenneth Springer @ snapWONDERS 所有。此库仅向
API 发送 HTTP 请求;它不包含其任何实现。使用 API 需要有效的 API key,并
受 [snapWONDERS 服务条款](https://snapwonders.com/terms) 约束。
标签:CMS安全, JavaScript, MITM代理, TypeScript, 多媒体分析, 媒体取证, 安全插件, 数据可视化, 格式转换, 自动化攻击, 隐写术