苹果cmsV10集成pansou系统能力:增加网盘资源搜片/采集功能

机器人
摘要
Mxchild
生成中...

一、功能说明

苹果cms系统通常通过资源站采集接口实现资源采集,包括下载地址资源。本篇主要介绍通过集成pansou系统能力,让苹果cms集在线播放、网盘资源分享于一身:支持百度网盘、夸克网盘、迅雷云盘、阿里云盘、天翼云盘、UC网盘、115网盘。

二、效果预览

图片[1] - 苹果cmsV10集成pansou系统能力:增加网盘资源搜片/采集功能 - 迅维博客网

三、核心流程

┌─────────────────────────────────────────────────────────────┐
│ 网页  (用户浏览器)                                            │
│   ├─ 影片详情页 /vod-24620.html                              │
│   │   └─ 新增"网盘下载"区块,展示网盘链接列表                    │
│   │   └─ "一键搜片"按钮(Ajax 调用后端 API)                    │
│   └─ (可选) 播放页 /play/24620-1-1.html 也展示网盘             │
└────────────────────┬────────────────────────────────────────┘
                     │ 同源 AJAX
                     ▼
┌─────────────────────────────────────────────────────────────┐
│ 网站 后端 (PHP,maccms V10)                                   │
│   ├─ 新增 API 网关 /index.php/api/pansou/search               │
│   │   ├─ 鉴权 (X-Search-Token)                               │
│   │   ├─ Redis 缓存 (key: xxx:pan:<md5kw>, ttl=900s)         │
│   │   │   └─ 文件缓存降级(Redis 不可用时)                     │
│   │   ├─ 调用 https://127.0.01/api/search(盘搜)             │
│   │   ├─ 解析 → 按网盘分类                                    │
│   │   └─ 一键入库开关 → 写 mac_vod_pan 表                     │
│   ├─ 新表 mac_vod_pan (vod_id, pan_type, pan_url, ...)      │
│   ├─ 新增模板标签 {:pan_list} 在详情页渲染                      │
│   └─ 后台控制器 /admin.php/pan/index                          │
│       └─ 手动搜片入库 + 定时任务 cron                          │
└────────────────────┬────────────────────────────────────────┘
                     │ HTTPS
                     ▼
┌─────────────────────────────────────────────────────────────┐
│ https://127.0.01/api/search  (Go 后端,pansou-web 镜像)       │
│   └─ 已有 /api/search + 87 个网盘插件 + N 个 TG 频道           │
│      (当前 28 个 plugin + 1 个 tgsearchers3)                │
└─────────────────────────────────────────────────────────────┘

后台的逻辑其实也挺简单,核心流程可以总结为五步:

  1. 校验权限
    先安全验证,从请求头读 X-Search-Token,和后台配置的 token 对比,不对就拒绝访问。
  2. 读缓存、并发抓取
    用关键词去 Redis 看有没有缓存,命中就直接返回;没缓存时,用 curl_multi 并发请求所有配置好的 Telegram 频道搜索页面。
  3. 挑最新、抽信息
    解析每个页面,找出带时间戳的最新一条消息,然后从那条消息中提取出资源标题和所有符合支持网盘关键字的下载链接。
  4. 去重合并、按网盘分组
    把同一个链接只保留最新一条记录,同一组消息里的多个链接合并,然后根据 URL 里的网盘关键字,把它们分类到“百度网盘”“阿里云盘”……或“其它网盘”。
  5. 返回并缓存结果
    最终输出一个 JSON:包含“数据来源”标识(缓存还是实时)、按网盘类型分好的数据或“没有找到”提示,同时把结果写入 Redis(默认缓存 900 秒)和数据库。

默认是不会自动搜索入库的,需要用户手动点击一键搜片按钮,后台才会自动入库,当然也可以做成自动的,比如定时更新搜索入库今日更新等等。

四、部分配置文件

<?php
return [
    // 搜索接口专用的私有 Token,防止被调用
    'search_api_token' => 'f5a8e3b1e9f0a1b2c3',
    
    'search_cache_ttl' => 900, // 搜索结果缓存时间,单位秒,900=15分钟
    
    'enable_logging'   => false,  // 开启入库日志;设为 false 或删除此行则关闭
    
    // 允许的 Referer 域名列表(必须以 / 结尾)
    'allowed_referer_domains' => [
        'https://*****.com/',
        'https://www.*****.com/',
    ],
    
    //搜索服务器列表,部署多台服务器负载均衡,防止被封
    'backends' => [
    'https://*****.com/t_search/search.php',
    //'https://www.*121*.com/t_search/search.php',
    //'https://www.*212*.com/t_search/search.php',    
    ],

    // 频道列表
    'channels' => [
        //综合
        'alyp_1', //网盘(高品质)影视
        'XiangxiuNB', //肯德基の4K影视综合电影云盘站
        'PanjClub', //盘酱酱Club🌈
        'Oscar_4Kmovies', //奥斯卡4K蓝光(精品)影视
        'qixingzhenren', //云盘资源发布频道
        'zhenyingsg',//帧影时光
        'CBduanju',//全网擦边|电影|资源分享
        'gotopan',//网盘资源分享频道
    ],

    // User-Agent 列表,用于抓取时随机选用,避免被封
    'user_agents' => [
        // Windows
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0",
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    
        // macOS
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_3_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.3 Safari/605.1.15",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.129 Safari/537.36",
    ],

    // 支持的网盘链接配置(整合域名和中文名称)
    'supported_netdisks' => [
    // 百度网盘(可加多个关键字)
    [ 'keyword' => 'pan.baidu.com',    'name' => '百度网盘' ],
    [ 'keyword' => '百度网盘',         'name' => '百度网盘' ],
    [ 'keyword' => '百度云盘',         'name' => '百度网盘' ],
    // 夸克网盘
    [ 'keyword' => 'pan.quark.cn',     'name' => '夸克网盘' ],
    [ 'keyword' => '夸克网盘',         'name' => '夸克网盘' ],
    [ 'keyword' => '夸克云盘',         'name' => '夸克网盘' ],
    // 阿里云盘所有别名
    [ 'keyword' => 'aliyundrive.com',  'name' => '阿里云盘' ],
    [ 'keyword' => 'www.alipan.com',   'name' => '阿里云盘' ],
    [ 'keyword' => '阿里网盘',         'name' => '阿里云盘' ],
    [ 'keyword' => '阿里云盘',         'name' => '阿里云盘' ],
    // 迅雷云盘所有别名
    [ 'keyword' => 'pan.xunlei.com',   'name' => '迅雷云盘' ],
    [ 'keyword' => 'xunlei.com',       'name' => '迅雷云盘' ],
    [ 'keyword' => 'thunder://',       'name' => '迅雷云盘' ],
    [ 'keyword' => '迅雷网盘',         'name' => '迅雷云盘' ],
    [ 'keyword' => '迅雷云盘',         'name' => '迅雷云盘' ],
    // 天翼
    [ 'keyword' => 'cloud.189.cn',     'name' => '天翼云盘' ],
    [ 'keyword' => '天翼网盘',         'name' => '天翼云盘' ],
    [ 'keyword' => '天翼云盘',         'name' => '天翼云盘' ],
    // 115
    [ 'keyword' => '115cdn.com',       'name' => '115网盘' ],
    [ 'keyword' => '115.com',          'name' => '115网盘' ],
    [ 'keyword' => 'anxia.com',        'name' => '115网盘' ],
    [ 'keyword' => '115云盘',          'name' => '115网盘' ],
    [ 'keyword' => '115网盘',          'name' => '115网盘' ],
    // 其它
    [ 'keyword' => 'magnet:?',         'name' => '磁力链接' ],
    [ 'keyword' => '磁力链接',         'name' => '磁力链接' ],
    [ 'keyword' => 'ed2k://',          'name' => '电驴链接' ],
    [ 'keyword' => '电驴链接',         'name' => '电驴链接' ],
    [ 'keyword' => 'drive.uc.cn',      'name' => 'UC网盘' ],
    [ 'keyword' => 'UC网盘',           'name' => 'UC网盘' ],
    [ 'keyword' => 'UC云盘',           'name' => 'UC网盘' ],
    [ 'keyword' => '123684.com',       'name' => '123云盘'],
    [ 'keyword' => '123云盘',          'name' => '123云盘'],
    [ 'keyword' => '123网盘',          'name' => '123云盘'],
    [ 'keyword' => 'znas.cn',          'name' => '私有云盘'],
    // ...
    ],
];

我这个三脚猫水平是不可能写代码的,基本都是交给chatGPT来搞定。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容