让代码更简单

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

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

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

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

复制
https://v.kuaishou.com/8Vt7oX

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

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

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

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

PHP无水印解析代码

复制
<?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\.com\/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\.com\/.*\.mp4/U', $data, $mat);

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

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

感觉很棒!可以赞赏支持我哟~

12 打赏

评论 (1)

登录后评论
优秀
QQ咨询 邮件咨询 狗哥推荐