抖音无水印视频解析及代码实现

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 通过 PHP 代码实现。本文的目标是提供思路,从实用的观点来看,这将提供一个成本相对较低的解决方案。

我将长时间提供可运行的无水印视频下载开源代码

🔭 预期

处理前

处理后

💻 正文

  • 方法一:使用去水印平台

    这些网站是针对短视频平台的,但需要付费解析的,可以考虑使用 Splinter。 将浏览器设置为无头浏览器 ,直接模拟请求解析,可以白嫖。

  • 方法二:直接修改下载链接
  public function main() {
      // 视频播放地址, 通过抖音分享链接获取
      $url = 'https://v.douyin.com/JKgS4Vp/'
      $url = $this->getCurl($url);

      preg_match('/video\/([0-9]+)\//i', $url, $matches);

      $result = $this->video_url($matches[1]);
      return $result;
  }
  
    /**
    * 获取抖音接口视频信息
    */
    private function video_url($dyid)
    {
        $getApi = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' . $dyid;
        $data = $this->getCurl($getApi);
        $json = json_decode($data, true);
        //视频描述
        $playUrl = null;
        foreach ($json['item_list'] as $k => $v) {
            //无水印URL
            $playUrl = $list['play_url'] = $this->Url($v['video']['play_addr']['url_list']);
        }
        return [
           'play_url' => urldecode($playUrl),
        ];
    }
  
  /**
  * 修改下载链接
  */
  public function Url($list) {
    return $list[0].replace('playwm','play')
  }
  
  /**
  * 发起请求
  */
  public function getCurl($url, $options = [], $foll = 0)
  {
      //初始化
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url); //访问的url
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //完全静默
      curl_setopt($ch, CURLOPT_HEADER, false);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //忽略https
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //忽略https
      curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge([self::getRandomUserAgent()], $options)); //UA
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $foll); //默认为$foll=0,大概意思就是对照模块网页访问的禁止301 302 跳转。
      $output = curl_exec($ch); //获取内容
      curl_close($ch); //关闭
      return $output; //返回
  }
  • 方法三:设置视频播放地址的 Referer 与 Host
    public function main() {
        // 视频播放地址, 通过抖音分享链接获取
        $url = 'https://v.douyin.com/JKgS4Vp/'
        $url = $this->getCurl($url);

        preg_match('/video\/([0-9]+)\//i', $url, $matches);
        
        $result = $this->videoUrl($matches[1]);
        return $result;
    }
    
    /**
    * 获取抖音接口视频信息
    */
    private function videoUrl($dyid)
    {
        $getApi = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' . $dyid;
        $data = $this->getCurl($getApi);
        $json = json_decode($data, true);
        //视频描述
        $playUrl = null;
        foreach ($json['item_list'] as $k => $v) {
            //无水印URL
            $playUrl = $list['play_url'] = $this->Url($v['video']['play_addr']['uri']);
        }
        return [
           'play_url' => urldecode($playUrl),
        ];
    }

    /**
    * 获取重定向视频地址
    */
    public function Url($videoId)
    {
        $str = $this->getCurl("https://aweme.snssdk.com/aweme/v1/play/?video_id=" . $videoId . "&line=0", [
            'Referer' => "https://www.iesdouyin.com",
            'Host' => "www.iesdouyin.com",
        ], 0);
        preg_match('#<a href="(.*?)">#', $str, $data);
        $download_url = explode("//", $data[1]);
        return isset($download_url[1]) ? 'https://' . $download_url[1] : '解析失败';
    }
    
    /**
    * 发起请求
    */
    public function getCurl($url, $options = [], $foll = 0)
    {
        //初始化
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url); //访问的url
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //完全静默
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //忽略https
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //忽略https
        curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge([self::getRandomUserAgent()], $options)); //UA
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $foll); //默认为$foll=0,大概意思就是对照模块网页访问的禁止301 302 跳转。
        $output = curl_exec($ch); //获取内容
        curl_close($ch); //关闭
        return $output; //返回
    }   

🎉 总结

获取抖音无水印视频,打开抓包工具就能找到规律,但是这个方法一般会留到最后。目前我最常用的方法是先去 github 上检索关键词,学习同行的思路。github 中一般可以总结出 2 ~ 3 种方案,再根据自己的上下文,选择最合适的方案。<br/>

目录
相关文章
|
19天前
|
搜索推荐 UED Python
实现一个带有昼夜背景切换的动态时钟:从代码到功能解析
本文介绍了一个使用Python和Tkinter库实现的动态时钟程序,具有昼夜背景切换、指针颜色随机变化及整点和半点报时功能。通过设置不同的背景颜色和随机变换指针颜色,增强视觉吸引力;利用多线程技术确保音频播放不影响主程序运行。该程序结合了Tkinter、Pygame、Pytz等库,提供了一个美观且实用的时间显示工具。欢迎点赞、关注、转发、收藏!
129 94
|
2月前
|
人工智能 搜索推荐 API
Cobalt:开源的流媒体下载工具,支持解析和下载全平台的视频、音频和图片,支持多种视频质量和格式,自动提取视频字幕
cobalt 是一款开源的流媒体下载工具,支持全平台视频、音频和图片下载,提供纯净、简洁无广告的体验
276 9
Cobalt:开源的流媒体下载工具,支持解析和下载全平台的视频、音频和图片,支持多种视频质量和格式,自动提取视频字幕
|
18天前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
138 11
|
2月前
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
161 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
25天前
|
数据采集 XML API
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
|
2月前
|
PHP 开发者 容器
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
45 1
|
3月前
|
机器学习/深度学习 存储 人工智能
强化学习与深度强化学习:深入解析与代码实现
本书《强化学习与深度强化学习:深入解析与代码实现》系统地介绍了强化学习的基本概念、经典算法及其在深度学习框架下的应用。从强化学习的基础理论出发,逐步深入到Q学习、SARSA等经典算法,再到DQN、Actor-Critic等深度强化学习方法,结合Python代码示例,帮助读者理解并实践这些先进的算法。书中还探讨了强化学习在无人驾驶、游戏AI等领域的应用及面临的挑战,为读者提供了丰富的理论知识和实战经验。
92 5
|
3月前
|
数据采集 JSON 数据格式
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
487 4
|
3月前
|
API 数据安全/隐私保护
抖音视频,图集无水印直链解析免费API接口教程
该接口用于解析抖音视频和图集的无水印直链地址。请求地址为 `https://cn.apihz.cn/api/fun/douyin.php`,支持POST或GET请求。请求参数包括用户ID、用户KEY和视频或图集地址。返回参数包括状态码、信息提示、作者昵称、标题、视频地址、封面、图集和类型。示例请求和返回数据详见文档。
|
3月前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
216 10

推荐镜像

更多