获取抖音无水印视频分析

获取抖音无水印视频分析文档

说明

前短时间在公司开发了短视频营销功能,把前期调研的有关短视频去水印的知识整理一下。


参考文档

csdn:https://blog.csdn.net/ucsheep/article/details/102519806
csdn:https://www.cnblogs.com/xyz-s/p/13634757.html
简书:https://www.jianshu.com/p/70399115a8f0

原理讲解

1.将抖音短链接在浏览器访问,并打开Network监听后可以得到以下信息:
短链接:https://v.douyin.com/JmJoDCS/
重定向Url:https://www.iesdouyin.com/share/video/6879305837429443854
获取视频信息的请求:https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6879305837429443854
所以通过重定向后地址可以获取到item_ids,然后访问https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/这个接口传入刚刚的item_ids,就可以拿到视频相关信息。
2.从得到的json字符串中提取视频播放地址,在item_list下video.play_addr.url_list中。
3.将视频地址中的playwm替换为play。
4.使用移动端的user-agent访问替换后的视频地址即可得到无抖音水印的视频。

步骤讲解

获取相关链接

在chrome中访问视频短链接,得到重定向后的Url和请求地址
请输入图片描述
从图中可以看到重定向Url:https://www.iesdouyin.com/share/video后的id就是请求地址所需要的id

获取视频地址

提取抖音短视频地址。
请输入图片描述
在返回的信息中,item_list下video.play_addr.url_list找到短视频的源地址。

获取无水印地址

拿到视频地址后,可以通过网上的去水印接口进行处理,也可以通过以下方法进行处理。
将视频地址中的playwm替换为play后使用移动端的user-agent访问替换后的视频地址即可得到无抖音水印的视频。
请输入图片描述
Request URL: https://aweme.snssdk.com/aweme/v1/play/?video_id=v0300fb20000bts37u452a1aj3hpp99g&ratio=720p&line=0
Status Code: 302
user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Mobile Safari/537.36

开发接口

获取视频短链接

public function getShortVideoUrl($url){
    preg_match('/https?:\/{2}[-A-Za-z0-9+&@#\/\%?=~_|!:,.;]+[-A-Za-z0-9+&@#\/\%=~_|]/i', $url, $matches);
    return $matches[0];
}

传入链接:真的是每一个镜头都不想错过 给你们来个下集#乖宝剪发 #骗你生女儿  https://v.douyin.com/JmJoDCS/ 复制此链接,打开抖音,直接观看视频!
返回链接:https://v.douyin.com/JmJoDCS/

获取视频item_ids

function get_content_url($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'User-Agent: Mozilla/5.0 (Linux; U; Android 9; zh-cn; HLK-AL00 Build/HONORHLK-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/10.1 Mobile Safari/537.36'
    ));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, False);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, False);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
/**
 * 得到跳转后信息
 * @param $url
 * @return mixed
 */
function get_302_url($url)
{
    $regular = '/<a.*?href="(.*?)".*?\/?>/i';
    preg_match($regular, $url, $match);
    return $match[1];
}
/**
 * 截取视频item_ids
 * @param $url
 * @return mixed
 */
function get_id($url)
{
    $regular = '/video\/([0-9]\d+)/';
    preg_match($regular, $url, $match);
    return $match[1];
}

传入短视频地址:$url  https://v.douyin.com/JmJoDCS/
获取item_ids 使用方法:get_id(get_302_url(get_content_url($url)))

获取视频源地址

/**
 * 获取视频信息
 * @param $url
 * @return bool|string
 */
function get_url($url,$itemIds)
{
    $url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='.$itemIds);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Referer:' . get_302_url(get_content_url($url)),
        'User-Agent: Mozilla/5.0 (Linux; U; Android 10; zh-cn; ELE-AL00 Build/HUAWEIELE-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/10.1 Mobile Safari/537.36'
    ));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, False);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, False);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
/**
 * 获取移动端链接
 * @param $url
 * @return string
 */
function get_url1($url)
{
    $regular = '/https\:\/\/aweme\.snssdk\.com\/aweme\/v1\/playwm\/(.*?)0\"\]\}\,\"/';
    preg_match($regular, $url, $match);
    return 'https://aweme.snssdk.com/aweme/v1/play/' . $match[1] . '0';
}

传入短视频$url和视频地址$itemIds  get_url1(get_url($url,$itemIds))
返回app访问的地址$appUrl

使用移动端的user-agent获取无水印视频地址

/**
 * 获取无水印视频
 * @param $url
 * @return bool|string
 */
function get_video_url($appUrl)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'User-Agent: Mozilla/5.0 (Linux; Android 5.1; OPPO A59s Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.20 SP-engine/2.16.0 baiduboxapp/11.20.0.14 (Baidu; P1 5.1)'
    ));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, False);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, False);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

传入$appUrl   
get_302_url(get_video_url($appUrl)) 返回视频无水印地址

结尾

这只是获取抖音视频的一种方式,网上也有很成熟的接口,大家仅供参考。

<p style="background-image: -webkit-linear-gradient(left, #3498db, #f47920 10%, #d71345 20%, #f7acbc 30%,#ffd400 40%, #3498db 50%, #f47920 60%, #d71345 70%, #f7acbc 80%, #ffd400 90%, #3498db);color: transparent;-webkit-text-fill-color: transparent;-webkit-background-clip: text;text-align:center;">
心如花木,向阳而生。
</p>

添加新评论