重要:本文最后更新于2020-08-22 08:26:13,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗。

抖音快手作为目前最大的两大视频平台,使用量是非常大的,看到某些好看的视频想要保存下来但是又有水印改怎么办呢?狗哥已经发布了抖音短视频无水印解析服务,欢迎使用。其工作原理也写了,感兴趣的可以去看看。今天写下快手的短视频无水印解析过程,以及实现代码。

首先拿到一个快手的短视频分享链接,如

https://v.kuaishou/8Vt7oX

使用浏览器,开启F12开发者模式访问,可以在控制台中看到请求过程,经过了302重定向,那么使用PHP模拟访问,并取得重定向地址。

然后你会发现重定向后的页面就是视频播放页面,查看网页源码可以快速找到视频的直链地址,不过这是有水印的。仔细看看会发现在网页源码后面有一段JavaScript配置数据,里面居然有整个视频的所有数据,包括名称,有水印无水印视频链接等,这开发者怎么想的?

快手短视频无水印解析过程及代码

PHP无水印解析代码

ini_set("display_errors", "Off");

error_reporting(E_ALL^E_NOTICE^E_WARNING);

header("content-type:application/json");

$url = $_GET['url'];

if (preg_match('/https:\/\/.*\/\w+/', $url, $url)) {

$url = $url[0];

$Referer = $url;

$header_arr = get_headers($url,1);

$UserAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Mobile/15E148 Safari/604.1';

$header = array(

"Cookie:".$header_arr["Set-Cookie"][0],

"Referer:".$Referer

);

$url = $header_arr["Location"][0];

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($curl, CURLOPT_ENCODING, '');

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($curl);

curl_close($curl);

preg_match('/https:\/\/txmov2\.a\.yximgs\\/upic\/.*\.mp4/U', $data, $mat);

if ($mat[0]) {

exit(json_encode(['code' => 'ok','play' => $mat[0]]));

} else {

exit(json_encode(['code' => 'error']));

}

} else {

exit(json_encode(['code' => 'error','msg' => '快手分享链接有误,url参数不正确']));

}

function get_between($input, $start, $end) {

$substr = substr($input, strlen($start)+strpos($input, $start),

(strlen($input) - strpos($input, $end))*(-1));

return $substr;

}

有水印解析只需要将上面代码中的正则规则修改为如下代码即可。

preg_match('/https:\/\/txmov2\.a\.yximgs\\/.*\.mp4/U', $data, $mat);

就是这么简单,其实根本不用代码就能实现,直接访问分享链接,然后右键查看源代码,搜索关键词txmov2,找那个链接中带upic的就是无水印的播放地址。

我之所以不给本站加上快手短视频解析功能是因为,快手网站有验证码,访问次数多了会跳验证码,所以就没搞。分享给需要的人吧!

更多推荐

php如何无水印解析快手,快手短视频无水印解析过程及代码