抖音去水印代码解析部分代码,抖音xgorgon还有设备参数生成算法

抖音xgorgon还有设备参数生成算法

xgorgon有了他做什么用呢?

可以获取用户所有作品列表

获取抖音搜索热门列表

获取正在直播的用户购物车数据

获取抖音 粉丝列表

如果老同一个设备去请求 就会请求不到数据, 而设备算法 就是让你去频繁去请求的时候。

下面就是部分代码示例,需要算法可以在向我发送邮件。[email protected]

在分享一下抖音的去水印代码解析,当然不只是这一种写法,还有很多种,你要了解他的原理。

@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(0).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();

byte[] ins = Jsoup.connect(matchUrl).maxBodySize(6000000).headers(headers).timeout(15000).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);

out.write(ins,0,ins.length);

out.flush();

out.close();

//in.close();

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

return dataResponse;

}

需要上述微信小程序前端源码的朋友可以发邮件找我索要  [email protected]

原文地址:https://www.cnblogs.com/javaxuezhiqian/p/12623747.html

时间: 2024-08-12 12:27:07

抖音去水印代码解析部分代码,抖音xgorgon还有设备参数生成算法的相关文章

网页抖音去水印源码

源码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device

NET 解析HTML代码——NSoup

NET 解析HTML代码——NSoup NSoup是一个开源框架,是JSoup(Java)的.NET移植版本 1.直接用起来 NSoup.Nodes.Document htmlDoc = NSoup.NSoupClient.Parse(HTMLString); //无需实例化 NSoup的强大之处在于可以用类似js的方法来获取节点元素 通过元素类型获取元素GetElementByTag("p") NSoup.Select.Elements ele= htmlDoc.GetElement

ffmpeg代码解析

void avdevice_register_all(void){    static int initialized;    if (initialized)        return;    initialized = 1;    /* devices */    REGISTER_INOUTDEV(ALSA,             alsa);    REGISTER_INDEV   (AVFOUNDATION,     avfoundation);    REGISTER_INDEV

[nRF51822] 10、基础实验代码解析大全 &#183; 实验15 - RTC

一.实验内容: 配置NRF51822 的RTC0 的TICK 频率为8Hz,COMPARE0 匹配事件触发周期为3 秒,并使能了TICK 和COMPARE0 中断. TICK 中断中驱动指示灯D1 翻转状态, 即指示灯D1 以8Hz 的速率翻转状态 COMPARE0 中断中点亮指示灯D2 二.nRF51822的内部RTC结构: NRF51822 有两个RTC 时钟:RTC0,RTC1.两个RTC 均为24 位,使用LFCLK 低频时钟,并带有12 位分频器,可产生TICK.compare 和溢出

(转)Java二进制指令代码解析

转自http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html Java二进制指令代码解析 Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由ClassLoader将字节码载入运行.在字节码文件中,指令代码只是其中的一部分,里面还记录了字节码文件的编译版本.常量池.访问权限.所有成员变量和成员方法等信息(详见Java字节码格式详解).本文主要简单介绍不同Java指令的功能以及在代码中如何解析二进制指令. Ja

Storm中的LocalState 代码解析

官方的解释这个类为: /** * A simple, durable, atomic K/V database. *Very inefficient*, should only be * used for occasional reads/writes. Every read/write hits disk. */ 简单来理解就是这个类每次读写都会将一个Map<Object, Object>的对象序列化存储到磁盘中,读的时候将其反序列化. 构造函数指定的参数就是你在磁盘中存储的目录,同时也作为

android-XML解析之pull类型代码解析

由于之前的项目使用过xml文件的解析,但是在使用的时候都是从网上找到的代码,稍作修改就使用了,然而对其中的原理并不知所以然,所以再次想使用的时候,感觉还是空空的,不知道如何下手,为了更加深入的理解xml文件的解析,我从代码实现的角度做一些理解,但是我在看代码的时候,有些代码的实现还是没有办法读懂,还是太深奥.下面我就以我之见,写一些东西,作为记录. 在android中XML的解析有三种,分别为:SAX(Simple API XML).DOM(document object model).以及今天

Java二进制指令代码解析

http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html http://blog.csdn.net/sum_rain/article/details/39892219 http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html Java二进制指令代码解析 小注:去年在看<深入解析JVM>书的时候做的一些记录,同时参考了<Java虚拟机规范>.只是对指令的

[nRF51822] 12、基础实验代码解析大全 &#183; 实验19 - PWM

一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指在一个周期内,信号处于高电平的时间占整个信号周期的百分比,方波的占空比是50%. 2) 调制频率:周期的倒数. 3) 脉冲宽度:信号处于高电平的时间. 二.nRF51822的PWM产生: NRF51822 通过Timer.PPI 和GPIOTE 的配合实现PWM 的功能,由Timer 产生一个事件,