@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. 2018-2-13-win10-uwp-资源字典

    title author date CreateTime categories win10 uwp 资源字典 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...

  2. 2018-8-10-WPF-DrawingVisual

    title author date CreateTime categories WPF DrawingVisual lindexi 2018-08-10 19:16:53 +0800 2018-2-1 ...

  3. shell位置参数和 shift 命令

  4. egrep 正则

    首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支 ...

  5. 生产者消费者模式-->线程

    #_author:来童星#date:2019/12/17#生产者消费者模式-->线程from queue import Queueimport random,time,threading#生产者 ...

  6. PHP ftp_fput() 函数

    定义和用法 ftp_fput() 函数上传本地一个已经打开的文件,并在 FTP 服务器上把它保存为一个文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_fput(f ...

  7. [NOIP模拟测试11] 题解

    A.string 和河北的一道省选题很像.考场上写的暴力桶排,正解其实就是优化一下这个思路. 开线段树维护字符串中每个字母出现的次数.对于每条询问,区间查询.区间赋值维护即可. 另外,本题卡常严重,正 ...

  8. chromedriver安装(谷歌浏览器驱动安装)

    如果程序执行错误,浏览器没有打开,那么应该是没有装 Chrome 浏览器或者 Chrome 驱动没有配置在环境变量里.下载驱动,然后将驱动文件路径配置在环境变量即可. chromedriver下载地址 ...

  9. Mina(一)

    配置log4j注意事项: Log4J 1.2 users: slf4j-api.jar, slf4j-log4j12.jar, and Log4J 1.2.x slf4j-log4j*.jar要对应  ...

  10. PAT_A1117#Eddington Number

    Source: PAT A1117 Eddington Number (25 分) Description: British astronomer Eddington liked to ride a ...