@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. css3 新特性(2D translate 移动,rotate 旋转 , scale 缩放)

    1.transform(转换)可以实现元素的位移,旋转,缩放等效果(可以简单理解为变形) 移动:translate            旋转:rotate          缩放:scale 2. ...

  2. 面试经典:链表中倒数第k个结点?如何从大量数据中找出高频词?

    记录两道面试题: 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(单向链表) 拿到这个问题的时候自然而然会想到让链表从末尾开始next   K-1 次不就是第K-1个节点了么,但是必须要注意一 ...

  3. Linux解压rar文件

    Linux解压rar文件(unrar安装和使用,分卷解压) windows平台很多压缩文档为rar文件,那么怎么做到Linux解压rar文件(unrar安装和使用)? 简单,centos5安装unra ...

  4. compiz隐藏最大化窗口标题栏

    xfwm换了compiz试试,还行,挺方便.就是这个隐藏最大化窗口的标题栏没有现成的ui设置项,google到如下解决方案: 修改后立即生效. https://planetkris.com/2009/ ...

  5. python 装饰器的坑

    今天研究了下装饰器,添加重试功能遇到了个坑,跟大家分享一下: 代码如下: def re_try(maxtry): print locals() def wrapper(fn): print local ...

  6. Python内部变量与外部变量

    def outer(): x = 'outer x' def inner(): x = 'inner x' print(x) inner() print(x) # 这里的`x`与`x = 'outer ...

  7. leetcode-第14周双周赛-1272-删除区间

    题目描述: 自己的提交: class Solution: def removeInterval(self, intervals: List[List[int]], toBeRemoved: List[ ...

  8. HIVE的Shell操作

    1.Hive支持的一些命令 退出使用quit或exit离开交互式外壳. set key = value使用它来设置特定配置变量的值. 这里要注意的一件事是,如果您对变量名拼写错误,cli将不会显示错误 ...

  9. Office VBA 参考

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

  10. 「ZJOI2019」语言 解题报告

    「ZJOI2019」语言 3个\(\log\)做法比较简单,但是写起来还是有点麻烦的. 大概就是树剖把链划分为\(\log\)段,然后任意两段可以组成一个矩形,就是个矩形面积并,听说卡卡就过去了. 好 ...