10行代码,帮你去掉抖音水印

叨叨几句

抖音截止一九年初。日活达到2.5亿。月活达到5亿。我知道很多人觉得玩抖音是玩物丧志。但是真正玩的好的。不仅没有丧志,而且还实现了’一个亿的小目标’。

步入正题

说到去水印。大家首先可能想到的是用什么算法,什么图像识别,但不好意思。这些都不需要。思路很简单,我们直接从抖音上下载视频用的是有水印的链接,那我们就找到无水印的链接,然后下载的视频不就是无水印的视频吗?

实现步骤

1.首先我们打开抖音app,选择一个视频,点击分享,然后选择复制链接。这时候我们会拿到如下内容"#在抖音,记录美好生活#大家觉得,画的像不像?@杨幂 http://v.douyin.com/6BXQAT/ 复制此链接,打开【抖音短视频】,直接观看视频!"。

2.复制链接,在浏览器中打开,如下图。
10行代码,帮你去掉抖音水印_第1张图片

3.打开开发者工具。仔细看下代码。我们会找到视频文件路径。如上图圈出位置。

4.复制该路径,在浏览器打开。如下图,但此时视频是有水印的。
10行代码,帮你去掉抖音水印_第2张图片

5.下面就是见证奇迹的时刻了。我们将视频链接中的“playwm”替换成“play”。然后再去访问。就可以获取无水印的视频了。

代码详情

public static void removeWaterMark() {

		//1.获取抖音分享链接
		String url = "http://v.douyin.com/6BXQAT/";
		
		//2.利用Jsoup请求指定url,得到网页html。
		String htmls = Jsoup.connect(url).ignoreContentType(true).execute().body();

		//3.利用正则匹配抖音视频链接
		Pattern patternCompile = Pattern.compile("(?<=playAddr: \")https?://.+(?=\",)");

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

		//5.利用Matcher中的group方法获取匹配的字符串,并将其替换。
		String matchUrl ="";
		while(matcher.find()) {
			matchUrl = matcher.group(0).replaceAll("playwm", "play");
		}

		//6.将链接封装成流
		//注:由于抖音对请求头有限制,只能设置一个伪装手机浏览器请求头才可实现去水印下载
		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");

		//7.利用Joup获取视频对象,并封装成一个输入流对象
		BufferedInputStream in = Jsoup.connect(matchUrl).headers(headers).timeout(10000).ignoreContentType(true).execute().bodyStream(); 

		//8.保存文件到指定位置
		File file= new File("d:/douyin.mp4");
		File fileParent = file.getParentFile();  
		if(!fileParent.exists()){  
			fileParent.mkdirs();  
		}  

		OutputStream out = 
				new BufferedOutputStream(
						new FileOutputStream(file));
		int b ;
		while((b = in.read()) != -1) {
			out.write(b);
		}
		
		out.close();
		in.close(); 
	}

关注公众号哦

10行代码,帮你去掉抖音水印_第3张图片

你可能感兴趣的:(10行代码,帮你去掉抖音水印)