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


2 回复

Node.js 获取百度网盘直链的小应用

前言

最近学习了 Node.js,编写了一个用于获取百度网盘直链的小应用。这个应用可以帮助用户从分享链接中提取出真实的下载地址。

使用方法

该应用的基本使用步骤是对 /req 构造一个 GET 请求,通过传递 shareiduk 参数来获取包含真实链接的 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}`);
});

说明

  1. 依赖:需要安装 expressaxios 库。
  2. 环境变量YOUR_ACCESS_TOKEN 需要替换为实际的访问令牌。
  3. 错误处理:如果缺少 shareiduk 参数,则返回 400 错误;如果请求失败或返回错误信息,则返回相应的错误信息。

希望这个小应用能帮助到有需要的朋友们!


要实现一个Node.js小应用来获取百度网盘直链,我们需要创建一个简单的服务器,该服务器能够处理GET请求并返回包含直链信息的JSON数据。以下是如何实现这个功能的步骤及代码示例。

步骤

  1. 设置Node.js环境。
  2. 使用Express框架创建一个HTTP服务器。
  3. 创建一个路由来处理/req路径的GET请求。
  4. 从请求参数中提取shareiduk
  5. 构造返回的JSON数据,包括原始请求中的shareiduk以及真实的下载链接(这里为了演示使用静态字符串)。
  6. 将构造好的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字段。
  • 对于生产环境的应用,还需要考虑错误处理、安全性增强等更多方面。
回到顶部