链接+提取码,直接下载。
输入蓝奏云单文件分享链接与提取码,自动取得临时 CDN 直链。公开解析接口和下载工具无需登录,也无需 Service Token。
免登录解析接口
POST https://item.bismih520.com/public/api/resolve
提交 JSON:url 为分享链接,password 为提取码,无密码可省略或留空。示例链接需替换为实际分享:
curl --fail-with-body --max-time 80 \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.lanzouv.com/ishare","password":"abcd"}' \
https://item.bismih520.com/public/api/resolve
HTTP 200 返回:
{
"name": "example.zip",
"direct_url": "https://zip2.webgetstore.com/example?temporary-ticket",
"size": 4096,
"resolved_at": 1792872000,
"requires_login": false,
"message": "临时直链,请立即下载;失效后重新解析"
}文件名、直链、长度与时间仅为示例;无法确定长度时 size 为 null。resolved_at 是解析时刻,不是到期时间,上游实际有效期不由本网关承诺。
直接打开返回的 direct_url,或用下载器 GET 它即可;无需再提交蓝奏提取码、Access 会话或服务凭据。网页工具在解析成功后会自动开始下载,也提供“再次下载”和“复制直链”。
# DIRECT_URL 使用上一步返回的实际地址
curl --fail --output ./downloaded.zip "${DIRECT_URL}"
解析器只探测最终响应头,文件内容由客户端直接向蓝奏 CDN 下载,不经过 VPS 文件代理。直链失效、网络条件变化或下载失败时,重新提交原分享链接与提取码解析。它下载的是蓝奏分享文件本身,文件名和格式以分享内容为准。
错误与限制
| 状态 | 含义 |
|---|---|
| 400 | 分享要求提取码,但没有填写。 |
| 403 | 提取码错误,或跨站写入被拒绝。 |
| 404 | 分享失效、不是单文件分享,或页面协议变化。 |
| 413 / 415 / 422 | 请求体超过 4 KiB、不是 JSON,或链接/参数无效。 |
| 429 | 每个 IP 每分钟最多 6 次,全站每分钟最多 30 次,同时解析最多 2 个;按 Retry-After 重试。 |
| 502 / 503 | 上游异常、限流、人工验证、超时或协议不兼容。 |
支持常见 lanzou*.com 域名的单文件分享。HTTP 分享入口会转换为 HTTPS;可识别链接中的 ?pwd=,显式 password 优先。文件夹、蓝奏优享等不同产品的协议不在当前范围内。
解析错误返回 {"error":{"code":"…","message":"…"}};参数或频率错误可能采用 {"detail":…}。不把验证码页面当作文件交付,也不承诺永久免人工验证码。
每次请求使用独立匿名会话,不调用站主账号、不保存用户分享链接和提取码。逐跳检查 HTTPS、提供方域名和公网 DNS。直链提取不代表文件内容已做病毒扫描,也没有为任意外部分享提供历史哈希担保。
下载完整 OpenAPI 3.1 规格。本页和 JSON 由 Cloudflare Pages 免费静态托管,不调用正式接口、不收集凭据,也不占用 VPS 文档服务资源。
私有账号上传、文件列表与校验下载(需要 Access)
私有账号上传与下载
API 基址:https://item.bismih520.com。以下示例从环境变量读取机器凭据,文档不接收或保存凭据。
1. 上传文件
curl --fail-with-body --max-time 120 \
-H "CF-Access-Client-Id: ${CF_ACCESS_CLIENT_ID}" \
-H "CF-Access-Client-Secret: ${CF_ACCESS_CLIENT_SECRET}" \
-F 'file=@./example.bin' \
https://item.bismih520.com/api/v1/files
成功响应为 HTTP 201。编号和哈希仅为示例:
{
"id": "123456789",
"name": "example.bin",
"size": 4096,
"sha256": "原文件的64位SHA-256十六进制摘要",
"verified": true,
"download_url": "https://item.bismih520.com/api/v1/files/123456789/download"
}
2. 使用返回的 download_url
已登录的浏览器打开这个地址就会下载原文件。脚本将上一步实际返回的编号填入 URL:
curl --fail --max-time 120 \
-H "CF-Access-Client-Id: ${CF_ACCESS_CLIENT_ID}" \
-H "CF-Access-Client-Secret: ${CF_ACCESS_CLIENT_SECRET}" \
--output ./downloaded.bin \
https://item.bismih520.com/api/v1/files/123456789/download
返回 Content-Disposition: attachment 和 X-Content-SHA256。调用方应核对 SHA-256,并在失败时丢弃临时输出。私有仓库中的 client.py download 会先验证再原子落盘。
这里直接返回文件字节,并非 302 跳转到蓝奏 CDN。文件先经过服务器取回与校验,可能等待数秒;实测一次上传含回读约 95 秒。避免给上传设置过短超时。
访问授权
浏览器使用现有 GitHub 身份通过 Cloudflare Access。机器调用同时携带两个请求头:
CF-Access-Client-Id: ${CF_ACCESS_CLIENT_ID}
CF-Access-Client-Secret: ${CF_ACCESS_CLIENT_SECRET}专用凭据由维护者私下提供,不是蓝奏云账号密码。本节的账号文件下载地址、限时链接和私有接口都受相同授权约束。不要把机器密钥放进 URL、前端代码或公开文章,也不要让携带密钥的请求自动跟随跨域跳转。
未授权请求可能被 Cloudflare 返回登录跳转;后端对缺失或无效身份返回 401。此静态文档公开可读,文件与接口仍为私有。
接口参考
| 方法与路径 | 参数 / 返回 |
|---|---|
POST /api/v1/files | multipart 字段 file,单文件最大 95 MiB(99,614,720 字节)。返回编号、原名、长度、SHA-256、verified 与 download_url。201 表示上传及回读通过;202 见下文。 |
GET /api/v1/files | 默认存储目录;可传 ?folder_id=-1 查看账号根目录。返回 {folder_id, items: [...]},文件项含 id、name、is_dir、download_url。由本网关上传的文件另含原始 size、sha256、verified。 |
GET /api/v1/files/{file_id}/download | 编号为 1–18 位数字。返回原文件附件,application/octet-stream,含 SHA-256 与 ETag。支持 Range: bytes=0-1023,成功部分响应为 206;仍先完整取回并验证云端副本。 |
POST /api/v1/files/{file_id}/link | 可传 ?expires_in=3600,范围 60–86400 秒。返回 {url, expires_at, requires_cloudflare_access: true}。时间为 Unix 秒。 |
GET /d/{file_id} | 原样使用上一步返回的 URL,含 expires 与 signature。无需自己计算签名。签名到期或被修改返回 403;有效时返回同样的原文件附件。 |
GET /api/v1/health | 服务存活、版本与上传字节上限。HTTP 200 仅证明网关运行,不能代表云端上传下载已通过。 |
GET /api/v1/projects | 项目数组,含名称、简介、仓库、文档及 health;绿灯来自每日真实上传下载验证,36 小时没有有效结果转为红灯。 |
下载完整的 OpenAPI 3.1 规格,可导入 Postman、Apifox 等客户端。JSON 和本页均由 Cloudflare Pages 静态托管;页面不会向正式接口发送请求。
状态与错误
HTTP 202 不是要求重新上传。云端已接收文件,但回读暂未确认,响应保留文件编号和下载地址:
{
"id": "123456789",
"name": "example.bin",
"size": 4096,
"sha256": "原文件摘要",
"verified": false,
"download_url": "https://item.bismih520.com/api/v1/files/123456789/download",
"verification_error": "UPSTREAM_UNAVAILABLE",
"message": "云端已接收文件,回读校验暂未通过;可按编号重试下载,不要重复上传"
}按返回编号重试下载并校验,不要重发 POST。若客户端上传超时、没有收到编号,也先检查文件列表或联系维护者确认结果,防止重复写入。
| HTTP | 处理 |
|---|---|
| 401 / Access 登录跳转 | 登录或检查机器凭据与应用权限。 |
| 403 | 跨站写入被拒绝,或签名链接无效 / 到期。 |
| 413 / 422 | 检查文件大小或参数格式。 |
| 429 | 并发传输繁忙,稍后重试;上传结果不明确时先核对。 |
| 502 / 503 | 上游不可用、协议变化、人工验证或文件校验失败。不要把响应作为文件保存。 |
| 507 | 服务器临时磁盘空间不足,维护者处理后重试。 |
提供方和认证错误采用 {"error":{"code":"…","message":"…"}};参数及部分网关错误采用 FastAPI 的 {"detail":…}。反向代理错误可能返回 HTML,调用方必须先检查 HTTP 状态。
下载行为与适用范围
本服务面向自己的蓝奏云账号。上传的原始字节以 ZIP 容器保存,下载时恢复原始文件名和内容;直接用蓝奏分享页下载这个对象会得到容器。账号既有文件可以按编号下载,没有历史哈希时只能提供本次传输摘要。通用分享链接请使用上面的免登录解析接口。
服务端自动取得并提交分享密码,处理目前观察到的 Cookie 与自动验证表单。若上游要求真正的人工验证码,则明确失败,不能保证永远免验证码。SHA-256 验证针对内容完整性,不等同于病毒扫描。
与常见解析库一样,底层依赖上游页面协议;本项目增加的是你可直接调用的私有上传下载服务、原文件恢复、完整性校验、Access 与每日实测。代理下载占用服务器带宽与临时磁盘,静态文档访问不占用你的服务器资源。