首页 > 解决方案 > 检查 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 说该文件不在服务器上,但我可以用我的笔记本电脑在同一个链接上下载它。

谁能帮忙?

谢谢。

马夫

标签: phphtmlcurlm3u8

解决方案


打开浏览器,按 F12,然后在按 F12 时刚刚打开的框中选择“网络”选项卡。然后将 m3u8 url 粘贴到浏览器地址栏中并回车。该请求必须显示在“网络”部分的请求列表中。点击请求,查看你从服务器收到的 HTTP 状态码;它可能是 200 或 302 之外的另一个(您在脚本中涵盖的情况)。

我还要补充:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

推荐阅读