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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 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/>

目录
相关文章
|
9天前
|
PHP 开发者 容器
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
13 1
|
17天前
|
机器学习/深度学习 存储 人工智能
强化学习与深度强化学习:深入解析与代码实现
本书《强化学习与深度强化学习:深入解析与代码实现》系统地介绍了强化学习的基本概念、经典算法及其在深度学习框架下的应用。从强化学习的基础理论出发,逐步深入到Q学习、SARSA等经典算法,再到DQN、Actor-Critic等深度强化学习方法,结合Python代码示例,帮助读者理解并实践这些先进的算法。书中还探讨了强化学习在无人驾驶、游戏AI等领域的应用及面临的挑战,为读者提供了丰富的理论知识和实战经验。
44 5
|
21天前
|
数据采集 JSON 数据格式
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
152 4
|
25天前
|
API 数据安全/隐私保护
抖音视频,图集无水印直链解析免费API接口教程
该接口用于解析抖音视频和图集的无水印直链地址。请求地址为 `https://cn.apihz.cn/api/fun/douyin.php`,支持POST或GET请求。请求参数包括用户ID、用户KEY和视频或图集地址。返回参数包括状态码、信息提示、作者昵称、标题、视频地址、封面、图集和类型。示例请求和返回数据详见文档。
|
1月前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
110 10
|
1月前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
36 1
|
2月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
2月前
|
机器学习/深度学习 编解码 算法
深入解析MaxFrame:关键技术组件及其对视频体验的影响
【10月更文挑战第12天】随着流媒体服务和高清视频内容的普及,用户对于视频质量的要求越来越高。为了满足这些需求,许多技术被开发出来以提升视频播放的质量。其中,MaxFrame是一种旨在通过一系列先进的图像处理算法来优化视频帧的技术。本文将深入探讨构成MaxFrame的核心组件,包括运动估计、超分辨率重建以及时间插值算法,并讨论这些技术如何协同工作以改善视频播放效果。
44 1
|
2月前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
81 2
|
2月前
|
存储 搜索推荐 数据库
运用LangChain赋能企业规章制度制定:深入解析Retrieval-Augmented Generation(RAG)技术如何革新内部管理文件起草流程,实现高效合规与个性化定制的完美结合——实战指南与代码示例全面呈现
【10月更文挑战第3天】构建公司规章制度时,需融合业务实际与管理理论,制定合规且促发展的规则体系。尤其在数字化转型背景下,利用LangChain框架中的RAG技术,可提升规章制定效率与质量。通过Chroma向量数据库存储规章制度文本,并使用OpenAI Embeddings处理文本向量化,将现有文档转换后插入数据库。基于此,构建RAG生成器,根据输入问题检索信息并生成规章制度草案,加快更新速度并确保内容准确,灵活应对法律与业务变化,提高管理效率。此方法结合了先进的人工智能技术,展现了未来规章制度制定的新方向。
40 3

推荐镜像

更多