【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析

这篇具有很好参考价值的文章主要介绍了【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接口分析

获取接口地址

选择自己感兴趣的抖音博主,本次以“经典老歌【车载U盘】”为例

抖音视频提取 python代码,python,爬虫,javascript


每次请求的页面会有很多接口,需要对接口进行筛选:
第一步筛选XHR筛选
第二步筛选URL中带有post

抖音视频提取 python代码,python,爬虫,javascript


通过筛选play_add值找到视频的地址

抖音视频提取 python代码,python,爬虫,javascript

抖音视频提取 python代码,python,爬虫,javascript

分析请求头

通过对比两次请求发现只有X-Bogus数值会有变化,max_cursor是用翻页,后文再介绍。

抖音视频提取 python代码,python,爬虫,javascript

JS逆向分析

找入口

先通过简单方式搜索关键字找:

抖音视频提取 python代码,python,爬虫,javascript


在当前两个位置增加断点,发现并没有断到请求,说明没有走两个位置
通过开发者工具中中的启动器定位:

抖音视频提取 python代码,python,爬虫,javascript


断第一个,发现这是个ajax请求,不止一个请求会走这里,通过XHR断点的方式指定访问路径

抖音视频提取 python代码,python,爬虫,javascript

抖音视频提取 python代码,python,爬虫,javascript

抖音视频提取 python代码,python,爬虫,javascript

上图就是当前的访问URL。 在控制端输入this或者鼠标悬停方式发现已生成X-Bogus

抖音视频提取 python代码,python,爬虫,javascript

分析前一步调用的js

抖音视频提取 python代码,python,爬虫,javascript


这段代码是一个简单的循环语句。它根据 _0x2458f0['y'] 的值来执行不同的逻辑。
在每次循环中,它首先对 _0x2458f0['y'] 进行自增操作(++),然后使用逻辑运算符 ? : 进行条件判断:
如果条件为真,执行 _0xcc6308[++_0x2e1055] = _0x2458f0['apply'](_0xc26b5e, _0x1f1790);
如果条件为假,不执行任何操作。
这段代码的具体意义需要结合上下文来进行分析和理解,无法单独判断出它的功能和目的。

通过日志断点来分析当前_0x2458f0['apply'](_0xc26b5e, _0x1f1790)语句生成的结果。日志断点语句console.log(_0x2458f0['apply'](_0xc26b5e, _0x1f1790))。控制台只允许显示信息类数据,通过日志分析找到了X-Bogus参数:DFSzswVOljJANtOstup5PBt/pL3I

抖音视频提取 python代码,python,爬虫,javascript


由于输出数据过多需要通过条件断点来继续追踪,因为每次生成的X-Bogus长度是固定28位,通过条件断点语句_0x2458f0['apply'](_0xc26b5e, _0x1f1790).length==28。
查看_0x2458f0调用的函数

抖音视频提取 python代码,python,爬虫,javascript


定位到加密函数

抖音视频提取 python代码,python,爬虫,javascript


验证当前加密函数
当前位置打上断点,在控制台输入返回的值生成了X-Bogus

抖音视频提取 python代码,python,爬虫,javascript

JS实现生成X-Bogus值

新建JS文件,将webmssdk.es5.js中所有代码复制到js文件中,并直接执行,差什么补什么

抖音视频提取 python代码,python,爬虫,javascript


以下是需要加入的代码

window = global
document = {}
document.addEventListener =function (){}

这时候就会发现不再报错了,那么就可以使用一个全局变量获取X-Bogus值了,找到之前加密的函数_0x5a8f25那里。

抖音视频提取 python代码,python,爬虫,javascript


再补一次

navigator = {
    "userAgent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}

抖音视频提取 python代码,python,爬虫,javascript

Python调用js

import execjs

with open("douyin.js") as f:
    js_data = f.read()

js_compile =execjs.compile(js_data)
xb_data =js_compile.call("window.xiaoc",)
print(xb_data)

抖音视频提取 python代码,python,爬虫,javascript

Python获取视频URL

获取页面信息

import execjs,requests
headers = {
    # UA 要和JS代码里的UA保持一致
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "Referer": "https://www.douyin.com/user/MS4wLjABAAAAF0zlK2_5qCr5Lqy6zLNMH8W146aOetdfKSX95jYXwi8",
    "Cookie": "xxxxxx"
}

with open("douyin.js") as f:
    js_data = f.read()

js_compile =execjs.compile(js_data)
url = "https://www.douyin.com/aweme/v1/web/aweme/post/?"
params =f'device_platform=webapp&aid=6383&channel=channel_pc_web&sec_user_id=MS4wLjABAAAAF0zlK2_5qCr5Lqy6zLNMH8W146aOetdfKSX95jYXwi8&max_cursor=0&locate_query=false&show_live_replay_strategy=1&need_time_list=1&time_list_query=0&whale_cut_token=&cut_version=1&count=18&publish_video_strategy_type=2&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1707&screen_height=1067&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=119.0.0.0&browser_online=true&engine_name=Blink&engine_version=119.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=7.9&effective_type=4g&round_trip_time=50&webid=7310230678028846631&msToken=XWdh8ZPfrgSs9QombFXY3DJxXhH3HTyjw7NtYb6tpW9wYpaZqIAuhcZmOtQBu-7qgnSFswVdEZ2cKWsg6A4_WkxwyxIH3CCuMoLOUh4H6iqGBk7-ba8jaBufrmt2jw=='
xb_data =js_compile.call("window.xiaoc",params)
urls = url +params + "&X-Bogus=" + xb_data
print(urls)
response = requests.get(url=urls,headers=headers)
print(response.json())

抖音视频提取 python代码,python,爬虫,javascript

###数据清洗 获取视频URL ```python douyin_videos = response.json().get("aweme_list") for douyin_video in douyin_videos: print(douyin_video["video"]['play_addr']['url_list'][0]) ```

抖音视频提取 python代码,python,爬虫,javascript

下载视频

os.makedirs(f"./DouYin/")
douyin_videos = response.json().get("aweme_list")
for douyin_video in douyin_videos:
    douyin_video_title =douyin_video['desc']
    douyin_video_url = douyin_video["video"]['play_addr']['url_list'][0]
    res = requests.get(douyin_video_url, headers=headers)

    try:
        with open(f"./DouYin/{douyin_video_title}.mp4", "wb") as f:
            f.write(res.content)
            print(f"视频{douyin_video_title}-----下载完成")
    except Exception as e:
        print(f"视频{douyin_video_title}+++++++++++++++=下载出错 {e}")

抖音视频提取 python代码,python,爬虫,javascript

抖音视频提取 python代码,python,爬虫,javascript文章来源地址https://www.toymoban.com/news/detail-840227.html

到了这里,关于【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】抖音无水印视频下载

    最近工作中用到了python,想起了之前看过的爬虫视频,实战一下 代码:          这样,就把目标视频存到了本地的0828.mp4 使用的时候只要把target_url替换成自己想要下载的抖音视频分享链接就行 base_url和video_url_base加tobemyslf获取哦~ 

    2023年04月10日
    浏览(22)
  • Python实现超简单【抖音】无水印视频批量下载

    python免费学习资料以及群交流解答点击即可加入 01 获取你喜欢的拍客的视频url 即抖音用户主页的url,我将以罗永浩的主页连接为例(本人第一次下载抖音就是冲着罗永浩去的,所以也只关注了他一个人) 1. 获取主页链接 打开抖音,点进用户的主页面,点击右上角的三个点:

    2024年04月24日
    浏览(43)
  • python爬虫实战案例——某站视频爬虫

    今天突然发现,某站的视频在电脑上是不能下载的。于是乎,就打算在电脑上爬取一下某站的视频。让大家在电脑上也能看, 某站的视频是音频和视频分开的,我在网上搜了一下,要用到一个叫ffmpeg的音视频合成的库,网上教程很多,大家搜一下就可以找到了,我就不在此赘

    2024年02月10日
    浏览(24)
  • python抓取抖音无水印视频和无水印图集下载(个人分析思路)

    注重版权,转载请注明原作者和原文链接 作者:向往同学 目录 最近无事练手的爬虫项目(老活新整),希望各位大佬给出意见,谢谢。 一、视频分析 二、图集分析 三、完整代码 四、总结         1、首先获取手机端的视频分享链接:7.99 y@t.RK 03/27 TlC:/  复制打开抖音,看

    2024年02月05日
    浏览(54)
  • Python 爬虫之下载视频(四)

    这篇用来记录一下如何爬取这个平台的视频,比如一些Python的教程小视频(一个视频四五分钟的那种的),效果还是不错的。 举例,如下图所示: 打开一个正在播放的网页页面,获取视频标题和下载链接,在本地保存成mp4格式的视频文件。 获取视频下载链接,电脑网页检查

    2024年01月22日
    浏览(29)
  • Python 爬虫之下载视频(一)

    今天写个从 好K视频 平台爬取正在播放的视频,并下载保存到本地。 注意:建议大家先看看我之前的比较简单的基础教程文章,要不可能看起来会有点费劲哦。 通过用户输入某个视频的地址,然后程序会根据这个地址,自动获取视频的标题和下载视频,并将标题命名为视频

    2024年02月04日
    浏览(27)
  • 简单python网络爬虫批量下载视频

    寒假闲来无事,决定尝试一下用python写一个小网络爬虫批量下载视频。 由于是第一次写网络爬虫,可以说是两眼一抹黑,整个程序都是自己一点点试出来的,所以程序本身肯定有一些漏洞和缺陷,如果有建议请批评指正。 由于CSDN审核不允许出现具体网址否则会因为版权问题

    2023年04月08日
    浏览(32)
  • 抖音web主页视频爬虫

    文章内容仅供参考学习,如有侵权请联系作者进行删除 抖音主页视频爬虫演示,程序运行长期稳定【python和php两个版本】。 ​ python部分源码展示: 

    2024年02月11日
    浏览(29)
  • Python爬虫:给我一个链接,西瓜视频随便下载

    1.实现原理 首先,我们需要来到西瓜视频的官网,链接为:西瓜视频,随便点击其中一个视频进入,点击电脑键盘的F12来到开发者模式,按ctrl+F进行搜索,输入video,如下: 我们可以发现,这里有一个视频链接,我们点击这个链接进入,依旧按电脑F12键来到开发者模式,继续

    2024年02月14日
    浏览(67)
  • python爬虫练习系列之二:下载B站视频

    【思路】 1.下载文件用requests库最方便,因为可以获取错误码,可以自定义保存文件名,且不用判断文件是否已经下载完成。 2.解析需要下载的地址,得到视频和音频文件下载地址 3.合成视频和音频,得到最终mp4文件。 本次涉及视频操作,故需要安装如下库: pip install reque

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包