先来段抖音撩妹祖师爷的视频:https://v.douyin.com/NrRah9w/
这是app里面的分享链接,但是我们在网页中打开,发现是不一样的网址。
先说手机端的,在网页中打开出现的网址是:https://www.iesdouyin.com/share/video/7074203714344471816/
其中,7074203714344471816,是这部视频的videoid
那么我们怎么获取跳转的地址,PHP代码:
$header = get_headers('https://v.douyin.com/NrRah9w/',1);
$realurl = $header['Location'][1]; //获取真实链接
第一行代码先获取头,第二行获取真实链接,懂得都懂,自己用var_dump看
然后抖音有这么一个接口会返回视频数据,通过videoid来查询:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=videoid
如:https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7074203714344471816
返回一大段json数据过来:

重要的数据是:
"url_list":["https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200fg10000c8m9t3jc77u6h9celcbg&ratio=720p&line=0"]}
"vid":"v0200fg10000c8m9t3jc77u6h9celcbg"
我们取json就是把他转换成数组,然后取vid,我们可以看到,访问url_list就是出现的是真实无水印的视频链接,那么我们通过vid就可以查询到真实无水印的视频地址
$getvid = json_decode('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7074203714344471816', true);
$dy_vid= $getvid['item_list'][0]['video']['vid'];//得到vid
我们用curl去请求
请求这个网页会302跳转到真实视频地址。
源码:
<?php
//抖音无水印超清解析(双端解析PC+APP)-by:银狐笔记 www.ityinhu.com
error_reporting(0);
$dy_share = $_GET['url'];
if(!isset($dy_share)||empty($dy_share)){
echo '你没填分享链接';
exit;
}
function douyin($shareurl){
$header = get_headers($shareurl,1);
$realurl = $header['Location'][1]; //获取真实链接
//var_dump($realurl);
$p_search='#(\d+)()?\s*?#s'; // 可以用explode(),这里用的正则
preg_match_all($p_search,$realurl,$videoid);
$videoid = $videoid[0][0]; //获取videoid
if($realurl == NULL){
$urlarr = explode('/',$shareurl);
$videoid = $urlarr[4];
}
//var_dump($videoid);
$vidjson = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='.$videoid;
//var_dump($vidjson);
$vidarr = file_get_contents($vidjson);
$getvid = json_decode($vidarr, true);
$dy_vid= $getvid['item_list'][0]['video']['vid'];//得到vid
return $dy_vid;
}
global $vid;
$vid = douyin($dy_share);
//echo $vid;
function dyzl(){
if($GLOBALS['vid']==NULL){
echo '链接有误,无法解析';
exit;
}
header("Content-Type: text/json;charset=utf-8");
$url = 'https://aweme.snssdk.com/aweme/v1/play/?video_id='.$GLOBALS['vid'].'&ratio=1080p&line=0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//若给定url自动跳转到新的url,有了下面参数可自动获取新url内容:302跳转
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//设置cURL允许执行的最长秒数。
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0');
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$content = curl_exec($ch);
//获取请求返回码,请求成功返回200
$code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
//echo $code . "\n\n";
//获取一个cURL连接资源句柄的信息。
//$headers 中包含跳转的url路径
$headers = curl_getinfo($ch);
//var_dump($headers);
return $headers['url'];
}
$nomarkurl= dyzl();
echo $nomarkurl;
?>

老马黑科技


