在短视频盛行的当下,我们时常会遇到想要保存并使用的视频,但视频上的水印却成了困扰。水印不仅影响视觉效果,还可能对视频的二次创作与使用造成阻碍。那么,如何巧妙地去除这些水印呢?本文将深入探讨 2025 年最新的短视频去水印解析思路,不过需特别提醒,这些方法仅用于学习交流,请勿用于非法或侵犯他人版权的行为。​


废话不多说,直接贴代码
这是抖音

# -*- coding: utf8 -*-
import requests  # 数据请求库第三方库
import re  # 正则模块
import json
import sys

# 伪装请求头方式/请求头参数
headers = {
    'cookie': '请填写你的cookie',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70 '
}


def DyVideoCraw(url):
    response = requests.get(url=url, headers=headers)
    # 获取网页源代码
    # print(response.text)
    try:
        html_date = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script', response.text)[0]
        html_date = requests.utils.unquote(html_date)
        # print(html_date)
        # 解析出标题
        title_data = re.findall('"desc":"(.*?)","', html_date)[0]
        # print(title_date)
        # 解析出封面
        cover_data = 'https:' + re.findall('originCover":"(.*?)","', html_date)[0]
        # print(cover_date)
        # 解析出视频地址
        date1 = re.findall('playAddr(.*?),', html_date)[0]
        video_url = 'https:' + re.findall('"src":"(.*?)"}', date1)[0]
        # print(video_url)
        video_obj = {
            "type": "video",
            "video": video_url,
            "title": title_data,
            "cover": cover_data
        }
        r_data = json.dumps(video_obj)
        print(r_data)
    except IndexError:
        print("1")




def DyImageCraw(url):
    response = requests.get(url=url, headers=headers)
    # 获取网页源代码
    # print(response.text)
    try:
        html_date = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script', response.text)[0]
        html_date = requests.utils.unquote(html_date)
        # print(html_date)
        # 解析出标题
        title_date = re.findall('"desc":"(.*?)","', html_date)[0]
        # print(title_date)
        # 解析出图片地址
        date1 = re.findall('"images":\[(.*?)],"imageInfos"', html_date)[0]
        date1 = re.findall('"urlList":\["(.*?)"],"downloadUrlList', date1)
        images_list = []
        for i in date1:
            images_list.append(i.split('","')[0])
        images_obj = {
            "type": "image",
            "images": images_list,
            "title": title_date
        }
        r_data = json.dumps(images_obj)
        print(r_data)
    except IndexError:
        print("1")


if __name__ == '__main__':
    a = []
    for i in range(1, len(sys.argv)):
        a.append(sys.argv[i])   
    # print(a[0])
    if a[0][23:28]=='video':
        DyVideoCraw(a[0])
    else:
        DyImageCraw(a[0])

这是BILIBILI

# -*- coding: utf8 -*-
import json
import re  # 正则模块
import sys

import requests  # 数据请求库第三方库

# 伪装请求头方式/请求头参数
headers = {
    'cookie': "请填入你的Cooke",
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70 ',
    'Referer': 'https://www.bilibili.com/'
}


def BilVideoCraw(url):
    response = requests.get(url=url, headers=headers)
    # print(response.text)
    try:
        title = re.findall('<title data-vue-meta="true">(.*?)</title>', response.text)[0]
        # print(title)
        cover_data = 'https:' + re.findall('itemprop="thumbnailUrl" content="(.*?)">', response.text)[0]
        # print(cover_data)
        html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]
        # print(html_data)
        json_data = json.loads(html_data)
        # pprint(json_data)
        # 字典数据  b站视频  和 音频是分离的
        audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
        video_url = json_data['data']['dash']['video'][0]['baseUrl']
        video_obj = {
            "type": "video",
            "video": video_url,
            "audio": audio_url,
            "title": title,
            "cover": cover_data
        }
        r_data = json.dumps(video_obj)
        print(r_data)
    except IndexError:
        print("1")

if __name__ == '__main__':
    a = []
    for i in range(1, len(sys.argv)):
        a.append(sys.argv[i])
    BilVideoCraw(a[0])

拉进python里面直接就可以使用!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐