PHP 获取微视无水印源地址_最新PHP解析抖音获取无水印视频代码

本文介绍如何使用PHP代码解析抖音链接,获取无水印视频地址。通过匹配URL获取itemId和dytk,然后调用API获取视频信息,并通过Curl处理302跳转获取最终无水印视频地址。由于抖音可能封IP,建议使用第三方解析平台如VideoParse。
摘要由CSDN通过智能技术生成

用户从抖音中复制链接,出来的地址,打开是带有水印的,要想通过复制的链接解析获取无水印的视频地址,可以看如下代码

PHP源码

$content = newCurlGet($url, $userAgent, 1);

$itemId = '';

if ( preg_match('|itemId\: \"(.*?)\",|ims', $content, $match) ) {

$itemId = $match[1];

}

$dytk = '';

if ( preg_match('|dytk\: \"(.*?)\"|ims', $content, $match) ) {

$dytk = $match[1];

}

$data = [];

if (!empty($itemId) && !empty($dytk)) {

$apiUrl = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=%s&dytk=%s';

$apiUrl = sprintf($apiUrl, $itemId, $dytk);

$content = $this->newCurlGet($apiUrl, $userAgent, 1);

if (!empty($content)) {

$response = json_decode($content, true);

if (is_array($response['item_list']) && count($response['item_list']) > 0) {

$title = $response['item_list'][0]['desc'];

$img = $response['item_list'][0]['video']['cover']['url_list'][0];

//获取最终的地址

$baseUrl = '';

$videoUrl = $response['item_list'][0]['video']['play_addr']['url_list'][0];

echo $videoUrl;

}

}

}

function newCurlGet( $url = '', $userAgent = '', $follow = 1 ) {

//初始化参数

$header= [];

$urlInfo= [];

$param= [];

if ( empty($url) ) return false;

//解析url地址

$urlInfo= parse_url($url);

$host= $urlInfo['host'];

$referer = $urlInfo['scheme'].'://'.$host;

//构造header头信息

$header= [

'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Accept-Language:zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,zh-TW;q=0.2',

'User-Agent:'.$userAgent,

'Host:'.$host,

'Referer:'.$referer,

];

$ch = curl_init();

curl_setopt( $ch, CURLOPT_URL, $url );

curl_setopt ( $ch, CURLOPT_ENCODING, "gzip, deflate,sdch" );

curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );

curl_setopt ( $ch, CURLOPT_USERAGENT, $userAgent );

if ( strtolower( $urlInfo["scheme"]) == 'https' ){

curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );

curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 2 );

}

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt ( $ch, CURLOPT_MAXREDIRS, 5 );

curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, $follow );

curl_setopt ( $ch, CURLOPT_TIMEOUT, 3 );

$response = curl_exec( $ch );

curl_close ( $ch );

return $response;

}

这里需要说明的是,获取到的videoUrl并不是最终的地址,这个地址302跳转之后才是最终的无水印视频地址,可以通过如下的代码获得最终的无水印地址

$header = [

'accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',

'sec-fetch-mode:navigate',

'sec-fetch-site:none',

'pragma:no-cache',

];

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $videoUrl);

curl_setopt ( $ch, CURLOPT_USERAGENT, $userAgent);

curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header );

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_MAXREDIRS, 5);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 3);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_NOBODY, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$content = curl_exec($ch);

curl_close($ch);

if ( preg_match('/Location: (.+)\s/i', $content, $match) ) {

echo trim($match[1]);

}

但是经过测试发现,抖音会根据访问频率对访问的服务器进行封ip,而且Location拿到的地址并不是每次都可以拿到的,所以需要循环多次的去拿才可以,这样就会造成需要非常稳定而且廉价的代理ip才可以。建议的做法还是找一些第三方解析平台

推荐第三方解析平台:VideoParse,Videoparse(https://www.videoparse.cn/)已支持解析 抖音、快手、小红书、微视、火山小视频、西瓜视频、今日头条、陌陌视频、映客视频、小咖秀、开眼、全民小视频、全民K歌、最右、小影、微博、美拍、皮皮虾等平台的短视频去水印解析。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值