打开分享的链接查看源代码找到 video_id 那就是视频地址了
只需要取vodeo_id的参数;
抖音无水印播放接口:
https://aweme.snssdk.com/aweme/v1/play/?video_id=vodeo_id&line=0
通过获取到的vodeo_id 凑成完整播放链接:
https://aweme.snssdk.com/aweme/v1/play/?video_id=v0200fc10000bepclh6bn5vcg64f2log&line=0
这样就得到了无水印的原视频播放地址,不过每次都要这样去找vodeo_id 也太麻烦了。
这步骤交由程序到完成吧,上PHP实现的源码:
public function index() { $url = isset($this->param['url']) ? $this->param['url'] : ''; if (empty($url)) { $this->jump([404, '链接为空', '']); } $str = $this->CurlRequest($url, 1); preg_match("/video_id=(.*?)&/i", $str, $vid); if (!isset($vid[1]) || empty($vid[1])) { $this->jump([404, '解析失败', '']); } $playUrl = 'https://aweme.snssdk.com/aweme/v1/play/?video_id=' . $vid[1] . '&line=0'; $str = $this->CurlRequest($playUrl, 0); preg_match('#<a href="(.*?)">#', $str, $arr); if (!isset($arr[1]) || empty($arr[1])) { $this->jump([403, '解析失败', '']); } $VideoUrl = str_replace('http://', 'https://', $arr[1]); header('Access-Control-Allow-Origin: *'); header('Content-Type:application/json; charset=utf-8'); $res = ['code' => 0, 'msg' => '解析成功', 'data' => $VideoUrl]; //不转义反斜杠,中文不转为unicode die(json_encode($res, 320)); } protected function CurlRequest($url, $foll = 0) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //访问的url curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //完全静默 curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //忽略https curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //忽略https curl_setopt($ch, CURLOPT_HTTPHEADER, ["user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"]); //UA curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $foll); //默认为$foll=0,大概意思就是对照模块网页访问的禁止301 302 跳转。 $output = curl_exec($ch); //获取内容 curl_close($ch); //关闭 return $output; //返回 }
最近有人反映无法解析;
原因是抖音官方做了调整,原来的 vodeo_id 改成了 s_vid,接口地址也变了;
现在已修复无法解析问题;
更新时间:2019年6月2日15:6:37
在线的成品:www.timeblog.cn/tool/douyin
转载请注明本文标题和链接:《 PHP实现抖音视频无水印解析 》