首先,在抖音上找到想要下载或者保存的小视频。
其次,点击视频右侧边栏的分享按钮,在最下方一栏找到复制链接,然后点击复制链接,这个时候,这个短视频的链接就复制到了手机的粘贴板上了。
然后,打开手机中的记事本,粘贴分享的视频链接,会得到一个以https开头的链接,这个链接接下来就是我要用到的东西。
1,将得到抖音分享链接直接用电脑上的浏览器打开,按F12打开调试器。然后F5刷新页面,我将获得抖音服务器给我们返回的信息。
2,在我的调试器窗口中,可以看到,浏览器在刷新的时候进行了多次服务器的请求,只需要找到对我有用的请求,如下图所示
3,分析服务器给我们返回来的数据,在调试器中找到preview并点击它,会获取到该视频的所有信息,这些信息其实是一个json封装的数据格式。
4,我都拿到该视频的所有数据了,那么剩下的就是对这些数据进行分析,通过分析发现,视频链接是存放在item_list->video->play_addr->url_list下面的。如下图所示
5,替换掉获取到的接口中的playwm为play即可得到该小姐姐的无水印视频,然后验证一下接口是否真的无水印了。
当我知道了抖音的视频链接存放位置,水印视频和无水印视频的区别之后,我就可以自己开发一个接口,后面就不用每次都要去分析视频接口,这个重复的工作就交给计算机去做即可。
直接上代码,代码本来就比较简单,主要是分析过程,开发语言只是实现工具。
//模拟请求头
final static String usedAgent = "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/84.0.4147.105";
/**
* @param url
* @return
*/
@PostMapping("video")
@ApiOperation("抖音短视频解析接口")
public String getVideoUrl(@ApiParam(
required = true, value = "抖音短视频链接") @RequestParam String url) {
try {
//模拟浏览器请求分享地址
String body = HttpRequest.get(filterUrl(url))
.header(Header.USER_AGENT, usedAgent)
.execute()
.body();
String video_id = body.substring(body.indexOf("/video/") + 7, body.indexOf("/?"));
//这次请求才是我上文中分析的视频的真实请求地址
body = HttpRequest.get("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + video_id)
.header(Header.USER_AGENT, usedAgent)
.execute()
.body();
JSONObject json = JSONObject.parseObject(body);
String videoAddress = json.getJSONArray("item_list")
.getJSONObject(0).getJSONObject("video")
.getJSONObject("play_addr")
.getJSONArray("url_list")
.get(0).toString();
//替换链接中的playwm
return videoAddress.replaceAll("playwm", "play");
} catch (Exception e) {
return null;
}
}
/**
* 消除分享链接中的中文字符
*
* @param url
* @return
*/
public static String filterUrl(String url) {
String regex = "https?://(\w|-)+(\.(\w|-)+)+(/(\w+(\?(\w+=(\w|%|-)*(\&\w+=(\w|%|-)*)*)?)?)?)+";//匹配网址
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(url);
if (m.find()) {
return url.substring(m.start(), m.end());
}
return "";
}
直接快速地使用springboot框架+swagger搭建一个项目,将这个文件放到controller层下,启动项目。
直接在上图中红色框框中输入抖音的分享视频链接,然后点击下方的执行按钮,即可得到无水印视频的链接。链接是在response body中。
因为上面的JAVA服务是本地启动的,所以无法随时随地的访问,这个时候只需要将其打包上传到服务器即可,这样就能随时随地的获取抖音无水印视频链接了。
将得到的无水印视频链接放到手机或者浏览器上,都已直接进行保存到本地或者电脑上,具体方式这里就不再讲了。