LanzouAPI:三步集成蓝奏云直链解析,带密码链接也能解
LanzouAPI:三步集成蓝奏云直链解析,带密码链接也能解
你收到一条蓝奏云分享外链,程序却拿不到能直接下载的文件地址,这是下载工具最常见的痛点。LanzouAPI 解决它:传入分享外链,返回可直接下载的直链,带密码链接也支持。它是一个单文件、零依赖的蓝奏云解析 API,适合下载工具、资源站和前端开发者。
启动本地服务:三步完成第一次解析请求
这一节让你在三步内把服务跑起来,拿到第一条直链。整个项目只有一个入口文件 index.php,没有任何依赖。
环境要求只有两条:PHP 5.6 及以上、开启 curl 扩展(Linux 上一般是 php-curl 包)。启动分三步:克隆仓库、进入目录、用 PHP 自带服务器起本地服务。
依次执行下面命令:克隆仓库、进入目录、用 PHP 内置服务器启动本地服务。
git clone https://gitcode.com/gh_mirrors/la/LanzouAPI
cd LanzouAPI
php -S 127.0.0.1:8080
新开一个终端,发出第一次解析请求,把链接里的 xxxx 换成任意真实蓝奏云外链即可。
curl "http://127.0.0.1:8080/index.php?url=https://www.lanzou.com/xxxx"
成功时你会看到下面的 JSON,其中 downUrl 就是最终直链:
{
"code": 200,
"msg": "解析成功",
"name": "示例文件.exe",
"filesize": "5.2MB",
"downUrl": "https://最终直链(可直接下载)"
}
💡 接口默认返回带跨域头的 JSON,浏览器前端可直接 fetch 调用,不需要再加一层代理。
看懂解析流程:三步如何拿到直链
这一节把解析内部的三步拆开讲,你会清楚它在哪里可能出错。逻辑全写在 index.php 里,很短。
- 抓取分享页:模拟浏览器访问分享链接,取出文件名、大小和签名 sign;如果页面显示"文件取消分享了",直接返回错误
- 提交下载请求:拿着 sign 去请求 ajaxm.php 接口,加密链接在这一步附带提取码
- 解析最终直链:拼出下载地址后发 HEAD 请求,取真实跳转目标作为 downUrl,并去掉可能泄露服务器信息的 pid 参数
⚠️ 它只处理单个文件的分享,文件夹分享链接解不了;加密链接必须把 pwd 传对,否则直接返回 400。
三种调用方式:直链 JSON、一键下载、批量验证
这一节覆盖最常用的三种用法,照着改参数就能用。参数一共只有 url、pwd、type 三个。
| 调用方式 | 返回形式 | 适合场景 |
|---|---|---|
| 只传 url | JSON 直链 | 下载器、资源站后端 |
| url + pwd | JSON 直链 | 带密码的加密链接 |
| url + type=down | 302 跳转 | 一键下载按钮 |
怎么拿到一条可用直链
你的问题:用户提交蓝奏云外链,你的后端需要一个能直接下载的文件地址。这样做:GET 请求接口,只传 url;链接有提取码就追加 pwd 参数。得到什么:JSON 里的 downUrl 就是最终直链,name 和 filesize 可以直接展示给用户。
一键下载按钮怎么做
你的问题:用户点一下就下载,不经过任何中间页面。这样做:请求时追加 type=down。得到什么:接口 302 跳转到真实直链,浏览器或 curl -L 会把文件直接落到本地。
把文件直接下载到本地,用 -o 指定保存文件名:
curl -L -o 文件.exe "http://127.0.0.1:8080/index.php?url=https://www.lanzou.com/xxxx&type=down"
批量检查链接是否失效
你的问题:资源库里一堆旧链接,不知道哪些被作者取消了。这样做:写个脚本循环调用接口,只看返回的 code。得到什么:code 为 200 表示链接还活着,400 且提示"文件取消分享了"就标记为失效。
调稳调用:缓存、重试与多实例部署
这一节教你从调用侧降低上游压力、提高成功率。
📌 参数 url、pwd、type 是固定的,真正加分的是调用侧的缓存和重试。
- 缓存直链:同一条链接短时间内反复解析没有意义。以 url+pwd 做键缓存解析结果,能明显降低上游请求量
- 加重试:上游偶尔响应慢,HEAD 那一步失败时代码会退回未解析的地址。对稳定性要求高的调用方,对 400 和超时的结果做一次延迟重试即可
- 部署多份:单文件部署没有任何状态,横向扩多份放负载均衡后面没有兼容性问题
- 集成到前端:输出是纯 JSON 且已开跨域,网页里 fetch 一行就能拿到 downUrl,再赋给下载按钮的 href
出错了先对照这张表
九成问题都能在这张表里找到对应行,先看返回的 code 和 msg。
| 现象 | 原因 | 解决 |
|---|---|---|
| code 400,提示"请输入URL" | 没传 url 参数 | 确认请求里带了 url |
| code 400,提示"请输入分享密码" | 链接加密但没传 pwd | 追加 pwd=提取码 再请求 |
| code 400,提示"文件取消分享了" | 作者取消了分享 | 换一条有效链接 |
| 请求很久才返回或超时 | 上游响应波动 | 加重试,调大 PHP 超时时间 |
| downUrl 打开 404 | 直链已过期 | 重新调接口解析一次 |
项目就一个 index.php,没有依赖、没有配置文件,部署成本约等于零。更多用法和演示地址,直接翻仓库里的 README.md。
更多推荐
所有评论(0)