我使用以下代码从网站获取视频网址的 get_file_contents:
<?php $get = file_get_contents("https://vidhd.net/embed-bc3c7z8e8pmt.html");
$regex = '/(https|http)[^"]*(?=",label)/';
if (preg_match_all($regex, $get, $allurlget)){
foreach($allurlget[0] as $getlist) {
$TakeJsonToList[] = $getlist;}
if (count($TakeJsonToList) == 3){
$Makejson = array ('p720' => $TakeJsonToList[0],
'p480' => $TakeJsonToList[1],
'p360' => $TakeJsonToList[2]);
}else if (count($TakeJsonToList) == 2){
$Makejson = array ('p720' => $TakeJsonToList[0],
'p480' => $TakeJsonToList[1]);
}else{
$Makejson = array ('p720' => $TakeJsonToList[0]);
}
echo json_encode($Makejson);}
else{
$filenotfound = 'Url Not Found';
$error = json_encode(array('error'=> $filenotfound));
echo ($error);
}
现在我将输出作为 json 像这样:
{"p720":"https:\/\/s4.vidhd.net\/kmxssvaapjumwmesrlvuyy72hjmxnedreq2ahr5kil6qqt373orzkuun4ccq\/v.mp4","p480":"https:\/\/s4.vidhd.net\/kmxssvaapjumwmesrlvuyy72hjmxnedreq2ahr5kiriqqt373or7r273xqrq\/v.mp4"}
但是当我提出请求时,另一个网络“Vidhd” 使用我的网站 ip 制作视频 url 。 所以当我播放视频时我得到了错误的IP!是的,确定,因为 url ip 是我的网站 ip,而不是我的计算机 ip 我需要的 ? 我需要使用访问者 ip 而不是服务器 ip 发出请求,谢谢。
从vidhd.net的角度来看,用于获取视频的ip(通过直接视频文件url)必须与请求视频的ip相同。因此,要么直接从 php 流式传输视频(例如,使用 readfile()),要么直接从访问者的 IP 获取视频 url(例如,通过 javascript/XMLHttpRequest)
第一种方法的缺点是使用更多带宽,因为整个视频必须下载到服务器并提供给客户端,从而使服务器的带宽使用量是电影大小的 2 倍。第二种方法的缺点是,您可能会遇到 CORS 限制 从 javascript 执行此操作,除非 vidhd 通过 CORS-Allow headers 显式允许 CORS 请求,并且根据curl,它们不会:
$ curl -I https://vidhd.net/embed-bc3c7z8e8pmt.html
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 31 May 2018 13:25:56 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Expires: Wed, 30 May 2018 13:25:56 GMT
X-frame-options: 1
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
尽管您可能只能使用 iframe,除非它们阻止 iframe,谁知道呢。