首先,在抖音上找到想要下载或者保存的小视频。
其次,点击视频右侧边栏的分享按钮,在最下方一栏找到复制链接,然后点击复制链接,这个时候,这个短视频的链接就复制到了手机的粘贴板上了。
然后,打开手机中的记事本,粘贴分享的视频链接,会得到一个以https开头的链接,这个链接接下来就是我要用到的东西。
分析接口
1,将得到抖音分享链接直接用电脑上的浏览器打开,按F12打开调试器。然后F5刷新页面,我将获得抖音服务器给我们返回的信息。
2,在我的调试器窗口中,可以看到,浏览器在刷新的时候进行了多次服务器的请求,只需要找到对我有用的请求,如下图所示
3,分析服务器给我们返回来的数据,在调试器中找到preview并点击它,会获取到该视频的所有信息,这些信息其实是一个json封装的数据格式。
4,我都拿到该视频的所有数据了,那么剩下的就是对这些数据进行分析,通过分析发现,视频链接是存放在item_list->video->play_addr->url_list下面的。如下图所示
5,替换掉获取到的接口中的playwm为play即可得到该小姐姐的无水印视频,然后验证一下接口是否真的无水印了。
当我知道了抖音的视频链接存放位置,水印视频和无水印视频的区别之后,我就可以自己开发一个接口,后面就不用每次都要去分析视频接口,这个重复的工作就交给计算机去做即可。
JAVA代码处理
直接上代码,代码本来就比较简单,主要是分析过程,开发语言只是实现工具。
//模拟请求头 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服务是本地启动的,所以无法随时随地的访问,这个时候只需要将其打包上传到服务器即可,这样就能随时随地的获取抖音无水印视频链接了。
将得到的无水印视频链接放到手机或者浏览器上,都已直接进行保存到本地或者电脑上,具体方式这里就不再讲了。