一. 背景
十多年的好友,龙哥,是一名国企管理人员,前端时间倾心于研究短视频平台创作。
如果每次素材完全都自己做,哼哧哼哧一个视频要弄3-4个小时。他做亲子互动题材,累了2个月,收获甚微。
他发现,抑或打听到一个快速涨粉养号的渠道,那就是可以搬运同类题材的视频到自己的号上,如果是热点内容,搬过来也是热点,并且这个是经过平台验证过的。
当然素材还挂着别人的水印肯定不行,有心了自己稍微剪辑一下,不想费心了修改下 md5 值也可以。
龙哥说了这个烦恼,这忙得帮。
二. 接口解析
1. 处理流程:
-
判断链接类型(电脑网页版或手机分享链接)
-
提取视频ID(短链接需处理重定向)
-
构造请求URL 获取HTML内容
使用 httpx 库发起异步HTTP请求
设置 follow_redirects=True 自动处理重定向
使用伪装的User-Agent避免被反爬async with httpx.AsyncClient(follow_redirects=True) as client: response = await client.get(share_url, headers=self.get_default_headers()) response.raise_for_status()
-
正则提取包含视频信息的JSON数据
使用正则表达式搜索包含视频信息的JavaScript变量
抖音将视频数据存在 window._ROUTER_DATA 变量中
提取并解析JSON格式数据pattern = re.compile( pattern=r"window\._ROUTER_DATA\s*=\s*(.*?)</script>", flags=re.DOTALL, ) find_res = pattern.search(response.text) json_data = json.loads(find_res.group(1).strip())
-
解析JSON获取视频信息和图集信息
# 视频播放地址替换水印版本为无水印版本 video_url = data["video"]["play_addr"]["url_list"][0].replace("playwm", "play") # 获取重定向后的最终MP4地址 video_mp4_url = await self.get_video_redirect_url(video_url)
2. 核心技巧
- URL转换:将带水印URL转换为无水印URL,关键是把playwm替换为play
- 请求头伪装:使用fake_useragent生成随机User-Agent 重定向处理:使用httpx库处理短链接重定向获取真实视频ID
- 正则提取:使用正则表达式提取HTML中的JSON数据 数据处理:从JSON中提取无水印视频、封面、标题、作者信息等
三. 小程序功能设计
可以搜“轻影无损去水印”,目前已经上架,欢迎试用,有问题随时交流。
主页,能自动从剪切板粘贴,也能一键清空链接,同样支持自动解析分享链接。
解析结果页,漂亮!