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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 通过 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/>

目录
相关文章
|
12天前
|
API 数据安全/隐私保护
抖音视频,图集无水印直链解析免费API接口教程
该接口用于解析抖音视频和图集的无水印直链地址。请求地址为 `https://cn.apihz.cn/api/fun/douyin.php`,支持POST或GET请求。请求参数包括用户ID、用户KEY和视频或图集地址。返回参数包括状态码、信息提示、作者昵称、标题、视频地址、封面、图集和类型。示例请求和返回数据详见文档。
|
28天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
80 10
|
27天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
33 1
|
1月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
机器学习/深度学习 编解码 算法
深入解析MaxFrame:关键技术组件及其对视频体验的影响
【10月更文挑战第12天】随着流媒体服务和高清视频内容的普及,用户对于视频质量的要求越来越高。为了满足这些需求,许多技术被开发出来以提升视频播放的质量。其中,MaxFrame是一种旨在通过一系列先进的图像处理算法来优化视频帧的技术。本文将深入探讨构成MaxFrame的核心组件,包括运动估计、超分辨率重建以及时间插值算法,并讨论这些技术如何协同工作以改善视频播放效果。
42 1
|
1月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
68 2
|
1月前
|
存储 搜索推荐 数据库
运用LangChain赋能企业规章制度制定:深入解析Retrieval-Augmented Generation(RAG)技术如何革新内部管理文件起草流程,实现高效合规与个性化定制的完美结合——实战指南与代码示例全面呈现
【10月更文挑战第3天】构建公司规章制度时,需融合业务实际与管理理论,制定合规且促发展的规则体系。尤其在数字化转型背景下,利用LangChain框架中的RAG技术,可提升规章制定效率与质量。通过Chroma向量数据库存储规章制度文本,并使用OpenAI Embeddings处理文本向量化,将现有文档转换后插入数据库。基于此,构建RAG生成器,根据输入问题检索信息并生成规章制度草案,加快更新速度并确保内容准确,灵活应对法律与业务变化,提高管理效率。此方法结合了先进的人工智能技术,展现了未来规章制度制定的新方向。
36 3
|
1月前
|
SQL 监控 关系型数据库
SQL错误代码1303解析与处理方法
在SQL编程和数据库管理中,遇到错误代码是常有的事,其中错误代码1303在不同数据库系统中可能代表不同的含义
|
1月前
|
SQL 安全 关系型数据库
SQL错误代码1303解析与解决方案:深入理解并应对权限问题
在数据库管理和开发过程中,遇到错误代码是常见的事情,每个错误代码都代表着一种特定的问题
|
2月前
|
敏捷开发 安全 测试技术
软件测试的艺术:从代码到用户体验的全方位解析
本文将深入探讨软件测试的重要性和实施策略,通过分析不同类型的测试方法和工具,展示如何有效地提升软件质量和用户满意度。我们将从单元测试、集成测试到性能测试等多个角度出发,详细解释每种测试方法的实施步骤和最佳实践。此外,文章还将讨论如何通过持续集成和自动化测试来优化测试流程,以及如何建立有效的测试团队来应对快速变化的市场需求。通过实际案例的分析,本文旨在为读者提供一套系统而实用的软件测试策略,帮助读者在软件开发过程中做出更明智的决策。
下一篇
无影云桌面