实现思路
1、分析页面,使用GuzzleHttp请求分析 (GuzzleHttp在querylist 版本4会依赖GuzzleHttp)
public function kuaiShou($url){
$headers = [
'Connection' => 'keep-alive',
'User-Agent'=>'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36'
];
$client = new Client(['headers'=>$headers]);
//允许重定向获取html
$res = $client->request('GET', $url,['allow_redirects' => true]);
$html = (string)$res->getBody();
$Query = QueryList::getInstance();
$json = $Query->html($html)->find('div[id=hide-pagedata]')->attr('data-pagedata');
$video_data = json_decode($json,true);
//获取图片id
$photoId = $video_data['photoId'];
$param = "client_key=56c3713c&photoIds=".$photoId;
//计算sign
$replace = str_replace("&", "",$param).'23caab00356c';
$sig =md5($replace);
$queryUrl = 'http://api.gifshow.com/rest/n/photo/info?'.$param."&sig=".$sig;
//获取url地址之后不能让他重定向
$res = $client->request('GET', $queryUrl,['allow_redirects' => false]);
$body = (string)$res->getBody();
$result = json_decode($body,true);
//获取到视频相关数据
$video_data = $result['photos'][0];
$data['video_src']= $video_data['main_mv_url'];
$data['video_cover'] = $video_data['thumbnail_url'];
//获取文案标题
$video_title = $video_data['caption'];
$title = explode('@',$video_title);
for ($i=0;$i<count($title);$i++){
$video_title = str_replace('@'.$title[$i],"",$video_title);
}
$title = explode('#',$video_title);
for ($i=0;$i<count($title);$i++){
$video_title = str_replace('#'.$title[$i],"",$video_title);
}
$data['video_title'] = $video_title;
return $data;
}如果各位大神觉得我写的好可以去我的简书查看详细分析原理哦:https://www.jianshu.com/p/ae0888d65504
随便打赏一下,将是我解析市面上所有去水印短视频的动力哦
