php教程

有道云笔记直链解析API接口源码

php教程 51源码 2024-04-01 人阅读

直连拼接方法

1、在有道云笔记分享文件之后,得到分享链接。

http://note.youdao.com/noteshare?id=9862400b661006b5cf5a512e5ad80d6d

2、取出链接中 id 值 9862400b661006b5cf5a512e5ad80d6d。

3、根据 id 值拼接链接:

http://note.youdao.com/yws/public/note/9862400b661006b5cf5a512e5ad80d6d?editorType=0&cstk=cGtjFpHb

拼接逻辑为:

http://note.youdao.com/yws/public/note/ {id值}?editorType=0&cstk=cGtjFpHb

4、访问拼接后的链接,得到一串 JSON 字符串。

{"p":"/WEBf82fd575bd63c60f98ba999f1c1279ad","ct":1475838565,"su":null,"pr":0,"au":null,
"pv":1,"mt":1475838565,"sz":15581976,"domain":1,"tl":"shsn.mp4"}

5、获取 p 值,并去掉其中的/,拼接新的链接。

拼接逻辑为

http://note.youdao.com/yws/api/personal/file/{第 4 步得到的 p 的值}?method=download&inline=true&shareKey={第 1 步分享链接中的 id 值}

6、得到最终的直链地址:

http://note.youdao.com/yws/api/personal/file/WEBf82fd575bd63c60f98ba999f1c1279ad?method=download&inline=true&shareKey=9862400b661006b5cf5a512e5ad80d6d

封装API接口源码

通过以上方法,我们可以轻松的封装成API接口的方式,以便以后更方便的使用。

<?php
// 验证请求是否合法,防止恶意请求
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    http_response_code(400);
    echo json_encode(['error' => 'Invalid request method']);
    exit;
}
// 获取传入的链接参数
if (!isset($_GET['url'])) {
    http_response_code(400);
    echo json_encode(['error' => 'Missing url parameter']);
    exit;
}
$url = $_GET['url'];
$json = isset($_GET['json']) && $_GET['json'] == 'ture';
// 获取跳转后的链接
function getRedirectUrl($url) {
    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_NOBODY => true, // 只获取响应头,不获取响应体
        CURLOPT_HEADER => true, // 将响应头包含在输出中
        CURLOPT_CONNECTTIMEOUT => 5, // 设置连接超时时间为5秒
        CURLOPT_TIMEOUT => 10 // 设置请求超时时间为10秒
    ]);
    curl_exec($curl);
    $redirectUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
    curl_close($curl);
    return $redirectUrl;
}
$redirectUrl = getRedirectUrl($url);
// 提取链接中的ID值
$queryString = parse_url($redirectUrl, PHP_URL_QUERY);
parse_str($queryString, $params);
$id = isset($params['id']) ? $params['id'] : '';
if (empty($id)) {
    http_response_code(400);
    echo json_encode(['error' => 'Invalid url parameter']);
    exit;
}
// 构建API请求链接
$apiUrl = "http://note.youdao.com/yws/public/note/{$id}?editorType=0&cstk=cGtjFpHb";
// 发送API请求
$curl = curl_init($apiUrl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($curl);
curl_close($curl);
if (!$res) {
    http_response_code(500);
    echo json_encode(['error' => 'Failed to fetch API response']);
    exit;
}
// 解析API响应
$resArr = json_decode($res, true);
if (!$resArr || !isset($resArr['p'])) {
    // 打印API响应内容进行调试
    var_dump($res);
    http_response_code(500);
    echo json_encode(['error' => 'Invalid API response']);
    exit;
}
// 提取p值
$p = trim($resArr['p'], '/');
// 构建下载链接
$downUrl = "http://note.youdao.com/yws/api/personal/file/{$p}?method=download&inline=true&shareKey={$id}";
// 返回下载链接
if ($json) {
    echo json_encode(['downloadUrl' => $downUrl]);
} else {
    echo $downUrl;
}

使用方法:

1、上传至服务器

2、访问文件的地址即可使用

你的网址/ydy.php/?url=有道云笔记文件分享链接&json=true

Type参数详解

url:有道云笔记文件分享地址(支持短链接)

json:非必须,是否返回 json 格式


版权声明:文章搜集于网络,如有侵权请联系本站,转载请说明出处:https://www.51yma.cn/jiaocheng/php/1454.html
文章来源: