开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1872|回复: 0
打印 上一主题 下一主题
收起左侧

[PHP相关教程] 最新抖音短视频无水印地址解析原理(抖音免费解析接口),以PHP代码为例

[复制链接]
跳转到指定楼层
楼主
发表于 2019-12-12 18:39:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   北京市北京市
用户从抖音中复制链接,出来的地址,打开是带有水印的,要想通过复制的链接解析获取无水印的视频地址,可以看如下代码

PHP源码:

<?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(https://www.videoparse.cn/)。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表