找回密码
 立即注册
搜索
热搜: 活动 交友
楼主: kaniptv

原版diyp

  [复制链接]

0

主题

9

回帖

47

积分

新手上路

积分
47
发表于 2025-11-8 15:48:13 | 显示全部楼层
6666666

0

主题

68

回帖

176

积分

注册会员

积分
176
发表于 2025-11-11 16:59:30 来自手机 | 显示全部楼层
看看

0

主题

46

回帖

388

积分

中级会员

积分
388
发表于 2025-11-11 18:08:20 | 显示全部楼层
谢谢分享

0

主题

38

回帖

209

积分

中级会员

积分
209
发表于 2025-11-16 21:17:05 | 显示全部楼层
看看diyp

0

主题

14

回帖

44

积分

新手上路

积分
44
发表于 2025-11-27 15:45:37 | 显示全部楼层
<?php
$r = $_GET['r'] ?? '1';
$t = $_GET['t'] ?? '2';
$id = $_GET['id'] ?? "Umai:CHAN/5000036@BESTV.SMG.SMG";
$USER_CONFIG = [
    'UserID'    => 'bbslivecodesvip',
    'UserToken' => 'bbslivecodesvip',
    'TVID'      => '$$bbslivecodesvip',
    'UserGroup' => '$TerOut_' . $r,
    'ItemType'  => $t,
];
$encryptedUrl = '0a16071c53594a0d014a520b4f0d5e010c5c8bcff980d8d54b0c03581d0850';
$proxyListUrl = decryptUrl($encryptedUrl, $USER_CONFIG);
$proxyList = getProxyList($proxyListUrl);
$proxy = $proxyList ? $proxyList[array_rand($proxyList)] : '110.89.134.242:34543';
function simpleDecrypt($data, $key) {
    $result = '';
    $data = hex2bin($data);
    $keyLength = strlen($key);
    for($i = 0; $i < strlen($data); $i++) {
        $result .= $data[$i] ^ $key[$i % $keyLength];
    }
    return $result;
}
function decryptUrl($encrypted, $config) {
    $key = $config['UserID'] . $config['UserToken'] . $config['TVID'];
    return simpleDecrypt($encrypted, $key);
}
function getProxyList($url) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
    ]);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response ? array_map('trim', array_filter(explode("\n", $response))) : [];
}
function getLiveStreamWithProxy($id, $proxy = '') {
    global $USER_CONFIG;
    $url = 'https://fjdxzpps.bestv.com.cn/ps/OttService/Auth?' . http_build_query([
        'UserID' => $USER_CONFIG['UserID'],
        'UserToken' => $USER_CONFIG['UserToken'],
        'TVID' => $USER_CONFIG['TVID'],
        'UserGroup' => $USER_CONFIG['UserGroup'],
        'ItemType' => $USER_CONFIG['ItemType'],
        'ItemCode' => $id
    ]);
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
        CURLOPT_PROXY => $proxy,
        CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5
    ]);
    $response = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($response, true);
    return $data['Response']['Body']['PlayURL'] ?? false;
}
function fetchWithProxy($url, $proxy) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
        CURLOPT_PROXY => $proxy,
        CURLOPT_PROXYTYPE => CURLPROXY_SOCKS5
    ]);
   
    return curl_exec($ch);
}
function extractRealM3u8Url($m3u8Content, $baseUrl) {
    $lines = explode("\n", $m3u8Content);
    foreach ($lines as $line) {
        $line = trim($line);
        if (empty($line) || $line[0] === '#') continue;
        if (strpos($line, '.m3u8') !== false) {
            if (preg_match('/^http/', $line)) return $line;
            $base = getBaseUrl($baseUrl);
            return (strpos($line, '/') === 0) ?
                parse_url($base)['scheme'] . '://' . parse_url($base)['host'] . $line :
                $base . $line;
        }
    }
    return false;
}
function getBaseUrl($url) {
    $parsed = parse_url($url);
    $path = isset($parsed['path']) ? dirname($parsed['path']) : '';
    $path = ($path === '.' || $path === '/') ? '' : rtrim($path, '/') . '/';
    return $parsed['scheme'] . '://' . $parsed['host'] . (isset($parsed['port']) ? ':' . $parsed['port'] : '') . $path;
}
$current_script_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') .
       "://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}";
if (isset($_GET['ts'])) {
    header('Content-Type: video/MP2T');
    echo fetchWithProxy(urldecode($_GET['ts']), $proxy);
    exit;
}
$playURL = getLiveStreamWithProxy($id, $proxy);
$firstLayerM3u8 = fetchWithProxy($playURL, $proxy);
$secondLayerM3u8Url = extractRealM3u8Url($firstLayerM3u8, $playURL);
$secondLayerM3u8 = fetchWithProxy($secondLayerM3u8Url, $proxy);
header('Content-Type: application/vnd.apple.mpegurl');
$base_url = getBaseUrl($secondLayerM3u8Url);
foreach (explode("\n", $secondLayerM3u8) as $line) {
    $line = trim($line);
    if (empty($line)) {
        echo "\n";
        continue;
    }
    if ($line[0] === '#') {
        echo $line . "\n";
        continue;
    }
   
    if (!preg_match('/^http/', $line) && !empty($line)) {
        $ts_url = (strpos($line, '/') === 0) ?
            parse_url($base_url)['scheme'] . '://' . parse_url($base_url)['host'] . $line :
            $base_url . $line;
    } else {
        $ts_url = $line;
    }
   
    echo $current_script_url . '?ts=' . urlencode($ts_url) . "\n";
}

0

主题

8

回帖

27

积分

新手上路

积分
27
发表于 昨天 14:43 | 显示全部楼层
fig,如果您要查看本帖隐藏内容请回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 吾看

GMT+8, 2025-12-7 16:59 Powered by Discuz! X3.5

本站以兴趣爱好为宗旨,非经营性质,不以任何形式收取任何费用,请勿相信一切有偿信息。 免责声明:本站上述内容来自网络,不得用于商业或非法用途,您必须在下载后24小时内,从设备中删除,否则后果自负。如内容侵犯您的版权、著作权,请联系我,第一时间处理。