小程序h5获取腾讯视频的真实mp4地址video!【前端+后端方法】

1、前端方法!

首先复制一个连接!

就你上传腾讯视频的url,注意不要拿那种电影啊之类的试! 那种获取不到的!  要拿别人上传的!或者自己上传的试!

取,最后一个/和.html中间内容!后面我又直接写好js

var url = 'https://v.qq.com/x/page/f0925rpowb2.html';

然后打开nginx,配置域名转发,不然会跨域

location ^~ /tengxun/ {
   proxy_pass http://vv.video.qq.com/; # 转发地址
}

把tengxun开头的转发到腾讯去

然后在直接get请求!

完整源码和注释

可选值有sd(标清)、hd(高清)、shd(超清)、fhd(1080P)

<!DOCTYPE html>
<html>

<head>
    <title>完整的demo</title>
    <meta charset="utf-8">
</head>

<body>
    <script type="text/javascript" src="//apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
       //你复制的地址
    var url = 'https://v.qq.com/x/page/f0925rpowb2.html';
    let vids = url.match(/\/([^/]*)$/)[1].replace('.html', '');
    async function aa() { //这个函数主要为了同步
        let s = ''
        // 或者可以直接打开同步,就不用async进行同步了了!
        //  $.ajaxSettings.async = false;
        // http://vv.video.qq.com/getinfo?vids=f0925rpowb2&platform=101001&charge=0&otype=json 这个是真实的请求地址,直接请求会报错!
        await $.get("/tengxun/getinfo?vids=" + vids + "&platform=101001&charge=0&otype=json", function(result) {
            let str = result.replace('QZOutputJson=', '')
            let strs = str.replace(/[;?]$/, '')
            var obj = JSON.parse(strs);
            s = obj.vl.vi[0].ul.ui[0].url + obj.vl.vi[0].fn + '?vkey=' + obj.vl.vi[0].fvkey
        })
        return s
    }
    aa().then(res => {
        console.log(res)
        url = res
    });
    </script>
</body>

</html>

值得注意的是!腾讯的key会不断的变化,所以需要定期更新key,如果内容是输入数据库的! 那就没必要用上面那种了!

2、后端方法

一、ajax请求方法,传个腾讯url即可!

<?php

$url=$_GET['url'];
if(empty($url)){
    $result =array('code'=>500);
    echo json_encode($result);//返回数据
   exit();
}

$link_array = explode('/',$url);
$vid = explode('.',end($link_array))[0];
$urls = 'http://vv.video.qq.com/getinfo?vids='.$vid.'&platform=101001&charge=0&otype=json&defn=shd';
$json = file_get_contents($urls);
preg_match('/^QZOutputJson=(.*?);$/',$json,$json2);
$tempStr = json_decode($json2[1],true);
$vurl = $tempStr['vl']['vi'][0]['ul']['ui'][0]['url'].$tempStr['vl']['vi'][0]['fn']."?vkey=".$tempStr['vl']['vi'][0]['fvkey'];
$result =array('code'=>200,'result'=>$vurl);

echo json_encode($result);//返回数据
exit();

?>

二、全文匹配腾讯Url,然后进行查找腾讯url,进行替换为video


用php方法,先定义方法

if(!function_exists('replacevideo')){
	function replacevideo($str){
	        preg_match_all('/((http|ftp|https):\/\/)(?=.*(qq\.com))([\w_-]+(?:(?:\.[\w_-]+)+))+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/',$str,$arr);
	        if(!$arr[0]){
	            return $str;
	        }
	        $replaceOnce = function($needle,$replace,$haystack){ 
	            $pos = strpos($haystack, $needle);//查找出现的位置
	            if($pos===false){return $haystack;}//查不到就放弃
	            return substr_replace($haystack,$replace,$pos,strlen($needle)); // 查找替换和$needle长度的字符
	        };
	        $reolaceqq = function($url){
	            $link_array = explode('/',$url);
	            $vid = explode('.',end($link_array))[0];
	            $urls = 'http://vv.video.qq.com/getinfo?vids='.$vid.'&platform=101001&charge=0&otype=json&defn=shd';
	            $json = file_get_contents($urls);
	            preg_match('/^QZOutputJson=(.*?);$/',$json,$json2);
	            $tempStr = json_decode($json2[1],true);
	            $vurl = $tempStr['vl']['vi'][0]['ul']['ui'][0]['url'].$tempStr['vl']['vi'][0]['fn']."?vkey=".$tempStr['vl']['vi'][0]['fvkey'];
	            if($vurl){
	                $video="<video controls src=".$vurl." width='100%'></video>";
	                return  $video;
	            }else{
	                return $url;
	            }
	        };
	        $_tmp = [];
	        foreach($arr[0] as $v){  
	            $tmp = explode($v,$str);//把$v前后分成2段
	            $_tmp[]=$tmp[0];//叠加起始段
	            $_tmp[]=$reolaceqq($v); // 匹配到的字符串段
	            $str = $replaceOnce($tmp[0].$v,'',$str); //把起始段和匹配到的字符发过去替换为空
	        }
	        return join($_tmp,'').$str; 
	    }
}

使用

$str = "你好.aa='https://v.qq.com/x/page/f0925rpowb2.html哈哈https://vs.qq.com/x/page/f0925rpowb22.html哒http://write.blog.csdn.net/post嗯嗯baidu.com aa";
$a=replacevideo($str);
echo $a;


相关内容

发表评论

验证码:
点击我更换图片

最新评论