🔮 抖音无水印地址&PHP接口开发

阿轩的BUG
文章191
评论56
标签101
站点日志
作者总数:1位
置顶文章:0篇
标签总数:101条
文章总数:196篇
评论总数:56条
微语总数:201条
运行天数:2317天
最近更新:2026-07-28
文章标签
最新评论
Sherlock
2025-08-21
不是应该打包成apk文件吗,怎么突然就运行编译了,下一步呢
老金er
2025-05-25
人生设计非常必要,在信息化发达的今天,周围大部分人依然只能过着人生工程模式生活,长时间生活洗礼后,尽管“人生工程”已经不再适合很多人,他们也无法做出任何改变,人生设计给我们提供了新的思路,值得尝试
赏帮赚
2025-05-25
职场太多的尔虞我诈
三笑
2024-08-16
emlog6.0.1可以升级支持吗?
pony
2024-07-08
这篇文章提供了一种新的人生规划方法——"人生设计",它借鉴了产品设计的理念,鼓励人们以创造性和探索性的方式思考和规划自己的生活。以下是对这篇文章的几个评价维度: 创新性:将产品设计的理念应用于人生规划是一个新颖的视角,为人们提供了一种跳出传统生活轨迹,探索个性化生活路径的方法。 实用性:文章不仅提出了理念,还详细介绍了具体的实施步骤,包括自我评估、制定计划、原型设计和实践选择等,具有很强的操作性。 启发性:通过强调好奇心、不断尝试、重新定义问题等心态,文章鼓励人们打破常规,勇于探索未知,这对于激发个人潜能和创造力具有积极作用。 适应性:"人生设计"理念适用于不同人生阶段和不同背景的人,无论是希望从头开始的人,还是已经取得一定成就但希望探索新方向的人,都可以从中获得启发。 情感共鸣:文章对许多人对传统生活轨迹的不满和对改变的渴望进行了深刻的洞察,能够引起读者的共鸣。 可持续性:人生设计强调的是一个持续迭代和试错的过程,这与现实生活的发展规律相吻合,有助于人们在不断变化的环境中做出适应性调整。 教育意义:作为一种人生规划方法,"人生设计"可以作为教育的一部分,帮助年轻人更早地学会自我探索和规划,为未来的生活和职业发展打下基础。 局限性:尽管"人生设计"提供了一种新的思考框架,但它可能需要个人具备一定的自我认知和反思能力,对于一些缺乏自我探索经验的人来说,可能需要额外的指导和支持。 总体来说,这篇文章提供了一种有价值的人生规划方法,对于那些渴望改变、寻求个性化生活的人来说,是一种有益的参考和指导。
首页踩坑记录 🎯

分享一下抖音最新无水印视频真实链接获取过程和PHP接口制作

前言

准备链接

链接:https://v.douyin.com/JNE8dJB/

访问链接

访问链接后会跳转到一个 船新 的地址
https://www.iesdouyin.com/share/video/6548694333237759240/?

审查元素

按下 F12 或者 右击网页选择审查元素 然后刷新页面
NewWork 里会对这个页面进行抓包

分析数据包

分析一下 NetWork 抓取的数据包

红框部分数据包请求的文件均为 img(图片) 可以直接略过
剩下三个数据包分别为document、script、xhr

  • document:原先访问短网址会跳转到一个全新的网址 这个数据包即为这个网页的网页源代码
  • script:这是一个JavaScript文件
  • xhr:这是一个xhr请求

分析xhr请求返回数据

点击这个xhr请求 康康返回了什么数据

返回了json数据 展开里面的数据 分析一下

找到一条可访问的视频地址 copy这条链接

研究地址

访问这条链接后会重定向到一个新的地址 会播放一个带水印的地址

尝试修改地址

原地址:https://aweme.snssdk.com/aweme/v1/playwm/?video_id=8fad853e0e6c48be87e0c991d51a4220&ratio=720p&line=0
尝试把playwm修改为play
新地址:https://aweme.snssdk.com/aweme/v1/play/?video_id=8fad853e0e6c48be87e0c991d51a4220&ratio=720p&line=0

访问这个新地址后一片空白 emmmmmmmmm 如果没报404的话说明还是有机会的
我尝试刷新下还是一片空白
我默默打开了 代码审计 还是一片空白
emmmmmmmmmm 切换下模拟移动设备访问 页面跳转到一个新的地址 这个地址竟然是无水印视频的地址

原来设置了移动设备的 User-Agent 就会跳转到无水印地址
所以在原页面的xhr请求才是关键 分析一下链接
链接:https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6548694333237759240
这个链接是一个GET请求 是对https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/
传递 item_ids 参数 参数值应该就是这个视频的ID
等等 一开始访问的网页重定向后得到的链接里不就有这个ID
重定向后的链接:https://www.iesdouyin.com/share/video/6548694333237759240/
这段地址里面不就包含了这个ID 搜嘎斯内
我尝试在这个网页源代码里查找这个作品的ID

竟然没有 emmmmmmmm 可能这个网页有他的想法
不过刚刚的抓包里是有一个script的数据包 可以分析一下
在js代码里搜索刚刚那个xhr请求的参数名 item_ids

阿西 我貌似发现了什么 这是一段get请求 原来如此
所以我们可以照着这个改写一份js代码出来

模拟请求一下并在控制台打印出json数据

$.get("/web/api/v2/aweme/iteminfo/", {
	item_ids: "6548694333237759240"
}, function (json) {
	console.log(json)
});

在控制台运行一下

Nice 成功请求数据并打印出json数据

优化代码

$.get("/web/api/v2/aweme/iteminfo/", {
	item_ids: "6548694333237759240"
}, function(json) {
	var url = json.item_list[0].video.play_addr.url_list[0]
	url = url.replace("/playwm/","/play/")
	console.log(url)
});

在控制台运行一下 成功打印出无水印地址

修改代码

$.get("/web/api/v2/aweme/iteminfo/", {
	item_ids: "6548694333237759240"
}, function(json) {
	var url = json.item_list[0].video.play_addr.url_list[0]
	url = url.replace("/playwm/","/play/")
	location.href = url
});

模拟移动设备环境下在控制台运行一下这段代码 切记一定要模拟移动设备的环境下 要不然会一片空白

Nice 成功跳转到无水印的下载地址 @(qqguzhang)

继续优化

原代码的item_ids是固定的 如果要在其他视频页面运行还是会跑到我这个视频过来 所以需要优化一下
所以修改为 location.href.split("/")[5]
这段代码可以先获取地址然后以“/”分割后会返回7个数组 第5个为这个视频的ID

$.get("/web/api/v2/aweme/iteminfo/", {
	item_ids: location.href.split("/")[5]
}, function(json) {
	var url = json.item_list[0].video.play_addr.url_list[0]
	url = url.replace("/playwm/","/play/")
	location.href = url
});

在模拟移动设备的环境下打开控制台并运行上述代码 成功跳转 @(qqdoge)

PHP接口开发

###整理思路
js代码研究完就尝试用PHP写一个接口 先重新理一下思路 解析需要哪些步骤

  1. 先访问短链得到长链
  2. 获取长链里的作品ID 再将作品ID请求到 /web/api/v2/aweme/iteminfo/ 接口并得到返回的数据
  3. 在返回的数据中找到视频链接
  4. 将视频链接里的 playwm 修改成 play
  5. 以移动端访问这个新链接即可得到无水印视频的地址

开始编写

<?
	$url = 'http://v.douyin.com/JNE8dJB/';
	$location = get_headers($url, 1)["location"];
	$videoid = explode('/', $location)[5];
	$json = json_decode(file_get_contents("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=".$videoid),true);
	$videourl = $json["item_list"][0]["video"]["play_addr"]["url_list"][0];
	$videourl = str_replace("/playwm/", "/play/", $videourl);
	$videourl = get_headers($videourl, 1)["location"];
	echo $videourl;
?>

经过测试 这段代码确实可以获取视频的无水印地址
现在改写这段代码 将这段代码改写成api接口

<?
	if (empty($_GET["url"])) {
		exit(json_encode(array("status"=>"-1","msg"=>"请传入抖音URL链接!")));
	} else {
		$url = 'http://v.douyin.com/JNE8dJB/';
		$location = get_headers($url, 1)["location"];
		$videoid = explode('/', $location)[5];
		if (!empty($videoid)) {
			$json = json_decode(file_get_contents("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=".$videoid), true);
			$videourl = $json["item_list"][0]["video"]["play_addr"]["url_list"][0];
			if (!empty($videourl)) {
				$videourl = str_replace("/playwm/", "/play/", $videourl);
				$videourl = get_headers($videourl, 1)["location"];
				if (!empty($videourl)) {
					exit(json_encode(array("status"=>"1","msg"=>"success","video"=>$videourl)));
				} else {
					exit(json_encode(array("status"=>"-1","msg"=>"解析失败,请检查链接!")));
				}
			} else {
				exit(json_encode(array("status"=>"-1","msg"=>"解析失败,请检查链接!")));
			}
		} else {
			exit(json_encode(array("status"=>"-1","msg"=>"链接有误,请检查链接!")));
		}
	}
?>

这就完工了 本方法不一定能一直适用 如果代码失效即为抖音更换接口 码字不易还望支持 本文仅供学习参考 请勿用于商业用途

上一篇
⚜ 第一个微信小程序
下一篇
🐳 抖音去水印解析接口