大米CMS官网论坛,大米站长联盟,大米站长之家,大米开发者社区

 找回密码
 注册大米会员

QQ登录

只需一步,快速开始

查看: 5106|回复: 0
打印 上一主题 下一主题

【原创】https后无法引用http直播资源,PHP转发无加密的hls...

[复制链接]

498

主题

775

帖子

7639

积分

超级版主

Rank: 8Rank: 8

积分
7639

授权用户

跳转到指定楼层
楼主
发表于 2021-8-18 10:26:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 追影 于 2021-8-21 12:57 编辑
  1. <?php
  2. error_reporting(0);
  3. header("ACCESS-CONTROL-ALLOW-ORIGIN:*");

  4. function get_url_contents($url)
  5. {
  6.     if (function_exists('curl_init')) {
  7.         $ch = curl_init();
  8.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  9.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  10.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  11.         curl_setopt($ch, CURLOPT_URL, $url);
  12.         $result = curl_exec($ch);
  13.         curl_close($ch);
  14.         return $result;
  15.     } else {
  16.         if (ini_get("allow_url_fopen") == "1") {
  17.             return file_get_contents($url);
  18.         }
  19.     }
  20. }

  21. function resolve_hls($url)
  22. {
  23.     $url = trim(urldecode($url));
  24.     $old = pathinfo($url);
  25.     $m3u8 = get_url_contents($url);
  26.     if (!empty($old['dirname'])) {
  27.         if (strpos($m3u8,'EXT-X-STREAM-INF')!== false) {
  28.             try {
  29.                 preg_match_all('/([\S]+)(\.m3u8)+(.*)?/i', $m3u8, $match);
  30.                 $new = $match[0][0];
  31.                 if (stripos($new, 'http:') !== false || stripos($new, 'https:') !== false || substr($new, 0, 2) == '//') {
  32.                     $newUrl = $new;
  33.                 } else {
  34.                     $newUrl = $old['dirname'] . '/' . $new;
  35.                 }
  36.                 resolve_hls($newUrl);
  37.             }catch (\Exception $exception) {
  38.                 echo $exception->getMessage();
  39.             }
  40.         } else {
  41.             try {
  42.                 preg_match_all('/([\S]+)(\.ts)+(.*)?/i', $m3u8, $match_ts);
  43.                 if(empty($match_ts[0][0])){
  44.                     preg_match_all('/([\S]+)(\.aac)+(.*)?/i', $m3u8, $match_ts);
  45.                 }
  46.                 $new = $match_ts[0][0];
  47.                 if (stripos($new, 'http:') !== false || stripos($new, 'https:') !== false || substr($new, 0, 2) == '//') {
  48.                     $newUrl = '';

  49.                 } else {
  50.                     $newUrl = $old['dirname'] . '/';
  51.                 }
  52.                 echo preg_replace_callback('/([\S]+)(\.ts)+(.*)?/i', function ($mtches) use ($newUrl){
  53.                     return 'https://qianxun.damicms.com/transhls.php?action=' . urlencode($newUrl . $mtches[0]);
  54.                     }, $m3u8);
  55.             } catch (\Exception $exception) {
  56.                 echo $exception->getMessage();
  57.             }
  58.         }
  59.     }
  60. }
  61. if (!empty($_GET['url'])) {
  62.     $url = urldecode($_GET['url']);
  63.     resolve_hls($url);
  64. } else if(!empty($_GET['action'])){
  65.     $url2 = trim(urldecode($_GET['action']));
  66.     $m3u8 = get_url_contents($url2);
  67.     echo $m3u8;
  68. }

  69. ?>
复制代码
当网站升级https后发现网站引用http的hls资源无发播放
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册大米会员

本版积分规则

QQ|小黑屋|大米CMS社区 ( 蜀ICP备11002200号-2广告联系:广告联系 

Powered by 大米CMS

© 2010-2020 大米CMS Inc.

快速回复 返回顶部 返回列表