Nodejs一个获取百度网盘直链的小应用
Nodejs一个获取百度网盘直链的小应用
刚学完node.js 写了一个获取百度网盘直链的小应用
基本的使用步骤是对/req
构造一个Get
请求,然后获取包含真实连接的json
格式数据
请求格式:
{
"shareid": // the shareid in the share link.
"uk": // the uk in the share link.
}
例如,要请求http://yun.baidu.com/share/link?shareid=198923&uk=4281611514
的真实地址
应该构造连接http://easydown.duapp.com/req?shareid=198923&uk=4281611514
获取json为:
{
"shareid": "198923",
"uk": "4281611514",
"error": false,
"url": "http://d.pcs.baidu.com/file/47c00304b872a8ec6b07bda4867f005c?fid=4281611514-250528-2444335697&time=1380002913&sign=FDTAR-DCb740ccc5511e5e8fedcff06b081203-qQKjWvLyzmmKneKyFxhaCvOU4nM%3D&rt=sh&expires=8h&r=976394124&sh=1"
}
已经挂在BAE上了,地址是http://easydown.duapp.com/
Github repo: https://github.com/brickgao/Baiduyun_Simple
Node.js 获取百度网盘直链的小应用
前言
最近学习了 Node.js,编写了一个用于获取百度网盘直链的小应用。这个应用可以帮助用户从分享链接中提取出真实的下载地址。
使用方法
该应用的基本使用步骤是对 /req
构造一个 GET
请求,通过传递 shareid
和 uk
参数来获取包含真实链接的 JSON 数据。
请求格式
{
"shareid": // 百度网盘分享链接中的 shareid。
"uk": // 百度网盘分享链接中的 uk。
}
示例请求
假设有一个百度网盘分享链接:
http://yun.baidu.com/share/link?shareid=198923&uk=4281611514
我们可以通过以下 URL 构造请求来获取真实的下载链接:
http://easydown.duapp.com/req?shareid=198923&uk=4281611514
返回结果
成功请求后,返回的 JSON 数据将包含以下字段:
{
"shareid": "198923",
"uk": "4281611514",
"error": false,
"url": "http://d.pcs.baidu.com/file/47c00304b872a8ec6b07bda4867f005c?fid=4281611514-250528-2444335697&time=1380002913&sign=FDTAR-DCb740ccc5511e5e8fedcff06b081203-qQKjWvLyzmmKneKyFxhaCvOU4nM%3D&rt=sh&expires=8h&r=976394124&sh=1"
}
部署情况
该应用已部署在 BAE(百度应用引擎)上,访问地址为:
http://easydown.duapp.com/
GitHub 仓库
源码托管在 GitHub 上,可以查看和贡献代码:
https://github.com/brickgao/Baiduyun_Simple
示例代码
以下是一个简单的示例代码,展示如何使用 Node.js 实现上述功能:
const express = require('express');
const axios = require('axios');
const app = express();
const port = process.env.PORT || 3000;
app.get('/req', async (req, res) => {
const { shareid, uk } = req.query;
if (!shareid || !uk) {
return res.status(400).json({ error: 'Missing shareid or uk' });
}
try {
const response = await axios.get(`http://d.pcs.baidu.com/rest/2.0/pcs/file?method=getlink&shareid=${shareid}&uk=${uk}`, {
headers: {
Authorization: 'Bearer YOUR_ACCESS_TOKEN'
}
});
const data = response.data;
if (data.error_code === 0) {
res.json({
shareid,
uk,
error: false,
url: data.url
});
} else {
res.json({
shareid,
uk,
error: true,
message: data.error_msg
});
}
} catch (error) {
res.status(500).json({ error: 'Failed to fetch data from Baidu Yun' });
}
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
说明
- 依赖:需要安装
express
和axios
库。 - 环境变量:
YOUR_ACCESS_TOKEN
需要替换为实际的访问令牌。 - 错误处理:如果缺少
shareid
或uk
参数,则返回 400 错误;如果请求失败或返回错误信息,则返回相应的错误信息。
希望这个小应用能帮助到有需要的朋友们!
要实现一个Node.js小应用来获取百度网盘直链,我们需要创建一个简单的服务器,该服务器能够处理GET请求并返回包含直链信息的JSON数据。以下是如何实现这个功能的步骤及代码示例。
步骤
- 设置Node.js环境。
- 使用Express框架创建一个HTTP服务器。
- 创建一个路由来处理
/req
路径的GET请求。 - 从请求参数中提取
shareid
和uk
。 - 构造返回的JSON数据,包括原始请求中的
shareid
、uk
以及真实的下载链接(这里为了演示使用静态字符串)。 - 将构造好的JSON响应发送回客户端。
示例代码
首先,确保已安装Node.js和npm。然后创建一个新的项目文件夹,初始化项目,并安装必要的依赖包:
mkdir baidu-yun-simple
cd baidu-yun-simple
npm init -y
npm install express
接下来,在项目根目录下创建一个名为index.js
的文件,并添加以下代码:
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/req', (req, res) => {
const { shareid, uk } = req.query;
if (!shareid || !uk) {
return res.status(400).json({ error: 'Missing required parameters' });
}
// 构造返回的JSON数据
const data = {
shareid,
uk,
error: false,
url: `http://example.com/directlink/${shareid}/${uk}` // 这里替换成实际的百度网盘直链
};
res.json(data);
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
这段代码会启动一个监听本地3000端口的服务器。当你向http://localhost:3000/req?shareid=198923&uk=4281611514
发送GET请求时,它将返回包含直链信息的JSON响应。
注意事项
- 在实际部署中,你需要根据百度网盘API或相关服务的实际返回逻辑来填充
url
字段。 - 对于生产环境的应用,还需要考虑错误处理、安全性增强等更多方面。