实现效果:

  1. 在抖音复制分享链接
  2. 粘贴分享链接到App, 点击解析
  3. 点击 去下载 进入浏览器下载

获取无水印视频链接

首先我们使用浏览器打开分享的链接

8.97 teO:/ 一起玩水吧 在这炽热的夏天%%蓝色治愈系 %%夏天 %%游泳 https://v.douyin.com/Y5SpHKD/ 复制此链接,打开Dou音搜索,直接观看视频!

然后打开控制台找到对应的视频, 右键检查可以找到视频的链接
https://www.douyin.com/aweme/v1/play/?video_id=v0200fg10000ca08sgbc77udtm7m06p0

然后在浏览器中打开此链接发现是没有水印的视频, 稍后下载的视频使用的是此链接.

通过测试其他分享的视频发现不同视频对应的video_id不同, 于是需要找到获取video_id的请求.
https://www.douyin.com/aweme/v1/play/?video_id=xxx
通过控制台将设备改成移动端设备, 点击分享的链接https://v.douyin.com/Y5SpHKD/, 这时有一条请求进入我们的视线:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7097830584419962125

该请求的响应有我们需要的video_id
该请求有一个参数item_ids, 此参数正是点击分享链接后重定向链接的一部分

因此我们只需要解析该链接就可以拿到item_ids

至此, 就得到了下载无水印视频的全过程。

  1. 根据https://v.douyin.com/Y5SpHKD/的重定向地址https://www.iesdouyin.com/share/video/7097830584419962125获取item_ids=7097830584419962125
  2. 根据https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7097830584419962125的响应拿到vid
  3. 根据www.douyin.com/aweme/v1/play/?video_id=v0200fg10000ca08sgbc77udtm7m06p0下载视频

实现

model层

通过传入的分享链接, 获取无水印视频链接

public class DouyinDownloadModel {private final OkHttpClient mOkHttpClient = new OkHttpClient();public void download(InputBean inputBean, DownloadListener downloadListener) {Request.Builder builder = new Request.Builder().get().url(inputBean.getShareUrl());requestInit(builder);Request request = builder.build();mOkHttpClient.newBuilder().followRedirects(false).build().newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(@NotNull Call call, @NotNull IOException e) {downloadListener.fail();}@Overridepublic void onResponse(@NotNull Call call, @NotNull Response response) {if (response.code() == 302) {String location = response.header("location");if (location != null) {System.out.println(location);String itemIds = parseItemIds(location);if (!TextUtils.isEmpty(itemIds)) {getVidByItemIds(itemIds, new GetVidRequestListener() {@Overridepublic void success(JsonRootBean bean) {Item_list item_list = bean.getItem_list().get(0);String vid = item_list.getVideo().getVid();String url = "https://www.douyin.com/aweme/v1/play/?video_id="+ vid;DownLoadResult downLoadResult = new DownLoadResult();downLoadResult.setVideoUrl(url).setNickName(item_list.getAuthor().getNickname()).setVideoDesc(item_list.getDesc());downloadListener.success(downLoadResult);}@Overridepublic void fail() {downloadListener.fail();}});} else {downloadListener.fail();}}}}});}public void getVidByItemIds(String itemIds, GetVidRequestListener getVidRequestListener) {String url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + itemIds;System.out.println(url);Request.Builder builder = new Request.Builder().get().url(url);requestInit(builder);Request request = builder.build();mOkHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(@NotNull Call call, @NotNull IOException e) {getVidRequestListener.fail();}@Overridepublic void onResponse(@NotNull Call call, @NotNull Response response)throws IOException {if (response.code() == 200) {response.body();String jsonString = response.body().string();Gson gson = new Gson();System.out.println(jsonString);JsonRootBean jsonRootBean = gson.fromJson(jsonString, JsonRootBean.class);System.out.println(jsonRootBean.getItem_list().get(0).getVideo().getVid());getVidRequestListener.success(jsonRootBean);}}});}public interface DownloadListener {void success(DownLoadResult downLoadResult);void fail();void onProgress(int progress);}interface GetVidRequestListener {void success(JsonRootBean bean);void fail();}public void requestInit(Request.Builder builder) {builder.addHeader("user-agent","Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 "+ "(KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/101.0.4951.41");}public String parseItemIds(String text) {String regex = "\\d{19}";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(text);if (m.find()) {return m.group();}return null;}
}

Presenter层

View层

源代码 + Apk

参考

  1. 重定向的链接在谷歌F12中看不到
  2. 认识Android中的MVP设计模式

Android初学 抖音短视频无水印下载APP的实现相关推荐

  1. 某音短视频无水印下载APP的Android端实现

    近日对于某音的短视频下载有个需求,借鉴网上大神的相关经验,写了个简单的无水印下载视频的APP. 抖音视频无水印下载的Android端APP实现 操作步骤 1. 点击抖音视频的分享按钮,在下面的菜单栏中 ...

  2. 抖音短视频无水印下载的方法

    说有一个朋友,暂且叫他小明,问我能不能帮他下载一个抖音短视频,要求去除水印,里面有他非常喜欢的小姐姐. 话说,我这么善良的一个人,怎么会拒绝他的请求,主要是我也想看看这个小姐姐怎么样. 一顿操作猛如虎 ...

  3. 【福利】Python抖音小视频无水印下载工具助手exe

    本渣渣的一个老哥要的抖音小视频无水印下载,我觉得他是一个LSP,因为抖音上的小姐姐实在是太多,太好看了! 可是他就是不发好看的小姐姐抖音号给我... 难道我的肾没有他强?! 不可能啊,本渣渣经常吃韭菜 ...

  4. 利用python爬虫实现:抖音短视频无水印视频下载

    各位小伙伴,之前一段时间迷上了抖音小姐姐视频,但是下载的视频都有水印,于是自己用Python 写了个爬取小姐姐视频的工具,大家可以直接拷贝到自己编译器上运行.经过半天的琢磨,自己用python搞出来一 ...

  5. java开发抖音短视频无水印下载工具

    思路分析 首先在抖音APP段选择你喜欢的视频进行分享,一般分享链接都是这样的:"http://v.douyin.com/111113/",这并不是真的下载地址,在浏览器中输入上述地 ...

  6. 安卓网apk安装器_短视频无水印下载,apk提取,带壳截图 iOS Android极客必备的三款软件,你全都用上了吗?...

    短视频无水印下载,apk提取,带壳截图 iOS Android 极客必备的三款软件,你全都用上了吗? 7SIZE丨插图内容来自于网络侵权删 给大家介绍 Android,iOS 上三款在生活中必备的三款 ...

  7. 抖音短视频批量采集下载软件哪些好?如何下载?轻松搬运视频,快速批量处理水印去除LOGO!...

    抖音短视频批量采集下载软件哪些好?如何下载? 抖音短视频去重消重去水印软件哪些好?如何下载? 腾讯视频批量采集下载软件哪些好?怎么下载? 腾讯视频去重消重去水印软件哪些好?如何下载? 轻松搬运视频,快 ...

  8. 怎么让抖音视频当做铃声android,把抖音短视频做成手机铃声,原来这么简单!...

    原标题:把抖音短视频做成手机铃声,原来这么简单! "一日不抖,如隔三秋" 相信十个人里面 有九个都中了抖音的毒 刷起来完全控制不住自己 最近大火的抖音短视频炒火了不少民谣音乐人及一 ...

  9. python视频解析库_python某音短视频无水印解析

    [Python] 纯文本查看 复制代码import requests import re import tkinter as tk #用户名: (.*?) #简介: (.*?) #封面:cover: ...

最新文章

  1. 使用ThinkPHP实现生成/校验验证码功能
  2. 英特尔九州云99Cloud OpenStack行业应用研讨会
  3. 安卓Android科大讯飞语音识别代码使用详解
  4. python学习环境安装_python学习系列----环境的安装
  5. Android安全教程(2)---Fiddler简易使用教程之使用
  6. LRU算法四种实现方式介绍
  7. 图像处理技术(三)白平衡
  8. 他是奥运会银牌获得者,还是世界知名数学家,他的家族让世界为之倾倒
  9. HBase性能优化方法总结 (转)
  10. c语言输入学生成绩q退出,C语言-学生成绩管理系统实验报告13页
  11. 微服务调用链追踪中心搭建
  12. uni-app 启动页控制
  13. 英雄连的制作公司THQ历史
  14. 债券价格和到期收益率的关系_债券价格与到期收益率之间的关系.PPT
  15. 爱情刚刚开始是最美好的
  16. 微信域名防封系统-微信域名预拦截预防封
  17. 论文的参考文献格式怎么弄呢?
  18. ClickOnce 通过URL传递参数
  19. 微信小程序多个倒计时
  20. python的pandas库的pd.read_excel()常用解析

热门文章

  1. 个人总结的一个VMP脱壳步骤.
  2. 用matlab绘制翼型,机翼翼型的Matlab编程
  3. VS exe独立程序打包—Enigma Virtual Box
  4. html点击图标出现日历,日历图标的纯CSS实现
  5. goip设备的特点_架设通讯网络设备为境外诈骗集团服务 3男子被田东警方抓获...
  6. linux驱动开发:触摸屏的认识(FT5x06 IC的分析)
  7. Ubuntu 使用 du 查看某个文件夹大小
  8. vue2.0创建项目步骤
  9. 大家都应该了解的“客户备付金”
  10. centos7只更新安全补丁