试验了网上很多抖音解析无水印视频的API,发现很多都是不稳定的。连今天要分享的这个api也是,总是那么不稳定。不过还好,总算是解析出了无水印视频。很多东西还是要自己调试一下才会知道哪里出bug了!

 

看截图先

input里输入抖音链接地址后,点击解析视频,最后生成无水印视频,封面。返回了一大串json数据

试验解析抖音无水印视频【PHP版】_php

 

返回的json数据

试验解析抖音无水印视频【PHP版】_php_02

 

调用的api

我这里是用到了这个地址:https://api.toubiec.cn/api/douy.html,

接口地址:​https://api.toubiec.cn/douy​

返回格式:json

请求方式:get/post

请求示例:http://api.toubiec.cn/douy?url=http://v.douyin.com/2bLNJ7/

 

方法就是:?url="从抖音复制过来的链接地址"。

简单示例:

<?php
header("Content-Type:text/html;charset=UTF-8");
$url = "http://v.douyin.com/2bLNJ7/";
$result = file_get_contents("https://api.toubiec.cn/douy?url=".$url);
$arr=json_decode($result,true);
if ($arr) {
echo "视频作者:",$arr['nickname'];
echo "";
echo "视频地址:",$arr['videourl'][1];
echo "";
echo "图片地址:",$arr['image'];
} else {
echo $arr['status'];
}
?>

 

以下是具体实现的代码

html模板

<div class="input-group input-group-lg" style="margin-bottom: 10px;">
<input type="text" class="form-control link-input" id="douyin_link" placeholder="抖音视频连接粘贴到这">
<div class="input-group-btn">
<!-- <div class="btn-clear"></div> -->
<button class="btn btn-default" type="button" id="jiexi">解析视频</button>
</div>
</div>
<div style="text-align: center; display: none;" class="alert alert-danger" id="error">请输入正确的视频链接</div>
<div style="text-align: center; display: none;" id="loading" >
<img src="img/loading.gif" style="width: 80px;height: 80px;">
</div>

<div class="thumbnail" style="display: none;" id="success">
<div class="caption" style="padding:5px 0 0;">
<p style="text-align: center;">
<a target="_blank" rel="noreferrer" id="video_url" href="" download="douyin.mp4"class="btn btn-success">下载视频</a>
<a target="_blank" rel="noreferrer" id="cover_url" href="" class="btn btn-info">视频封面</a>
</p>
<p style="text-align: center;">
<a href="javascript:void(0);" class="btn btn-danger" id="rest">清空</a>
</p>
</div>
</div>

 

js文件,很容易,post获取到url后,传递给douyin.php文件处理,再返回一大串数据

if(douyin_link.length == 0){
$("#error").html("请先将视频链接粘贴到上面的输入框");
$("#error").css("display","block");
$("#loading").css("display","none");
}else{
var c = douyin_link.lastIndexOf("http://");
c = (c === -1) ? douyin_link.lastIndexOf("https://") : c;
if(c === -1){
$("#error").html("请输入正确的视频链接");
$("#error").css("display","block");
$("#loading").css("display","none");
}else{
douyin_link = douyin_link.substr(c);
console.log(douyin_link);
if(parseURL(douyin_link).host=="v.douyin.com" || parseURL(douyin_link).host=="www.iesdouyin.com"){
$.ajax({
type: "POST",
url: "douyin.php",
data: {
url:douyin_link,
},
dataType: "json",
success: function(data){
$("#loading").css("display","none");
console.log(data.time);
if(data.status == true){
$("#success").css("display","block");
$("#video_url").attr("href",data.videourl[1]);
$("#cover_url").attr("href",data.image);

}else{
$("#error").html(data.msg);
$("#error").css("display","block");
}
},

});
}else{
$("#error").html("请输入正确的视频链接");
$("#error").css("display","block");
$("#loading").css("display","none");
}
}
}

 

douyin.php文件,处理后返回数据到前端

<?php
//为防止协议的快速失效,使用远程访问获取数据。

$url = "http://v.douyin.com/2bLNJ7/";
$param = ["param" => md5(123)];
$url_sign = '958364f87222c200a72414f492bf0e26';

$api_url = "https://api.toubiec.cn/douy?url=".$url;
$result = http_request($api_url, $param,$url_sign);

echo $result;

/**
* post请求接口公共函数
* @param string $url 接口地址
* @param array $param 接口参数
* @return string
* @默认3.0系统sign
*/
function http_request($url, $param = array(), $token){

$data = array(
'param' => json_encode($param),
'sign' => get_sign($param,$token),
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$ret = curl_exec($ch);
if($ret === false){
return curl_error($ch);
}
curl_close($ch);
return $ret;
}

/**
* 获取签名
* @param array $param 接口参数param(没有sign)
* @param string $token 接口密钥
* @return string 加密字串
*/
function get_sign($param = array(), $token = ''){
ksort($param, SORT_STRING);
$param_str = http_build_query($param);
$sign = md5($param_str . $token);
return $sign;
}


?>

 

抖音无水印解析地址:http://blog.startphp.cn/douyin/