Python爬虫:通过js逆向获取某视频平台上的视频的m3u8链接

这篇具有很好参考价值的文章主要介绍了Python爬虫:通过js逆向获取某视频平台上的视频的m3u8链接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

现在我们在网页端看的视频,其前端实现原理就小编目前知道的而言,总的有两点:其一,直接就是一个mp4(或其他类似的)视频链接,如果我们能得到这个视频链接,直接用这个链接就能下载到这个视频;其二,和第一点差不多吧!但是直接用链接下载,获取不到视频文件,而是一个其他类型的文件(比如m3u8文件),虽然不能直接下载到视频,但是通过进一步处理,最后还是能得到视频文件的。最近,看到了一个视频平台,觉得这个平台挺好的,没有广告,想得到在这个平台的视频文件,但是其原理属于第二种情况,且网站进行相对复杂的加密处理,怎样才能得到这个平台上的视频的m3u8文件呢?
json视频源集合,js逆向,爬虫,python,爬虫,javascript,原力计划

2. js逆向分析

通过一些分析,可以发现,要想得到这个m3u8文件,首先需要得到m3u8链接,要想得到m3u8链接,前提是明白这个链接中的一些参数的来源,然而这些参数来源却是一个请求接口链接的结果数据,为此,需要得到这个接口链接,可是这个接口链接的一些请求参数却做了严格的加密处理,如下:
json视频源集合,js逆向,爬虫,python,爬虫,javascript,原力计划
主要是上述图片中画上红框的两个参数值,通过一些js逆向分析,最后可以定位到这里。
json视频源集合,js逆向,爬虫,python,爬虫,javascript,原力计划
因为其中做了较为复杂的加密处理,如果要详细讲解,可能本篇博文很长,为此,只是简化讲解而已。这两个参数值用Python模拟加密之后,进行链接组合,最后可以得到这个接口链接,请求这个接口链接,可以得到如下数据:
json视频源集合,js逆向,爬虫,python,爬虫,javascript,原力计划
在上述json数据找到一些在m3u8链接中需要用到的参数值,通过Python模拟加密,然后再进行组合,最后便可以得到最终想要的m3u8链接。json视频源集合,js逆向,爬虫,python,爬虫,javascript,原力计划
Python模拟
json视频源集合,js逆向,爬虫,python,爬虫,javascript,原力计划
因为其中一些参数进行随机化处理,所以上述两张图片中m3u8链接并不是相同的,但是都是可以正常访问的。

3. 参考代码和运行结果
import execjs
import requests
from crawlers.userAgent import useragent
import json
from lxml import etree


obj = {
    "webSite": "ppVideo_PC_site",
    "queryParams": "&o=0&contCoprChl=pptv.web",
    "username": "",
    "token": "",
    "startPosition": 0,
    "resLiveFormat": "flv",
    "resVodFormat": "m3u8",
    "skipMovieTitle": True,
    "autoPlay": False,
    "useP2P": False,
    "environment": "prd",
    "useOnePlay": True,
    "ppi": "302c3532",
    "o": "0",
    "playerVersion": "4.1.18",
    "vvid": "c2834d35-1a50-3790-5568-30f2c2a0ce1b",
    "playApiConfig": {
        "appid": "pptv.web.h5",
        "channel": "sn.cultural",
        "type": "mhpptv"
    },
    "useOnePlayPreview": False,
    "playParamsShow": False,
    "previewKey": ""
}
u = useragent()

html_url = input('输入:')
rsp2 = requests.get(url=html_url,headers={
    'user-agent':u.getUserAgent()
})
html = etree.HTML(rsp2.text)
_json_data = html.xpath('//script/text()')[-1]
_json_data = _json_data[_json_data.find('=')+1:_json_data.rfind(';')].strip()
_map_data = json.loads(_json_data)
cid = _map_data['cid']
with open(file='./test.js',mode='r',encoding='utf-8') as f:
    _js_str = f.read()
ctx = execjs.compile(_js_str)
url = ctx.call('getWebPlayInfoAddr',cid,obj)

rsp = requests.get(url=f'https:{url}',headers = {
    'user-agent':u.getUserAgent()
})
_res_str = rsp.text
_res_str = _res_str[_res_str.find('(')+1:_res_str.rfind(')')]
_map = json.loads(_res_str)
items = _map['data']['program']['media']['resource']['vod2']['item']
with open(file='./test2.js',mode='r',encoding='utf-8') as f:
    _js_str2 = f.read()
ctx2 = execjs.compile(_js_str2)
for e in items:
    rid = e['rid']
    v_id = rid[:rid.rfind('.')]
    e_obj = e['dt']
    flag,bh,id,sh,iv,st,key = e_obj['flag'],e_obj['bh'],e_obj['id'],e_obj['sh'],e_obj['iv'],e_obj['st'],e_obj['key']['content']
    params = ctx2.call('buildOnePlayVodSubStreamDetails',flag,bh,id,sh,iv,st,key)
    print(e['bitrate'],'https://ksyun.vod.pptv.com/{}.m3u8?fpp.ver=1.0.0&{}'.format(v_id,params))

【注】其中有两个js文件,因为代码量实在是太大了,所以就没有粘贴出来了。上述代码最终能得到视频的m3u8链接,如果读者想用这个m3u8链接最终得到视频文件,可以去看看小编这篇文章,文章链接为:Python爬虫:通过js逆向我发现了斗鱼视频请求参数的加密原理,当然,读者也可以考虑直接使用PotPlayer这个软件来播放这个m3u8链接。

代码运行结果:

Python爬虫:通过js逆向获取pp视频平台上的视频的m3u8链接文章来源地址https://www.toymoban.com/news/detail-716385.html

到了这里,关于Python爬虫:通过js逆向获取某视频平台上的视频的m3u8链接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Python爬虫:抖音 JS XB逆向解析

    哈喽兄弟们,抖音现在有JS加密,以前的方法爬不了饿了,今天来实现一下某音短视频的JS逆向解析。 知识点 动态数据抓包`在这里插入代码片` requests发送请求 X-Bogus 参数逆向 环境模块 python 3.8               运行代码 pycharm 2022.3           辅助敲代码 requests 

    2024年02月08日
    浏览(40)
  • 关于 Python 爬虫 JS 逆向的入门指南

    请注意,这篇指南只是一个概述,为了深入理解和实践,你可能需要额外的学习和实践。         Python 爬虫经常遇到需要逆向 JavaScript 生成的网站内容和逻辑的情况。这种技能对于爬取动态网站,尤其是那些使用了复杂 JS 逻辑和反爬虫技术的网站,尤其重要。 Python 爬虫概

    2024年01月16日
    浏览(32)
  • 如何通过drissionpage以及js逆向过字符/滑块/点选/九宫格验证码文章/视频学习案例

    仅供学习交流仅供学习交流仅供学习交流 各种关于drissionpage文章视频案例解决方案合集,解决方案,可以点击作者官方社群文章查看 ;部分内容入门案例看下方, 视频在作者官方文档有教学视频介绍 如下目录内容js逆向部分文字视频也可以到该合集博客点击查看

    2024年04月17日
    浏览(24)
  • 【逆向爬虫】Python中执行调用JS的多种方法汇总

    “以前的数据靠买,现在的数据靠爬”,越来越多的学者通过网络爬虫来获取数据。但是做爬虫的人都知道,现在的很多网站都在和我们斗智斗勇,防护普遍越来越好,并且越有价值的网站在这方面越强,哪怕是小一点的网站也多多少少存在一些反爬。而JS逆向又是网络反爬

    2024年02月04日
    浏览(49)
  • Python爬虫:js逆向调式操作及调式中遇到debugger问题

    1. 前言 本篇博客主要讲解js逆向调式操作及调式中遇到debugger问题,内容参考自网上的一些视频讲解结合自己所做过的爬虫测试,觉得小编总结的还不错的读者记得点赞支持一下( 内容仅供学习使用 )。 2. js逆向调式操作 2.1 DOM事件断点 比如虎牙直播登录操作,想快速找到找到

    2024年02月13日
    浏览(33)
  • Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

    1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到底怎样实现这个的过程,希望能够帮助到那些正在做js逆向相关操作的读者,需要代码的读者单独私信我吧!不过,需要注意的是: 代码仅供学习,不能用于商业活动,望读者切记。

    2024年02月15日
    浏览(51)
  • Python采集法外狂徒张三所有视频【含jS逆向解密】

    传说中,有人因为只是远远的看了一眼法外狂徒张三就进去了😂 我现在是获取他视频,岂不是直接终生了🤩 网友:赶紧跑路吧 😏 好了话不多说,我们直接开始今天的内容吧! 你需要准备 环境使用 Python 3.8 Pycharm 模块使用 import requests import csv import datetime import hashlib impor

    2024年02月16日
    浏览(36)
  • Python批量爬取B站法外狂徒张三所有视频【含jS逆向解密】

    传说中,有人因为只是远远的看了一眼法外狂徒张三就进去了😂 我现在是获取他视频,岂不是直接终生了🤩 网友:赶紧跑路吧 😏 好了话不多说,我们直接开始今天的内容吧! 环境使用 Python 3.8 Pycharm 模块使用 import requests import csv import datetime import hashlib import time 爬虫实现

    2024年02月14日
    浏览(24)
  • Python爬虫--爬取哔哩哔哩(B站)短视频平台视频

    目录 1、开发工具 2、第三方库 3、实现思路 4.单个爬取B站视频 5.批量爬取B站视频 6.查找所需数据 结尾     1、开发工具 Python3.9 pycharm requests 和其他python内置库 2、第三方库 安装第三方库 pip install requests 3、实现思路 1.用requests发送get请求,获得下载链接 2.将下载到B站视频和

    2024年02月22日
    浏览(33)
  • 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 相信各位小伙伴在写爬虫的时候经常会遇到这样的情况,一些需要携带的参数一直在变化,今天逆向的这个网站某道翻译也如此: 可以发现变的就两个参数,一个 sign,一个是 m

    2024年02月15日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包