苹果cms让资源站地址可以匹配官方弹幕

苹果cms让资源站地址可以匹配官方弹幕

<?php
error_reporting(0);
    header('Content-type:text/json');
//只要苹果cms采集有官方链接   资源站弹幕就会匹配
//使用教程设置好  苹果cms数据库  就可以   远程数据库也行
//BY: 小云    
  $api = "https://dm.jlzj.xyz/dmku/?ac=dm&url=";  //弹幕接口
   $ml = "dm/dm/";  //目录
   if (!file_exists($ml)) {
    if (mkdir($ml, 0777, true)) {
    }
    }
   $jm = $_GET["url"];
   
   if(strstr($jm,"index.m3u8")){
       
       
   if(empty($jm) == true) {
        $data['code'] = 201;
        $data['调用ip'] = $userip;
        $data['msg'] = '缺少参数';
        exit(json_encode($data, 456));
    }
  $file = $ml . md5($jm) . '.m3u8';  
    if (file_exists($file) == true) {
        $url = file_get_contents($file);
            //   $data['code'] = 200;
             //   $data['url'] = $url;
             //   $data['yurl'] = $jm;
             //   exit(json_encode($data, 456));
                header('cache-control:public'); 
    header('Access-Control-Allow-Origin:*');
    header('content-type:application/octet-stream;'); 
                 header("Location: $api$url");
            exit();
                
}
    
    
//$servername = "99.885.82.65:3306";   //远程服务器ip
$servername = "localhost";//本地服务器
$username = "";//服务器账号
$dbname = "";//服务器账号
$password = "";//服务器密码

$conn = mysqli_connect($servername, $username, $password, $dbname);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT * FROM `mac_vod` WHERE `vod_play_url` LIKE '%$jm%'";
$result = mysqli_query($conn, $sql);

if (!$result) {
    die("Query failed: " . mysqli_error($conn));
}

while ($row = mysqli_fetch_assoc($result)) {
   // echo $row["vod_play_url"];
  mysqli_close($conn);  
  
  
if(strstr($row["vod_play_url"],"qq.com") == true  || strstr($row["vod_play_url"],"iqiyi.com") == true  || strstr($row["vod_play_url"],"youku.com") == true  || strstr($row["vod_play_url"],"mgtv.com") == true  || strstr($row["vod_play_url"],"bilibili.com") == true) {
     $str = $row["vod_play_url"];
$array = explode('$$$', $str);

$pattern = '/qq\.com|iqiyi\.com|youku\.com|mgtv\.com|bilibili\.com/';
foreach ($array as $key1 => $value) {
    if (preg_match($pattern, $value)) {
       // echo "匹配键名:$key1\n";/////////////
        
      $count = count(array_filter($array));
    
  if ($count > 1) {
   //$array = $array[2];
foreach ($array as $key => $value) {
    if (strpos($value, $jm) !== false) { // 查找包含“香”的值
        
    
        $array1 = explode('#', $array[$key]);

// 步骤1:直接查找索引
//$index = array_search('https://v.cdnlz3.com/20250219/33896_74eb80a8/index.m3u8', $array1); 
foreach ($array1 as $key => $value) {
    if (strpos($value, $jm) !== false) { // 查找包含“香”的值
        
        
        $array2 = explode('#', $array[$key1]);
        
        
        
        $position = strpos($array2[$key], '$');

if ($position !== false) {
    $url = substr($array2[$key], $position + 1);
    //echo $array2[$key];
    //echo $rightPart;
    file_put_contents($file,$url);
               // $data['code'] = 200;
              //  $data['url'] = $url;
              //  $data['yurl'] = $jm;
               //  echo json_encode($data,456); 
                 
                 header('cache-control:public'); 
    header('Access-Control-Allow-Origin:*');
    header('content-type:application/octet-stream;'); 
                 header("Location: $api$url");
            exit();
}
    }
}
}
}
}    
  }
}
} 
}
}
header('cache-control:public'); 
    header('Access-Control-Allow-Origin:*');
    header('content-type:application/octet-stream;'); 
                 header("Location: $api$jm");
            exit();
?>

对接播放器:

7b2ae5d08920250429034020

 

好的,我现在需要帮助用户理解如何正确使用他们提供的PHP脚本。首先,我需要仔细阅读这个脚本的功能和代码结构,然后将其转化为用户友好的步骤指南。

用户提供的PHP脚本看起来是一个用于苹果CMS的弹幕接口服务。根据代码注释,它的主要功能是:当苹果CMS采集的视频有官方链接时,资源站的弹幕会自动匹配。用户需要设置好数据库,并可能需要进行远程数据库配置。脚本通过处理传入的URL参数,查询数据库,找到对应的视频源地址,然后重定向到弹幕接口。

首先,我需要确认这个脚本的基本流程:

  1. 用户通过GET请求传入一个URL参数。
  2. 脚本检查URL是否包含”index.m3u8″,如果是,则进行后续处理。
  3. 检查缓存目录是否存在,不存在则创建。
  4. 如果缓存文件存在,直接读取缓存内容并重定向到弹幕接口。
  5. 如果缓存不存在,连接数据库,查询mac_vod表中vod_play_url字段包含传入URL的记录。
  6. 从查询结果中解析出正确的视频源地址,保存到缓存,并重定向到弹幕接口。

接下来,用户的问题是如何使用这个PHP脚本。我需要将这个使用过程分解为具体的步骤,包括环境准备、配置调整、部署步骤以及测试方法。

首先,用户需要具备的环境和前提条件:

  • PHP环境(版本需兼容代码中的函数,比如mysqli扩展)
  • Web服务器(如Apache、Nginx)
  • 苹果CMS数据库访问权限(本地或远程)
  • 正确配置数据库连接参数

然后,配置脚本的步骤:

  1. 修改数据库连接信息:用户需要填写正确的数据库服务器地址、用户名、密码和数据库名。在代码中,目前这些字段为空,用户需要根据实际情况填写。
  2. 弹幕接口和缓存目录的设置:用户可能需要确认弹幕接口的URL是否正确,缓存目录的路径是否有写入权限。
  3. 部署脚本到服务器:用户需要将PHP文件上传到Web服务器的适当目录,确保可通过URL访问。
  4. 权限设置:确保缓存目录(dm/dm/)具有可写权限,可能需要设置0755或0777权限,但要注意安全性。

使用步骤:

用户通过构造特定的URL来调用这个脚本,例如:http://example.com/script.php?url=视频URL。脚本处理后,会返回对应的弹幕数据或重定向到弹幕接口。

测试和验证:

用户需要确保数据库查询能够正确执行,并且视频URL的解析逻辑有效。可能需要进行错误排查,比如检查数据库连接、SQL查询是否成功,以及缓存文件是否正确生成。

潜在的问题和解决方案:

  • 数据库连接失败:检查数据库配置是否正确,网络是否通畅,防火墙设置等。
  • SQL注入风险:代码中直接拼接用户输入的URL到SQL查询,存在安全隐患。建议用户使用预处理语句来防止SQL注入。
  • 缓存目录权限问题:如果目录无法创建或写入,需要检查服务器权限设置。
  • URL参数错误:如果传入的URL不符合预期,可能导致查询结果为空或解析错误。

安全建议:

由于脚本中存在SQL注入漏洞和可能的路径遍历风险,用户需要了解这些安全隐患,并采取相应措施,如使用预处理语句、过滤用户输入等。

最后,需要将这些思考整理成用户容易理解的步骤指南,确保语言简洁明了,步骤清晰,覆盖配置、部署、使用和测试的全过程。同时,提醒用户注意安全性和常见问题,帮助他们顺利使用这个脚本。

以下是对该PHP脚本的详细使用说明,包含部署步骤、配置要点及安全建议:

一、功能说明

这是一个苹果CMS视频弹幕匹配接口,核心功能:

  1. 根据视频URL匹配官方源地址(腾讯/爱奇艺等)
  2. 缓存解析结果提升性能
  3. 对接第三方弹幕接口

二、部署流程

1. 环境准备

# 安装PHP+MySQL环境(以Ubuntu为例) sudo apt install php mysql-server php-mysql chmod -R 755 /var/www/html/ # 确保缓存目录可写

2. 文件部署

# 创建项目目录 mkdir -p /var/www/html/dmapi/ # 上传脚本并重命名 mv your_script.php /var/www/html/dmapi/index.php

3. 数据库配置

// 修改脚本中的数据库连接部分 $servername = "localhost"; // 远程数据库填IP:端口 $username = "cms_user"; // 数据库用户名 $password = "SecurePass123!"; // 数据库密码 $dbname = "apple_cms_db"; // 数据库名称

三、使用方法

1. 基础调用

GET /dmapi/?url=https://example.com/video/index.m3u8

2. 参数说明

参数 必填 示例值 说明
url 视频m3u8地址 需要带index.m3u8后缀

3. 响应处理

  • 匹配成功:302重定向到弹幕接口
  • 未匹配:直接转发原始URL到弹幕接口
  • 错误响应示例:
{ "code": 201, "调用ip": "192.168.1.1", "msg": "缺少参数" }

四、安全加固建议

1. 防御SQL注入

// 修改查询部分为预处理语句 $stmt = $conn->prepare("SELECT * FROM mac_vod WHERE vod_play_url LIKE ?"); $search_term = "%" . $jm . "%"; $stmt->bind_param("s", $search_term); $stmt->execute();

2. 目录权限优化

# 限制缓存目录权限 chown www-data:www-data dm/dm/ chmod 750 dm/dm/

3. 输入验证

// 添加URL格式验证 if(!preg_match('/^https?:\/\/.*index\.m3u8$/', $jm)){ http_response_code(400); exit("Invalid URL format"); }

五、调试技巧

1. 日志记录

phpCopy Code
 
 
// 在关键位置添加日志
file_put_contents('debug.log', date('[Y-m-d H:i:s]')." Processing: $jm\n", FILE_APPEND);

2. 错误排查流程

graph TD A[请求无响应] --> B{检查错误日志} B -->|连接失败| C[验证数据库配置] B -->|查询为空| D[检查vod_play_url字段] B -->|权限问题| E[检查目录权限]

3. 性能优化建议

  1. 添加缓存过期机制
// 在文件存在检查处添加时间判断 if (file_exists($file) && time()-filemtime($file) < 3600) { // 使用缓存 }
  1. 建立数据库索引
ALTER TABLE mac_vod ADD INDEX idx_vodurl (vod_play_url(255));

六、典型应用场景

1. 播放器集成示例

<video controls> <source src="/dmapi/?url=<?=%20$videoUrl%20?>" type="application/x-mpegURL"> </video>

2. 弹幕显示效果

// 使用第三方弹幕库 const dmPlayer = new DanmakuPlayer({ url: '/dmapi/?url=' + encodeURIComponent(videoUrl) });

该脚本需配合苹果CMS的数据库结构使用,核心是通过解析vod_play_url字段中的多源地址配置,实现官方视频源的精准匹配。建议在测试环境充分验证后再部署到生产环境。

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

    暂无评论内容