Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

抖音无水印视频下载代码分析 #43

Open
Meekdai opened this issue Jan 17, 2024 · 0 comments
Open

抖音无水印视频下载代码分析 #43

Meekdai opened this issue Jan 17, 2024 · 0 comments
Labels

Comments

@Meekdai
Copy link
Owner

Meekdai commented Jan 17, 2024

看到有大神分享了一个去水印下载的代码,源代码是PHP的。我简单读了一下,测试后其实很简单,这里简单记录一下,之后可以做一些东西。

获取视频ID

其实这一步很简单,如果是电脑上的浏览器访问的,地址栏最后就会包含这个ID。例如

https://www.douyin.com/video/7324602766213598501

最后面的一串数字就是这个视频的ID。

获取uri

通过API获取这个视频play_addruri地址。

https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?reflow_source=reflow_page&item_ids=7324602766213598501&a_bogus=64745b2b5bdc4e75b720a9a85b19867a

只需要替换上面链接中的item_ids=7324602766213598501这一项的数字就是视频ID。然后在返回的页面中可以看到很长一段json数据。格式化一下,更容易查看:

{
	"item_list": [{
		"aweme_id": "7324602766213598501",
		"desc": "#江西文旅 #庐山雪景  我来给我家乡江西上分啦!欢迎大家来九江庐山看雪呀~ 超级美!",
		"create_time": 1705391987,
		"author": {
			"short_id": "11491514",
			"nickname": "饭思思",
			"signature": "爱唱歌爱cos~\n来围脖找我玩呀:饭思思的微博\n合作邮箱:[email protected]\n唯一小号@万年婴儿肥",
			"avatar_thumb": {
				"uri": "100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2",
				"url_list": ["https://p3.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p11.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p26.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172"]
			},
			"avatar_medium": {
				"uri": "100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2",
				"url_list": ["https://p3.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p11.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p26.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172"]
			},
			"follow_status": 0,
			"following_count": 0,
			"favoriting_count": 0,
			"unique_id": "sisi2442",
			"mplatform_followers_count": 0,
			"followers_detail": null,
			"platform_sync_info": null,
			"geofencing": null,
			"policy_version": null,
			"sec_uid": "MS4wLjABAAAAOEQzC2nJjIS5Zq5QFgfRxxLKGODQj0Vvlz8gciLF8Tg",
			"type_label": null,
			"card_entries": null,
			"mix_info": null
		},
		"music": {
			"mid": "7324602840553409291",
			"title": "@饭思思创作的原声一饭思思(原声中的歌曲:此生不换-Qing Niao Fei Yu)",
			"author": "饭思思",
			"cover_hd": {
				"uri": "1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2",
				"url_list": ["https://p11.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p3.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p6.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172"]
			},
			"cover_large": {
				"uri": "1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2",
				"url_list": ["https://p11.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p3.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p6.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172"]
			},
			"cover_medium": {
				"uri": "720x720/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2",
				"url_list": ["https://p11.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p3.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172", "https://p26.douyinpic.com/aweme/720x720/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2.jpeg?from=116350172"]
			},
			"cover_thumb": {
				"uri": "168x168/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2",
				"url_list": ["https://p11.douyinpic.com/img/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2~c5_168x168.jpeg?from=116350172", "https://p3.douyinpic.com/img/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2~c5_168x168.jpeg?from=116350172", "https://p26.douyinpic.com/img/aweme-avatar/tos-cn-avt-0015_31b2187fc176a131cb13a70cd0a840f2~c5_168x168.jpeg?from=116350172"]
			},
			"duration": 30,
			"position": null,
			"status": 1
		},
		"cha_list": null,
		"video": {
			"play_addr": {
				"uri": "v0200fg10000cmj3edbc77u6r20l0bg0",
				"url_list": ["https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200fg10000cmj3edbc77u6r20l0bg0\u0026ratio=720p\u0026line=0"]
			},
			"cover": {
				"uri": "tos-cn-i-0813/oQAAMUHgQBALifT2L35EYfK2sc7qKBAfPEG7At",
				"url_list": ["https://p3-sign.douyinpic.com/tos-cn-i-0813/oQAAMUHgQBALifT2L35EYfK2sc7qKBAfPEG7At~c5_300x400.webp?x-expires=1706662800\u0026x-signature=KDss1boVmMbpV9s1B7wXy6s0984%3D\u0026from=3213915784_large\u0026s=PackSourceEnum_DOUYIN_REFLOW\u0026se=false\u0026sc=cover\u0026biz_tag=aweme_video\u0026l=20240117093850F434F462C106845AC2B1", "https://p9-sign.douyinpic.com/tos-cn-i-0813/oQAAMUHgQBALifT2L35EYfK2sc7qKBAfPEG7At~c5_300x400.webp?x-expires=1706662800\u0026x-signature=Gm32fNnhaB%2BuHg%2FdYYtGDzaOTh8%3D\u0026from=3213915784_large\u0026s=PackSourceEnum_DOUYIN_REFLOW\u0026se=false\u0026sc=cover\u0026biz_tag=aweme_video\u0026l=20240117093850F434F462C106845AC2B1", "https://p26-sign.douyinpic.com/tos-cn-i-0813/oQAAMUHgQBALifT2L35EYfK2sc7qKBAfPEG7At~c5_300x400.webp?x-expires=1706662800\u0026x-signature=pRe9L5y22stsKjkV5kho%2BOHklXE%3D\u0026from=3213915784_large\u0026s=PackSourceEnum_DOUYIN_REFLOW\u0026se=false\u0026sc=cover\u0026biz_tag=aweme_video\u0026l=20240117093850F434F462C106845AC2B1", "https://p3-sign.douyinpic.com/tos-cn-i-0813/oQAAMUHgQBALifT2L35EYfK2sc7qKBAfPEG7At~c5_300x400.jpeg?x-expires=1706662800\u0026x-signature=cX7dhmiOZft%2BHL8bY0%2Btx%2BvziPg%3D\u0026from=3213915784_large\u0026s=PackSourceEnum_DOUYIN_REFLOW\u0026se=false\u0026sc=cover\u0026biz_tag=aweme_video\u0026l=20240117093850F434F462C106845AC2B1"]
			},
			"height": 1080,
			"width": 1920,
			"bit_rate": null
		},
		"statistics": {
			"aweme_id": "7324602766213598501",
			"comment_count": 4719,
			"digg_count": 70996,
			"play_count": 0,
			"share_count": 4648,
			"collect_count": 2021
		},
		"text_extra": [{
			"start": 0,
			"end": 5,
			"type": 1,
			"hashtag_name": "江西文旅",
			"hashtag_id": 1641348211717134
		}, {
			"start": 6,
			"end": 11,
			"type": 1,
			"hashtag_name": "庐山雪景",
			"hashtag_id": 1587012021222414
		}],
		"video_labels": null,
		"image_infos": null,
		"risk_infos": {
			"warn": false,
			"type": 0,
			"content": "",
			"reflow_unplayable": 0
		},
		"comment_list": null,
		"geofencing": null,
		"video_text": null,
		"label_top_text": null,
		"promotions": null,
		"long_video": null,
		"images": null,
		"group_id_str": "7317867723025960233",
		"chapter_list": null,
		"interaction_stickers": null,
		"img_bitrate": null
	}],
	"filter_list": [],
	"extra": {
		"now": 1705455530245,
		"logid": "20240117093850F434F462C106845AC2B1"
	},
	"status_code": 0
}

可以找到video里面play_addruri地址为v0200fg10000cmj3edbc77u6r20l0bg0

得到无水印视频链接

用上一步得到的uri地址,替换下面的${data.video.play_addr.uri}就可以了

https://www.iesdouyin.com/aweme/v1/play/?video_id=${data.video.play_addr.uri}&ratio=1080p&line=0

所以这个例子里面得到无水印视频下载地址为:

https://www.iesdouyin.com/aweme/v1/play/?video_id=v0200fg10000cmj3edbc77u6r20l0bg0&ratio=1080p&line=0

需要注意的是,这个uri地址是会变的,所以需要实时获取才有效。

参考链接

https://github.com/x-dr/douyin

@Meekdai Meekdai added the 日常 label Jan 17, 2024
@Meekdai Meekdai changed the title 抖音无水印视频下载 抖音无水印视频下载代码分析 Jan 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant