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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11091|回复: 22
收起左侧

[Python 转载] 分析抖音的分享链接,从中解析出无水印视频 ps.附python实现

[复制链接]
suyinchuo 发表于 2020-7-15 13:14
本帖最后由 suyinchuo 于 2020-7-15 14:50 编辑

|前言

许多小伙伴在刷抖音的时候看到自己喜欢的,或者有意义视频,想保存到自己的手机上,可是APP的保存到本地是带水印的.自己心心念念想要留下来的视频,当然是不希望下载的视频有水印,我们看到网上有很多解析抖音无水印视频的网站,他们是怎么做到的?其实很简单,今天就讲解如何手动解析

|手动步骤如下

复制想要解析的视频链接到电脑的浏览器上打开(这里演示用的是chrome,其他浏览器也大同小异.)按F12打开或者右键审查元素
选择Network这个标签,接着点亮手机图标(模拟手机请求页面就可以显示视频了)然后按【F5】刷新就显示手机版网页了
在搜索框中搜索【item】点击我框选的这行,然后这行的右边会出现一个框框,依次展开item_list→0→video→play_addr→url_list
步骤.png
到浏览器地址框粘贴,别着急回车键访问,把url里的playwn改成play然后访问,这时候打开有可能会是空白。
空白.png
然后继续按F12打开或者右键审查元素,把手机图标点亮然后f5刷新就出来了
出来了.png
右键视频另存为即可下载了~

|Python实现

作为一个专(la)业(ji)程序员,能用代码解决的事情,为什么要手动?
前边浏览器需要修改为手机访问,但是python只需在request请求头添加上访问方式即可

headers = {
    'User-Agent': 'User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1',
}

这里我们模拟Iphone手机
然后使用requests带上请求头,访问我们抖音的url

url = 'https://v.douyin.com/JFmwXkr/'
response = requests.get(url, headers=headers)

上边我们浏览器打开抖音的链接之后发现浏览器的链接被重定向了另外一个链接

https://www.iesdouyin.com/share/video/6847881060131278095/?region=CN&mid=6847881063209945869&u_code=5k45ja3i&titleType=title&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme

这个我们通过浏览器地址栏可以看到,所以必然是难不倒python,requests可以获取到这个链接的哦

 now_url = response.url

然后我们分析下一步,我们是通过搜索item请求,从响应里面找到了无水印的链接.下面贴出来item请求的链接

https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6847881060131278095&dytk=

我们发现这个链接有两个参数,多年经验来看这个参数肯定是动态的,我们想要模拟请求,肯定要取到这两个参数,dytk是空的,所以我们先只找item_ids
细心的小伙伴已经发现了,item_ids就是上面重定向之后链接里面video后面的数字,nice,我们通过正则把id取出来,百度之后发现有些视频dytk也是需要的,所以也要取出来

pat_item_ids = '/video/(.*?)/'
item_ids = re.compile(pat_item_ids, re.S).findall(now_url)
pat_dytk = 'dytk: "(.*?)"'
dytk = re.compile(pat_dytk, re.S).findall(response.text)

然后我们拼接成参数,请求这个地址,直接把返回的数据转成json

url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/'
params = {
    'item_ids': item_ids,
    'dytk': dytk 
}
response = requests.get(url, headers=headers, params=params).json()

到这一步就简单了,我们已经成功获取了item那个请求返回的数据,无水印的url就在这个json里面,我们直接把他取出来,然后把playwm替换成paly

true_url = response['item_list'][0]['video']['play_addr']['url_list'][0]
true_url = true_url.replace('playwm','play')

细心的小伙伴肯定又发现了取到真实url之后打开视频又重定向了,所以最终的真实地址肯定是重定向的这个地址,我们继续请求,把最终地址取出来

response = requests.get(true_url, headers=headers)
true_url = response.url

最终这个true_url就是无水印视频的链接,复制到浏览器打开就可以下载了

|完整代码

import re

import requests

headers = {
    'User-Agent': 'User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1',
}

url = 'https://v.douyin.com/JFmwXkr/'  # 抖音分享的链接,自行更改
response = requests.get(url, headers=headers)

now_url = response.url
pat_item_ids = '/video/(.*?)/'
item_ids = re.compile(pat_item_ids, re.S).findall(now_url)

pat_dytk = 'dytk: "(.*?)"'
dytk = re.compile(pat_dytk, re.S).findall(response.text)

url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/'
params = {
    'item_ids': item_ids,
    'dytk': dytk
}
response = requests.get(url, headers=headers, params=params).json()
true_url = response['item_list'][0]['video']['play_addr']['url_list'][0]
true_url = true_url.replace('playwm','play')
response = requests.get(true_url, headers=headers)
true_url = response.url
print(true_url)

提示缺少模块,安装requests

pip install requests

码字不易,欢迎大家收藏评论以及投币哦~

楼下那个发成品的大家尽量不要用,挺简单的程序最大几个mb,他的下载来100MB~见仁见智各位~

免费评分

参与人数 6吾爱币 +10 热心值 +5 收起 理由
红尘旧梦i + 1 【重新投稿】自己动手干掉抖音水印,带个手就能搞定 https://www.52pojie.c.
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
吾爱远哥 + 1 用心讨论,共获提升!
微微笑95 + 1 + 1 我很赞同!
金基德居仁 + 1 鼓励转贴优秀软件安全工具和文档!
Allyn0303 + 1 + 1 我很赞同!

查看全部评分

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

HuapaiJ 发表于 2020-7-15 14:38
主要就是替换链接里面的playwm为play就可以取到,成品链接:https://marts.lanzouj.com/ioZFCehx8gd
lovelymichelle 发表于 2020-7-15 13:42
suyinchuo 发表于 2020-7-15 13:37
分辨率这东西我不是很懂,现在市面上大多数的解析都是这样来弄的

带水印直接保存的都是720p。有在iOS手机上边试过无水印的捷径,解出来的都是576*1024,所以不知道是不是平台本身的限制。
生生不息_ 发表于 2020-7-15 13:23
lovelymichelle 发表于 2020-7-15 13:31
谢谢分享!马住试一下
求问视频分辨率最大只有720p吗?
 楼主| suyinchuo 发表于 2020-7-15 13:37
lovelymichelle 发表于 2020-7-15 13:31
谢谢分享!马住试一下
求问视频分辨率最大只有720p吗?

分辨率这东西我不是很懂,现在市面上大多数的解析都是这样来弄的
poon 发表于 2020-7-15 13:39
收藏一下,有时间再研究看看
断桥隔爱 发表于 2020-7-15 13:55
上一份易语言的源码
天道法海 发表于 2020-7-15 14:02
我去,我刚试了,还真不带水印,原来是这样搞,呜。。。。。泪目。。。。感谢老哥
kgdlx 发表于 2020-7-15 14:03
楼主, 有没有成品用?
knury 发表于 2020-7-15 14:13
不明觉厉~~~~~~~~~~~~~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

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

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

GMT+8, 2024-4-29 09:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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