很多的时候,就想把自己喜欢的博主的短视频批量保存下来,或者 发到朋友圈,也是一个很不错的选择,基于这样的考虑,就想着找找有没有合适的方式来做。
在网络上,TaoBao上其实已经有这样的渠道了。但是,本着自力更生,有能力去做这件事的考虑,还是主动去分析相关技术的实现。.
原理分析
获取视频相关地址可以通过 单个视频的分享里的复制连接 ,也可以在其主页分享,获取分享连接。
这个链接在游览器打开展示的地址是不同的。
获取抖音分享主页
个人的二维码

查看我的二维码

右上角箭头点击

下面的复制链接
他人的主页二维码
点开视频

右上角点三个点

分享主页

复制链接,搞定

这个时候要通过游览器的UA设置来模拟手机运行。
谷歌游览器 修改 UserAgent 图解
谷歌游览器打开开发者工具
然后,选手机模拟和选择合适的手机样子

这种可以修改UA,但是,不够定制化。
这个时候就可以在开发者工具的右上角点击 三个点 (More Tools - NetWork Conditions)

然后,就会在控制台的位置出现

然后,取消 select automatically 选项。
下边就可以选指定的游览器类型的UA了。
某音 主页 分析
获取了链接之后,大致如下的链接
7- 长按复制此条消息,打开抖音搜索,查看TA的更多作品。https://v.douyin.com/Y6BuYKo/
后边的链接地址就是我们需要的地址
单页和主页的区分
通过区分 video / user 来区分是否是 单页或者主页的
单页分析
先分析单页
单页通过修改UA后打开,就会有在 NetWork的 请求里发现 这样的数据。
其中 play_addr 里面的 Url_list 就是视频地址
可以通过修改 playwm 为 play 直接打开,就看到了视频,这个视频就是无水印的,可以直接下载下来。

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300f8a0000bvs4dgjq7jcdbdgoof70&ratio=720p&line=0
修改为
https://aweme.snssdk.com/aweme/v1/play/?video_id=v0300f8a0000bvs4dgjq7jcdbdgoof70&ratio=720p&line=0

可以直接右键另存为到桌面,就实现了一个视频的去水印效果。
主页
另外一种是主页相关的 如果你打开是主页,

可以通过 某个请求的 列表来获取相关视频,跟上边单个页面的结构一致,只是它内部视频很多,但是,都是一样的,肯定有能下载下来的链接。
他们分页的方式就在于 max_cursor参数上
https://www.XXX.com/web/api/v2/aweme/post/?sec_uid=MS4wLjABAAAAysUt-yCvhBczP1jHKGvSuDWiKce7usLhI8zcL2c1oEg&count=21&max_cursor=0&aid=1128&_signature=EzNZjwAAc2z0RKGJVhzMgxMzWZ&dytk=
通过直接修改 max_cursor 参数为 结果里的 同样的参数就可以获取下一页,通过 Has_more 来判断是否到达最后一页。
由此可以解决这个问题。
原理实现
最后达成的结果就是:

直接通过爬虫,直接获取列表全部信息
当然,我还获取了视频的标签。
不过要注意的是,如果是图文的,我就没有获取。有兴趣的朋友,可以自己试试。

技术栈
最后运用的技术栈有

列表的主要是要有一个网页页面的运行环境,它会自己去请求列表的地址。
只要获取这个地址就可以了。
代码地址
https://github.com/kesshei/DouYinBatchDownDemo.git