<?php
// 从 URL 查询字符串获取频道号
$channelNo = isset($_GET['ch']) ? $_GET['ch'] : '332'; // 如果没有提供,则默认使用 332
// 初始化 cURL 执行第一次请求
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://nowplayer.now.com/liveplayer/play/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "channelNo=" . $channelNo, // 使用动态的频道号
CURLOPT_HTTPHEADER => [
"Cookie: NOW_SESSION=这里填你的cookie",
"Referer: https://nowplayer.now.com/liveplayer/" . $channelNo, // 动态的 referer
"User-Agent: ua也需与请求ua一致",
]
]);
// 执行第一次 cURL 请求并获取响应
$response = curl_exec($curl);
// 获取 HTTP 状态码
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// 关闭 cURL
curl_close($curl);
// 检查 cURL 请求是否成功
if ($response === false) {
echo "无法从服务器获取响应。";
exit;
}
// 检查 HTTP 响应状态码
if ($httpCode !== 200) {
echo "错误:无法获取视频流,HTTP 状态码:" . $httpCode;
exit;
}
// 解析 JSON 响应
$data = json_decode($response, true);
// 检查 'asset' 字段是否存在并提取 URL
if (isset($data['asset'][0])) {
$assetUrl = $data['asset'][0]; // 这是第二次请求的目标链接
// 执行第三次请求(通过第二次请求的 assetUrl)
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $assetUrl, // 使用第二次请求的链接
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0"
]
]);
// 执行第三次请求并获取响应
$thirdResponse = curl_exec($curl);
// 获取第三次请求的 HTTP 状态码
$thirdHttpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// 获取第三次请求的最终 URL(即重定向后的链接)
$finalUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
// 关闭 cURL
curl_close($curl);
// 检查第三次请求是否成功
if ($thirdResponse === false) {
echo "无法从第三次请求获取响应。";
exit;
}
// 检查 HTTP 响应状态码
if ($thirdHttpCode !== 200) {
echo "错误:第三次请求失败,HTTP 状态码:" . $thirdHttpCode;
exit;
}
// 重定向到第三次请求的最终 URL
header("Location: " . $finalUrl);
exit; // 结束脚本执行,确保重定向生效
} else {
echo "响应中未找到 Asset URL。";
}
?>
http://ip/now.php?ch=频道号 此脚本要求香港ip 最好能解锁now tv的 免费频道有 330 331 332 333 366 367 540 541 542 543 545 548 630 099 096 561 321 328 552 325 553 329 付费频道也可以 cookie 可用 https://www.editthiscookie.com/ 插件抓 96 用以下脚本 无需cookie
<?php
// 生成随机的 UUID 或 16 进制的随机字符串
function generateRandomString($length = 16) {
return bin2hex(random_bytes($length / 2)); // 生成指定长度的 16 进制字符串
}
// 生成随机的 cookie 和 deviceId
$randomString = generateRandomString(); // 生成随机的字符串
$cookie = $randomString;
$deviceId = $randomString;
// 发送 POST 请求的 URL
$url = 'https://api.viu.now.com/p8/3/getLiveURL';
// 要发送的 POST 数据(JSON 格式)
$data = array(
"callerReferenceNo" => "20241111101911",
"channelno" => "096",
"contentId" => "096",
"contentType" => "Channel",
"mode" => "prod",
"PIN" => "password",
"cookie" => $cookie, // 使用生成的随机 cookie
"deviceId" => $deviceId, // 使用生成的随机 deviceId
"deviceType" => "ANDRIOD_WEB",
"format" => "HLS"
);
// 将数据数组转换为 JSON 字符串
$json_data = json_encode($data);
// 初始化 cURL 会话
$ch = curl_init($url);
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应作为字符串
curl_setopt($ch, CURLOPT_POST, true); // 设置请求类型为 POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); // 设置 POST 数据(JSON 格式)
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: */*',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Cache-Control: no-cache',
'Content-Type: text/plain',
'Origin: https://viu.tv',
'Pragma: no-cache',
'Priority: u=1, i',
'Referer: https://viu.tv/',
'Sec-CH-UA: "Chromium";v="130", "Microsoft Edge";v="130", "Not?A_Brand";v="99"',
'Sec-CH-UA-Mobile: ?0',
'Sec-CH-UA-Platform: "macOS"',
'Sec-Fetch-Dest: empty',
'Sec-Fetch-Mode: cors',
'Sec-Fetch-Site: cross-site',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0'
));
// 执行 cURL 请求并存储响应
$response = curl_exec($ch);
// 检查是否有 cURL 错误
if(curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
// 解析 JSON 响应
$data = json_decode($response, true);
// 获取视频流的 manifest URL
$manifest_url = $data['asset'][0];
// 第二次请求:访问视频流的 manifest URL
$ch2 = curl_init($manifest_url);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); // 返回响应
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向
curl_setopt($ch2, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0'
));
// 执行第二次请求
$response2 = curl_exec($ch2);
// 获取第二次请求后的 URL
$second_url = curl_getinfo($ch2, CURLINFO_EFFECTIVE_URL);
// 第二次请求是否还有更多重定向
$ch3 = curl_init($second_url);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); // 返回响应
curl_setopt($ch3, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向
curl_setopt($ch3, CURLOPT_HTTPHEADER, array(
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0'
));
// 执行第三次请求并获取最终 URL
curl_exec($ch3);
$final_url = curl_getinfo($ch3, CURLINFO_EFFECTIVE_URL);
// 关闭第三次请求的 cURL 会话
curl_close($ch3);
// 重定向到最终 URL
header("Location: $final_url");
exit();
}
// 关闭第一次请求的 cURL 会话
curl_close($ch);
?>
cookie获取后输入https://now.473.hk/ 都是显示 错误:响应中未找到 Asset URL(不能使用)。但我登录后在网页都能观看,请问这个是否还有效?