php - 检查 m3u8 播放列表是否可用于 cURL
问题描述
我有一个 cURL 脚本,我一直用它来检查 te 服务器上是否存在 m3u8 文件,所以是的,然后播放 mp4 文件,所以不,然后让离线看图片。
但从昨天开始,脚本不再工作了。我用curl检查了m3u8文件是否存在,然后在http代码200上。有没有另一种方法来检查m3u8文件是否存在于服务器上?
<?php
function url_test( $url ) {
$timeout = 10;
$ch = curl_init();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
$http_respond = curl_exec($ch);
$http_respond = trim( strip_tags( $http_respond ) );
$http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
if ( ( $http_code == "200" ) || ( $http_code == "302" ) ) {
return true;
} else {
// return $http_code;, possible too
return false;
}
curl_close( $ch );
}
$website = "***.m3u8";
if( !url_test( $website ) ) {
echo $website ." is down!";
}
else { echo $website ." functions correctly."; }
?>
为什么这不再起作用了?cURL 说该文件不在服务器上,但我可以用我的笔记本电脑在同一个链接上下载它。
谁能帮忙?
谢谢。
马夫
解决方案
打开浏览器,按 F12,然后在按 F12 时刚刚打开的框中选择“网络”选项卡。然后将 m3u8 url 粘贴到浏览器地址栏中并回车。该请求必须显示在“网络”部分的请求列表中。点击请求,查看你从服务器收到的 HTTP 状态码;它可能是 200 或 302 之外的另一个(您在脚本中涵盖的情况)。
我还要补充:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
推荐阅读
- firebase - Firebase ML Kit 即使在 Flutter 应用程序中为相同的面孔提供不同的人脸跟踪 ID
- c - 多线程测试 C 应用程序挂起,除非使用 printf
- arrays - 在矩阵中查找最接近参考的值,按列
- matlab - 以下具有线性和非线性约束的优化问题的解决方案是什么?
- sql - 单表分组的 SQL 限制 10
- polymer - 更新元素属性绑定
- mongodb - MongoDB根据条件计算对象字段
- javascript - 如何迭代 Typescript 接口属性?
- c# - 如何将 .NET 项目引用提取到单独的文件中?
- javascript - 如何使用递归查找多维数组中的重复值