吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 30577|回复: 226
收起左侧

[原创工具] 抖音无水印解析全过程及开源源码

    [复制链接]
DLWangSan 发表于 2020-3-19 21:20
本帖最后由 DLWangSan 于 2020-3-20 20:13 编辑

2020-3-20 更新帖子:修复加载失败的图片

在网上看过一些论坛帖,有一些解析抖音无水印视频的教程。说是教程,其实大部分都是提供接口,或引流或卖接口。我想看看究竟是怎么实现的去水印。立帖记录全过程。

1.浏览器分析

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

#在抖音,记录美好生活#再见,武汉!战“疫”英雄要回家了。一路平安~https://v.douyin.com/WuRMPV/复制此链接,打开【抖音短视频】,直接观看视频

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

浏览器打开初试链接

浏览器打开初试链接

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

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200fba0000bpo4s1b82vu9dp4ehlog&line=0

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

直接打开src链接

直接打开src链接

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

http://v6-dy-y.ixigua.com
/8d090338ca04948b648bb7e4ba0b215f/5e72da81/video/tos/hxsy/tos-hxsy-ve-0015/832e6e52408d4c1e931b763b152e5d21
/?a=1128&br=0&bt=2405&cr=0&cs=0&dr=0&ds=3&er=&l=202003190935350101940982142734B1FC&lr=aweme&qs=0&rc=am9oc
zx5OzQ3czMzZGkzM0ApODVpNzk8OWRmNzVnM2g1N2dsZTFhci9fcGxfLS1fLS9zczM0Yl8vMzVfYGBhNmItYTE6Yw%3D%3D&vl=&vr=

分析之前的地址:

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200fba0000bpo4s1b82vu9dp4ehlog&line=0

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

无水印视频

无水印视频

2. 代码实现

先测试一下下载流媒体。

def download(video_url, file_name):
    r = get_resp(video_url)
    with open(file_name, 'wb') as mp4:
        for trunk in r.iter_content(1024 * 1024):
            if trunk:
                mp4.write(trunk)

调用之后可以正常下载视频。所以可以放心写爬虫获取到这个真实地址了。剩下的按照第一步的手动操作即可。

遇到了一个大问题,即在初始页面上没有视频地址,必须点击一下按钮,才会跳出。故直接用XPATH会找不到要的链接。怎么办呢?首先想到模拟点击,但是这样我就需要使用selenium(或许有更好的办法我想不到),这样就会让程序庞大不少。非我所愿。
仔细观察页面,发现页面下方的js有这样一段:

$(function(){
            require('web:component/reflow_video/index').create({
                hasData: 1,
                videoWidth: 720,
                videoHeight: 1280,
                playAddr: "https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc561699c13ffb2ce3cacb960e9bcb7c0b8f9f0ec410108d165bd0bfd2b83c1070676ccafc940fd5dc933ea73704a90e4faf&line=0",
                cover: "https://p3.pstatp.com/large/tos-cn-p-0015/584d6a06932940998a1decc057ab2978_1584418313.jpg"

            });
        });

这不就把地址封面直接给我了吗。实在有种“得来全不费功夫”的感觉!
写一个函数来解析js:

# 从script中获取真实视频地址
def findUrlInScript(script):
    test = script.split('playAddr: "', 1)
    test = test[1].split('",', 1)
    like_link = test[0]
    link = like_link.replace('playwm', 'play').strip()
    return link

给文件命名:

    id = et.xpath("//*[@id='pageletReflowVideo']/div/div[2]/div[2]/div/div[2]/p/text()")[0].split('@')[1]
    content = et.xpath("//*[@id='pageletReflowVideo']/div/div[2]/div[2]/p/text()")[0]
    content = content.split('#')[0].split(',')[0].split('。')[0].split('?')[0].split('?')[0].split(',')[0].split('!')[0].split('!')[0]
    name = id + ':' + content + '.mp4'

随便测试一个,已经可以下载到根目录了。为了工整,还是创建一个文件夹用于保存吧~

    if not os.path.exists(path):
        os.mkdir(os.getcwd() + '\\douyin_download')
    os.chdir(path)

调用download的时,加一个路径的参数即可。测试成功!

下载成功图

下载成功图

无水印

无水印

测试确实把水印去了,至此,核心功能已经全部实现,编写总代码~~~

3. 最后一步 封装

从来没有用过python的用户界面,但是这次想发到论坛,所以还是简单做一个用户界面方便使用吧。
口碑比较好的似乎是PyQt,试一下吧~

工具还是比较好的,但是我第一次用,所以界面比较丑,也存在一些小bug,比如说错误的链接会闪退~下个版本再更新吧

打包后效果

打包后效果

最终代码已经上传到github上,看到的帮我点个star吧~
源码及成果



开源抖音小工具v1下载地址.txt

31 Bytes, 下载次数: 1041, 下载积分: 吾爱币 -2 CB

免费评分

参与人数 62吾爱币 +57 热心值 +52 收起 理由
5乐知 + 1 + 1 用心讨论,共获提升!
帅气的小莲 + 1 + 1 我很赞同!
isjeffery + 1 + 1 谢谢@Thanks!
yaoyuan40234454 + 1 谢谢@Thanks!
liqian3022 + 1 + 1 我很赞同!
m16yjq + 1 + 1 之前就看过你贴,今天把分加上
mypj52 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zhuzhang + 1 谢谢@Thanks!
suifeng3533 + 1 + 1 热心回复!
yiranww + 1 热心回复!
king669 + 1 + 1 谢谢@Thanks!
秦君子 + 1 用心讨论,共获提升!
卡卡龙 + 1 我很赞同!
liu2500 + 1 + 1 很牛,继续加油
小涛哥 + 1 点下载闪退
loopsn + 1 + 1 谢谢@Thanks!
lsf42 + 1 用心讨论,共获提升!
GloryNotes + 1 + 1 我很赞同!
asprey + 1 + 1 这个阔以,秒下的!
seewoa + 1 + 1 我很赞同!
木子李的爱 + 1 + 1 谢谢@Thanks!
areslk + 1 谢谢@Thanks!
ye4wzp + 1 + 1 用心讨论,共获提升!
西门金歌 + 1 继续加油!期待更好的作品。
Nusenli + 1 + 1 用心讨论,共获提升!
wuwwww + 1 + 1 我很赞同!
MO_LI + 1 鼓励转贴优秀软件安全工具和文档!
你好感恩丶 + 1 谢谢@Thanks!
super33 + 1 谢谢@Thanks!
cs425 + 1 + 1 我很赞同!
submarine1620 + 1 + 1 谢谢@Thanks!
Jxnuay + 1 + 1 第一步方法我在csdn看到过,一直想写个py可惜没有思路,感谢楼主的分享
rhmagicli + 1 + 1 我很赞同!
羽翼 + 1 + 1 谢谢@Thanks!
qianhe + 1 用心讨论,共获提升!
iyangheng + 1 谢谢@Thanks!
回的一手好帖 + 1 + 1 用心讨论,共获提升!
yixinnb + 1 + 1 可以
我笨丶丶 + 1 + 1 我很赞同!
白小莫 + 1 谢谢@Thanks!
狐狼 + 1 + 1 谢谢@Thanks!
va80 + 1 + 1 谢谢@Thanks!
林伊轩 + 1 + 1 热心回复!
uen + 1 + 1 谢谢@Thanks!
蟹黄包 + 1 + 1 热心回复!
chw1999 + 1 谢谢@Thanks!
yangyou719 + 1 https://v.douyin.com/7YJQmS/ 下载失败
台词 + 1 + 1 用心讨论,共获提升!
★天若有情★ + 1 + 1 我很赞同!
wdpfox + 1 + 1 谢谢@Thanks!
18023999 + 1 + 1 哎呦,真心觉得很不错,值得用用
来自天堂的问候 + 1 谢谢@Thanks!
Tiger2018 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zqjyh + 1 + 1 用心讨论,共获提升!
caoxino + 1 + 1 你好,能否出个安卓成品?
經經 + 1 热心回复!
jellybz + 1 + 1 用心讨论,共获提升!
WalkerTT + 1 + 1 用心讨论,共获提升!
as大叔 + 1 + 1 谢谢@Thanks!
zxcdsaz + 1 厉害了楼主
hs7z + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

god888 发表于 2020-3-22 08:34
输入链接后自动退出,是不是有问题?
头像被屏蔽
wdpfox 发表于 2020-3-22 13:56
 楼主| DLWangSan 发表于 2020-3-19 21:48
红先生 发表于 2020-3-20 13:03
受教了,感谢楼主分享过程!
xiaoyemu 发表于 2020-3-20 14:00
感谢!!
还有图裂开了!!
ASKZ晨风 发表于 2020-3-20 14:13
学习了,感谢楼主的分享!
jupiterzhan 发表于 2020-3-20 14:36
好东西,我学习一下
行无疆心飞翔 发表于 2020-3-20 14:37
感谢楼主分享
Antigen 发表于 2020-3-20 14:38
这个可以有,牛逼!
JeeChou 发表于 2020-3-20 14:49
厉害,学习了!
zdnyp 发表于 2020-3-20 16:56
图片挂了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-30 03:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表