抖音视频去水印
实现思路
首先需要在抖音复制一个视频链接,【癞蛤蟆想吃天鹅肉。%表白 %每帧都是表情包 https://v.douyin.com/Jpjr22a/ 复制此链接,打开抖音搜索,直接观看视频!】
复制其中的视频链接进行访问,会跳转到如下界面

可以看到复制链接打开后域名由www.v.douyin.com 变成了 www.iesdouyin.com ,可见其发生了重定向
F12查看一下这个页面,发现有一个video标签,把src链接复制出来看一下

果然是获取到了视频!!

既然获取到了视频,接下来也就是去水印的问题了,看一下这个链接
https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300ff50000bvjhii2m4tg2rat9l3l0&ratio=720p&line=0
有没有感觉这个playwn 的wx有点像water mask的简写呢,去掉试一下

我顶! 还真获取到了!!!
这样的话我们就可以直接获取 https://v.douyin.com/Jpjr22a/ 这个链接重定向后页面的body,然后使用正则匹配到带水印的视频链接,再把链接中的playwn替换成play,就搞定啦
还有一种方式
直接访问分享的链接,我们在重定向后的页面打开NetWork,然后刷新一下

可以看到发送了一个ajax请求,item_ids应该是视频的id,点击查看响应的是一个json,复制到格式化工具中得到的是:
{
"status_code": 0,
"item_list": [{
"video_labels": null,
"video_text": null,
"is_live_replay": false,
"music": {
"title": "@悠创作的原声",
"cover_hd": {
"uri": "tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947",
"url_list": ["https://p3-dy-ipv6.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_1080x1080.jpeg?from=4010531038", "https://p6.douyinpic.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_1080x1080.jpeg?from=4010531038", "https://p9.douyinpic.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_1080x1080.jpeg?from=4010531038"]
},
"cover_large": {
"uri": "tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947",
"url_list": ["https://p3-dy-ipv6.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_1080x1080.jpeg?from=4010531038", "https://p6.douyinpic.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_1080x1080.jpeg?from=4010531038", "https://p9.douyinpic.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_1080x1080.jpeg?from=4010531038"]
},
"cover_thumb": {
"uri": "tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947",
"url_list": ["https://p3-dy-ipv6.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_168x168.webp?from=4010531038", "https://p29-dy.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_168x168.webp?from=4010531038", "https://p9.douyinpic.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_168x168.webp?from=4010531038", "https://p3-dy-ipv6.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_168x168.jpeg?from=4010531038"]
},
"play_url": {
"uri": "https://sf3-cdn-tos.douyinstatic.com/obj/ies-music/6908003385950505735.mp3",
"url_list": ["https://sf3-cdn-tos.douyinstatic.com/obj/ies-music/6908003385950505735.mp3", "https://sf6-cdn-tos.douyinstatic.com/obj/ies-music/6908003385950505735.mp3"]
},
"duration": 9,
"status": 1,
"id": 6908003431412174000,
"mid": "6908003431412173575",
"author": "悠",
"cover_medium": {
"uri": "tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947",
"url_list": ["https://p9-dy.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_720x720.jpeg?from=4010531038", "https://p1-dy-ipv6.byteimg.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_720x720.jpeg?from=4010531038", "https://p3.douyinpic.com/img/tos-cn-i-0813/f055619f58ac43a2bf24e91c8369f947~c5_720x720.jpeg?from=4010531038"]
},
"position": null
},
"desc": "癞蛤蟆想吃天鹅肉。#表白 #每帧都是表情包",
"share_info": {
"share_weibo_desc": "#在抖音,记录美好生活#癞蛤蟆想吃天鹅肉。#表白 #每帧都是表情包",
"share_desc": "在抖音,记录美好生活",
"share_title": "癞蛤蟆想吃天鹅肉。#表白 #每帧都是表情包"
},
"geofencing": null,
"forward_id": "0",
"aweme_id": "6910519894912109827",
"text_extra": [{
"end": 12,
"type": 1,
"hashtag_name": "表白",
"hashtag_id": 1553309084406785,
"start": 9
}, {
"type": 1,
"hashtag_name": "每帧都是表情包",
"hashtag_id": 1589464115430413,
"start": 13,
"end": 21
}],
"duration": 6129,
"risk_infos": {
"warn": false,
"type": 0,
"content": ""
},
"label_top_text": null,
"group_id": 6910519894912110000,
"cha_list": [{
"cha_name": "表白",
"desc": "",
"user_count": 0,
"connect_music": null,
"type": 0,
"view_count": 0,
"hash_tag_profile": "",
"cid": "1553309084406785",
"is_commerce": false
}],
"share_url": "https://www.iesdouyin.com/share/video/6910519894912109827/?region=&mid=6908003431412173575&u_code=48&titleType=title&did=0&iid=0",
"comment_list": null,
"author_user_id": 2049117125355886,
"long_video": null,
"promotions": null,
"is_preview": 0,
"create_time": 1608980812,
"author": {
"geofencing": null,
"policy_version": null,
"type_label": null,
"nickname": "表情分享站",
"signature": "表情分享,谢谢关注!\n取图+微信公众号:表情窝",
"avatar_larger": {
"url_list": ["https://p3-dy-ipv6.byteimg.com/aweme/1080x1080/3170f000be146459d1113.jpeg?from=4010531038", "https://p9.douyinpic.com/aweme/1080x1080/3170f000be146459d1113.jpeg?from=4010531038", "https://p1-dy-ipv6.byteimg.com/aweme/1080x1080/3170f000be146459d1113.jpeg?from=4010531038"],
"uri": "3170f000be146459d1113"
},
"avatar_medium": {
"url_list": ["https://p3.douyinpic.com/aweme/720x720/3170f000be146459d1113.jpeg?from=4010531038", "https://p29-dy.byteimg.com/aweme/720x720/3170f000be146459d1113.jpeg?from=4010531038", "https://p9-dy.byteimg.com/aweme/720x720/3170f000be146459d1113.jpeg?from=4010531038"],
"uri": "3170f000be146459d1113"
},
"followers_detail": null,
"platform_sync_info": null,
"uid": "2049117125355886",
"short_id": "3636122949",
"avatar_thumb": {
"uri": "3170f000be146459d1113",
"url_list": ["https://p29-dy.byteimg.com/aweme/100x100/3170f000be146459d1113.jpeg?from=4010531038", "https://p3-dy-ipv6.byteimg.com/aweme/100x100/3170f000be146459d1113.jpeg?from=4010531038", "https://p9.douyinpic.com/aweme/100x100/3170f000be146459d1113.jpeg?from=4010531038"]
},
"unique_id": "biaoqing2020"
},
"video": {
"play_addr": {
"uri": "v0300ff50000bvjhii2m4tg2rat9l3l0",
"url_list": ["https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0300ff50000bvjhii2m4tg2rat9l3l0&ratio=720p&line=0"]
},
"height": 1920,
"origin_cover": {
"uri": "tos-cn-p-0015/1081c181f5034a0181e7e2c2b04f6b16_1608980813",
"url_list": ["https://p29-dy.byteimg.com/tos-cn-p-0015/1081c181f5034a0181e7e2c2b04f6b16_1608980813~tplv-dy-360p.jpeg?from=2563711402", "https://p3-dy-ipv6.byteimg.com/tos-cn-p-0015/1081c181f5034a0181e7e2c2b04f6b16_1608980813~tplv-dy-360p.jpeg?from=2563711402", "https://p9-dy.byteimg.com/tos-cn-p-0015/1081c181f5034a0181e7e2c2b04f6b16_1608980813~tplv-dy-360p.jpeg?from=2563711402"]
},
"has_watermark": true,
"bit_rate": null,
"vid": "v0300ff50000bvjhii2m4tg2rat9l3l0",
"cover": {
"uri": "tos-cn-p-0015/476ad9b3b1c043249f138133784b7bec",
"url_list": ["https://p5-dy-ipv6.byteimg.com/img/tos-cn-p-0015/476ad9b3b1c043249f138133784b7bec~c5_300x400.jpeg?from=2563711402_large", "https://p9.douyinpic.com/img/tos-cn-p-0015/476ad9b3b1c043249f138133784b7bec~c5_300x400.jpeg?from=2563711402_large", "https://p6-dy-ipv6.byteimg.com/img/tos-cn-p-0015/476ad9b3b1c043249f138133784b7bec~c5_300x400.jpeg?from=2563711402_large"]
},
"width": 1080,
"dynamic_cover": {
"uri": "tos-cn-p-0015/e10109578ccb43fbb4c54e2e9bdb7afc_1608980814",
"url_list": ["https://p5-dy-ipv6.byteimg.com/obj/tos-cn-p-0015/e10109578ccb43fbb4c54e2e9bdb7afc_1608980814?from=2563711402_large", "https://p29.douyinpic.com/obj/tos-cn-p-0015/e10109578ccb43fbb4c54e2e9bdb7afc_1608980814?from=2563711402_large", "https://p9-dy.byteimg.com/obj/tos-cn-p-0015/e10109578ccb43fbb4c54e2e9bdb7afc_1608980814?from=2563711402_large"]
},
"ratio": "720p",
"duration": 6129
},
"statistics": {
"digg_count": 61422,
"play_count": 0,
"aweme_id": "6910519894912109827",
"comment_count": 14082
},
"aweme_type": 4,
"image_infos": null
}],
"extra": {
"now": 1610525887000,
"logid": "20210113161807010015034211500632E2"
}
}
可以看到数据还是挺丰富的,视频的地址是在item_list下video.play_addr.url_list中,复制下这个地址用浏览器访问一下果然得到了视频

不过这个视频也是带水印的,把视频链接中的playwn改成play就可以啦
思路总结
1.访问客户端分享文本中的链接,从重定向后的url中提取视频id,https://www.iesdouyin.com/share/video/后的数字就是视频id。
2.访问https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=视频id获取有关该视频的json字符串。
3.从得到的json字符串中提取视频播放地址,在item_list下video.play_addr.url_list中。
4.将视频地址中的playwm替换为play。
5.使用移动端的user-agent访问替换后的视频地址即可得到无抖音水印的视频。
需要的核心代码同学可以在下方留言,另外附上一张自己做的去水印的小程序

此文章参考思路:https://www.cnblogs.com/xyz-s/p/13634757.html

浙公网安备 33010602011771号