zoukankan      html  css  js  c++  java
  • 【Python爬虫】抖音去水印

    在网上看过一些相关教程,有一些解析抖音无水印视频的教程。说是教程,其实大部分都是提供接口,或引流或卖接口。究竟是怎么实现的去水印,就小小地研究了一下。

    1.浏览器分析

    从抖音短视频中分享一段视频。可以得到

    我开始期待夏天和你一起吃西瓜,就像期待冬天和你一起吃火锅,其实我对夏天冬天没有特别喜欢,只是期待和你一起 https://v.douyin.com/cgLgew/ 复制此链接,打开【抖音短视频】,直接观看视频!

    我将这段文字中的链接部分复制下来,在浏览器打开。并使用开发者工具调试(F12或鼠标右键)。

    可以看到在video标签中存在一个链接。

    https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc5672cdb2cfaefa126d6cf6ef5532d6940d8202ba55baeffa88df4f525e02e3d9d4a2ac45fb4360d6d7d7735806d8db4a00&line=0

    复制该链接在浏览器打开:

     发现仍然是带水印的视频,而且页面重定向成了新地址:

    http://v26-dy.ixigua.com/6687f6c2701783a302bb486ec3398aad/5e906717/video/tos/cn/tos-cn-ve-15/479476156a58407e939bc3535e4b584a/?a=1128&br=0&bt=2078&cr=0&cs=0&dr=0&ds=3&er=&l=2020041019310601001404601506236F71&lr=aweme&qs=0&rc=ajZvZDhsNHM1dDMzZmkzM0ApNDRpM2k4O2Q6N2Y1ZDs3ZGdyMmYwaGphXjNfLS02LS9zc182LTQuLi00LzMtL2BiLzQ6Yw%3D%3D&vl=&vr=

    分析之前的地址:

    https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc5672cdb2cfaefa126d6cf6ef5532d6940d8202ba55baeffa88df4f525e02e3d9d4a2ac45fb4360d6d7d7735806d8db4a00&line=0

    包含playwm 后面的wm是什么意思?(wm就是WaterMark,水印的意思),将playwm改成play,并将请求的User-Agent修改为手机。便得到了无水印版本的视频。手动操作部分结束!

    2. 代码实现

    Github:

    https://github.com/HuanGeNet/douyinkillwatermark

    import requests,re
     
    share = input("请输入你要去水印的抖音短视频链接:")
    pat = '(https://v.douyin.com/.*?/)' 
    url = re.compile(pat).findall(share)[0]  #正则匹配分享链接
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3904.108 Safari/537.36'
    }
    r = requests.get(url, headers=headers)
    pat = 'playAddr: "(.*?)",'
    play = re.compile(pat).findall(r.text)[0].replace("playwm", "play")
    headers = {
        'user-agent': 'Android',
    }
    r = requests.get(play, headers=headers, allow_redirects=False)
    playurl = r.headers['location']
    
    #自定义文件名保存短视频
    name = input("===>正在下载保存视频,请输入视频名称:")
    video = requests.get(url=playurl, headers=headers)
    with open(name+".mp4", 'wb')as file:
        file.write(video.content)
        file.close()
        print("===>视频下载完成!")
    
    #完事后退出程序
    input("===>press enter key to exit!")

    为了方便使用,我打包成了EXE文件

     https://www.lanzous.com/ib7coji

  • 相关阅读:
    02 .NET CORE 2.2 使用OCELOT -- 路由
    01 .NET CORE 2.2 使用OCELOT -- 简单使用
    Winows上简单配置使用kafka(.net使用)
    【C#】 获取计算机的硬件信息
    使用NPOI进行Excel操作
    Xamarin 开发Android应用简易教程(1)
    【日常笔记】字符串加密
    【日常笔记】生成验证码图片
    [Winfrom] 使用一个启动快捷方式,打开2个不同的窗体并且共用一个缓存空间
    windows获取物理mac地址
  • 原文地址:https://www.cnblogs.com/HGNET/p/12675644.html
Copyright © 2011-2022 走看看