@PostMapping("geturl")
     public DataResponse decodeDouiyin(@RequestBody DouyinRequest req ) throws IOException{
         DataResponse dataResponse=new DataResponse();
         //String url1 ="#在抖音,记录美好生活#是你,是你,还是你! http://v.douyin.com/xj4Agk/ 复制此链接,打开【抖音短视频】,直接观看视频!";

         //过滤链接,获取http连接地址
         String finalUrl = decodeHttpUrl(req.getData().getLinkUrl());
         //1.利用Jsoup抓取抖音链接
         //抓取抖音网页
         String htmls = Jsoup.connect(finalUrl).ignoreContentType(true).execute().body();

         //2.利用正则匹配可以抖音下载链接
         //playAddr: "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200ffc0000bfil6o4mavffbmroeo80&line=0",
         //具体匹配内容格式:「https://aweme.snssdk.com/aweme/...line=0」
         Pattern patternCompile = Pattern.compile("(?<=playAddr: \")https?://.+(?=\",)");
         //利用Pattern.compile("正则条件").matcher("匹配的字符串对象")方法可以将需要匹配的字段进行匹配封装 返回一个封装了匹配的字符串Matcher对象

         //3.匹配后封装成Matcher对象
         Matcher m = patternCompile.matcher(htmls);

         //4.①利用Matcher中的group方法获取匹配的特定字符串 ②利用String的replace方法替换特定字符,得到抖音的去水印链接
         String matchUrl ="";
         while(m.find()) {
             matchUrl = m.group().replaceAll("playwm", "play");
         }

         //5.将链接封装成流
         //注:由于抖音对请求头有限制,只能设置一个伪装手机浏览器请求头才可实现去水印下载
         Map<String, String> headers = new HashMap<>();
         headers.put("Connection", "keep-alive");
         headers.put("Host", "aweme.snssdk.com");
         headers.put("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1");
         headers.put("Content-Encoding","gzip");
        //7.利用Joup获取视频对象,并封装成一个输入流对象
         //BufferedInputStream in = Jsoup.connect(matchUrl).headers(headers).timeout(10000).ignoreContentType(true).execute().bodyStream();
         ).headers(headers).timeout().ignoreContentType(true).execute().bodyAsBytes();
         String filename=req.getSign()+".mp4";
         //UploadUtil.uploadFile(filename,in);

         //8.保存文件到指定位置
         File fileParent= new File("/home/ftpimages/images/");
         fileParent.setWritable(true, false);
         if(!fileParent.exists()){
             fileParent.mkdirs();
         }

         File file= new File("/home/ftpimages/images/"+filename);
         file.createNewFile();

         BufferedOutputStream out =
                 new BufferedOutputStream(
                         new FileOutputStream(file));
         //copyFile(in,out);
         ,ins.length);
         out.flush();
         out.close();
         //in.close();

         dataResponse.setVideoUrl("/images/"+filename);

         return dataResponse;
     }

Github地址:https://github.com/zwl568633995/douyindecode.git  (麻烦star一下,谢谢)

代码如上,效果如图

需要上述微信小程序前端源码的朋友加我微信:zwl568633995

JAVA去除抖音视频的水印源码!!!的更多相关文章

  1. android愤怒小鸟游戏、自定义View、掌上餐厅App、OpenGL自定义气泡、抖音电影滤镜效果等源码

    Android精选源码 精练的范围选择器,范围和单位可以自定义 自定义View做的小鸟游戏 android popwindow选择商品规格颜色尺寸效果源码 实现Android带有锯齿背景的优惠样式源码 ...

  2. Python抖音视频去水印,并打包成exe可执行文件

    前言 抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使 ...

  3. 教程视频、项目源码、全部干货【微信小程序、React Native、Java、iOS、数据结构】

    把我收藏多年的教学视频.项目源码分享给大家,大神就可以忽略了,很多东西都是基础性的,都是期初学习阶段收集的东西. 微信小程序(入门级,有web前端基础的人群): 链接: https://pan.bai ...

  4. Puppeteer自动化批量上传抖音视频

    前言:最近因为项目宣传,所以用Puppeteer写了一个批量上传抖音视频的自动化程序用于推广. 环境和依赖:node,puppeteer 废话不多说,直接上代码: const puppeteer =r ...

  5. python+fiddler 抓取抖音数据包并下载抖音视频

    这个我们要下载视频,那么肯定首先去找抖音视频的url地址,那么这个地址肯定在json格式的数据包中,所以我们就去专门查看json格式数据包 这个怎么找我就不用了,直接看结果吧 你找json包,可以选大 ...

  6. Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  7. Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  8. Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  9. Java 集合系列 05 Vector详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. shell变量的间接引用

  2. 使用navigator.userAgent来判断浏览器类型

    var br=navigator.userAgent.toLowerCase(); var browserVer=(br.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ...

  3. 安装配置oh-my-zsh

    1.下载安装iterm:https://www.iterm2.com/ 2.安装zsh 查看系统当前使用的shell $ echo $SHELL /bin/bash 查看系统是否安装了zsh $ ca ...

  4. centos 7.6安装python3环境

    Centos7安装Python3的方法   由于centos7原本就安装了Python2,而且这个Python2不能被删除,因为有很多系统命令,比如yum都要用到. [root@VM_105_217_ ...

  5. lombok 注解简单介绍

    一.Lombok 的简单介绍和使用 Lombok是一个可以帮助我们简化 Java 代码编写的工具类,通过采用注解的方式简化了 JavaBean 的编写,使我们写的类更加简洁. 1. 添加 Lombok ...

  6. Map集合类(一.hashMap源码解析jdk1.8)

    java集合笔记一 java集合笔记二 java集合笔记三 jdk 8 之前,其内部是由数组+链表来实现的,而 jdk 8 对于链表长度超过 8 的链表将转储为红黑树 1.属性 //节点数组,第一次使 ...

  7. php重定向说明

    302  临时重定向 header("location:http://api.com/headline?" . http_build_query($_REQUEST)); 301  ...

  8. Clickhouse集群部署

    1.集群节点信息 10.12.110.201 ch201 10.12.110.202 ch202 10.12.110.203 ch203 2. 搭建一个zookeeper集群 在这三个节点搭建一个zo ...

  9. Office VBA 参考

    Office VBA 参考:https://docs.microsoft.com/zh-CN/office/vba/api/overview/

  10. kubernetes(k8s)Pod污点与容忍

    污点(taints)与容忍(tolerations) 对于nodeAffinity无论是硬策略还是软策略方式,都是调度 pod 到预期节点上,而Taints恰好与之相反,如果一个节点标记为 Taint ...