zoukankan      html  css  js  c++  java
  • 【python】15行代码下载抖音无水印短视频


    1. 成果展示

    在这里插入图片描述

    2. 软件下载

    win64:https://ghgxj.lanzous.com/iygHjjb9psh

    win32maclinux用户请自行通过源码打包。

    3. 完整代码

    import re, json, requests
    from tqdm import tqdm # 打印进度条的库
    inp = input('请输入复制的抖音分享链接:')  # 如:https://v.douyin.com/JVFp8r5/
    url = re.findall('https://v.douyin.com/.*?/', inp)[0]  # 链接解析
    res = requests.get(url)
    vid = re.findall('/video/(.*?)/', res.url)[0]  # vid解析,vid就是视频id,是我自己定义的
    api = f'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={vid}' # 调用api
    res = requests.get(api).json()
    url = res['item_list'][0]['video']['play_addr']['url_list'][0]  # 视频下载链接解析
    url = url.replace('/playwm/', '/play/')  # 去水印
    res = requests.get(url, headers={'user-agent': 'chrome'})
    total_size = round(int(res.headers["Content-Length"])/1024/1024)
    with open(f'{vid}.mp4', 'wb') as f:
        for chunk in tqdm(iterable=res.iter_content(1024*1024), total=total_size, unit='KB'):
            f.write(chunk)
    

    4. 样例输入

    抖音短视频分享链接:https://v.douyin.com/JV2WKMu/

    1、点击分享
    在这里插入图片描述
    2、点击复制链接
    在这里插入图片描述
    3、将复制的文本作为程序的输入

    这小狐狸有点东西 #白蛇缘起  #送你一张动态壁纸!  https://v.douyin.com/JVjfqWe/ 复制此链接,打开抖音搜索,直接观看视频!
    

    你可以将复制的链接作为程序的输入,也可以将整个文本作为程序的输入,因为第4行代码会对输入进行解析:

    url = re.findall('https://v.douyin.com/.*?/', inp)[0]  # 链接解析
    

    5. 样例输出

    6867535672463478024.mp4:https://ghgxj.lanzous.com/i8VNsjb6qli

    1、可以看到已经没有水印了:
    在这里插入图片描述
    2、而带水印的视频是这样的:
    在这里插入图片描述

    6. 爬虫分析

    拿到抖音短视频分享链接后,在电脑浏览器中打开:
    在这里插入图片描述
    发现链接重定向为:

    https://www.iesdouyin.com/share/video/6867535672463478024/?region=CN&mid=6867536423961660174&u_code=191kjhch0&titleType=title&did=3764338486433038&iid=4133808108734896&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme
    

    将重定向链接中/video/后面的一串数字定义为vid

    vid = 6867535672463478024
    

    F12检查重定向后的页面,Network-XHR中发现一条网络请求:
    在这里插入图片描述
    请求的api为:

    https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6867535672463478024
    

    响应信息为:
    在这里插入图片描述
    响应信息中找到视频下载链接:

    https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200f7e0000bt76630o772qo1t21960&ratio=720p&line=0
    

    在浏览器中打开该下载链接会自动下载视频,但却是有水印的。水印的英文单词是watermark,缩写是wm,而视频下载链接中有playwm,我想如果将playwm改为play是不是就没有水印了,实验后发现果真是这样。


    总结一下:

    1. 对视频链接发起请求
    2. 从重定向链接中获取vid
    3. vid请求api接口
    4. 从响应中解析无水印下载链接

    7. 打包教程

    【python】将代码打包为软件:https://blog.csdn.net/qq_42951560/article/details/111086049

    8. 温馨提示

    水印本质上是对版权的一种保护,本文提供的方法仅供学习交流,请勿非法商用,如果你想转载抖音视频,请征求原作者的同意,并注明出处,拒绝营销。

    9. 相关推荐

    王者荣耀全英雄高清壁纸下载器:https://blog.csdn.net/qq_42951560/article/details/110914184

  • 相关阅读:
    CentOS之文件搜索命令locate
    CentOs之链接命令
    CentOs之常见目录作用介绍
    centOs之目录处理命令
    Query注解及方法限制
    Repository接口
    OkHttp和Volley对比
    Base64加密与MD5的区别?
    支付宝集成
    Android 中 非对称(RSA)加密和对称(AES)加密
  • 原文地址:https://www.cnblogs.com/ghgxj/p/14219062.html
Copyright © 2011-2022 走看看