Python爬虫:通过js逆向获取某瓜视频的下载链接

爬虫:通过js逆向获取某瓜视频的下载链接

    • 1. 前言
    • 2. 获取script标签下的视频加密数据
    • 3. 第一步:获取解密后的视频下载链接
    • 4. 第二步:模拟生成加密的webid值

1. 前言

就小编了解,某瓜视频这个网站对应视频下载链接加密处理至少经过三个版本。之前在CSDN发布了一篇关于它的视频下载链接获取方式,但是目前已经失效了,于是现在小编重新发布一篇。注意:内容仅供学习使用,切莫用于商业活动。另外,文章中只涉及到相关获取下载链接的过程,不提供相关代码哈!

2. 获取script标签下的视频加密数据

随便打开一个视频链接,然后在开发者工具下查找script标签,如下:
在这里插入图片描述
直接搜索

//script[@id='SSR_HYDRATED_DATA']/text()

可以发现这里定义了一个js变量,类型为对象。而对应的视频下载链接加密数据就在这个对象数据里边。可以使用requests模块访问这个网页,然后使用xpath(其他方式比如bs4,re正则表达式)方式获取到这个对象数据,之后经过一些处理把这个js对象数据转化为python的字典数据,然后就可以找到对应的视频下载链接的加密数据了,如下:

在这里插入图片描述
这个main_url和backup_url_1键对应的值都是视频下载链接的加密数据,通过一定解密处理,最终可以得到的下载链接如下:
在这里插入图片描述

这时的这个下载链接不就是我们需要的吗?虽然还缺少几个参数。

在这里插入图片描述

在这里插入图片描述
此时还缺少参数_vid、webid、fid、wid,需要说明的是,_vid就是当前播放的视频id,可以从上述那个对象数据找到(不过好像也不是一定需要的),而fid、wid值是固定的,当然可能随着平台的不同,会有所差异。而webid的值是有两个值组成,用“-”隔开,“-”前面的值是固定的,当然可能随着平台的不同,会有所差异;而“-”后面的值是一个加密数据,需要用到上述经过解密处理的下载链接中的expires值(是一个长度为10的时间戳字符串),通过一定加密处理和参数拼接,即可获取到对应视频下载链接,如下:
请添加图片描述
下面用两步来说明一下获取对应视频下载链接的过程。

3. 第一步:获取解密后的视频下载链接

首先,在源代码/来源这里,打开控制台抽屉栏,然后在搜索输入框中输入 Hr=,找到这个Hr函数,然后在其下面这里打下断点。
在这里插入图片描述
之后刷新当前页面,然后对当前断点进行按步调式,可以发现,此时执行的代码块是这个。
在这里插入图片描述
可以看一下此时的arguments的值,如下:

在这里插入图片描述
可以发现,此时的backup_url_1和main_url的值都是看不懂字符串,但是把这个函数执行一遍,你就会发现,此时的back_url_1和main_url的值是一段链接字符串了,如下:
请添加图片描述
而这个n就是对应外部这个函数,如下:
请添加图片描述
通过多次执行后发现,这个e函数中其实也并没有执行解密操作,而是通过调用其他函数才实现的。
在这里插入图片描述
在上述这里打下断点,多次执行断点,最终可以获取到视频下载链接,由于涉及到比较多内容,小编不在此处详细说明了,读者可以自行尝试。
请添加图片描述
最后一步是执行base64decode函数。

4. 第二步:模拟生成加密的webid值

这里需要找到这个js包下这处,此处打下断点。
在这里插入图片描述
另外此处,也打下断点(因为webid加密处理在这里)
在这里插入图片描述
看看它的执行结果。
请添加图片描述
因为上述过程比较多,小编就不一一讲述了,读者有兴趣,可以自行尝试,需要注意的是其中一些数据来源开头讲到的那个对象数据喔!另外有一些数据是固定的。运行结果如下:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【专题】2024全球电商消费电子市场研究报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37552 在如今数字经济蓬勃发展的大环境下,电商行业正以前所未有的迅猛之势,对全球商业版图进行着深刻的重塑。据 Stocklytics 发布的有关全球电商市场价值及未来增长趋势的专项调查报告显示,2024…

docker部署nginx、docker常用命令

1、安装nginx 未加版本号,默认最新版 docker pull nginxdocker pull nginx:版本号2、查看是否拉取成功 2-1、查看镜像 docker images2-2、镜像打包->可给他人使用 docker save -o nginx.tar nginx:latest2-3、读取打包的镜像 记得先走第三步删除镜像&#x…

【Python】Windows环境下更改pip安装源

文章目录 1.前言2.pip临时安装更改源3.pip永久更改安装源3.1方法13.2方法2 1.前言 由于pip的默认的安装源在国外,导致我们在使用pip命令安装Python 库或包时速度特别慢,因此我们可以临时使用国内的源进行下载,或者直接更改pip的下载源 2.pip临时安装更改源 pip install xxx …

MyCat分库分表

本章重点 mycat分表分库技术(横向数据切分) mycat数据切分规则(取余分库,自然月分库) mycat全局序列号(实现mysql集群主键ID全局自增) 一、分库分表 简单来说,就是指通过某种特…

“Interface 和 Type 区别”深度解析

“Interface 和 Type 区别”深度解析 文章目录 一、Interface 和 Type 是什么二、如何使用 Interface 和 Type1. 定义 Interface2. 定义 Type3. 使用 Interface 和 Type4. 区别与联系 三、Interface 和 Type 二者有哪些区别,分别在哪些场景使用1. 区别2. 场景 四、扩…

深入解析反射型 XSS 与存储型 XSS:原理、危害与防范

在网络安全领域,跨站脚本攻击(XSS)是一种常见的安全漏洞。XSS 攻击可以分为反射型 XSS 和存储型 XSS 两种类型。本文将详细介绍这两种类型的 XSS 攻击的原理、危害和防范措施。 一、反射型 XSS 1、原理 反射型 XSS 攻击也称为非持久性 XSS …

数据丢失要怎么处理,助你一键恢复数据

你平常会用优盘来传输资料吗?如果你也出现过优盘因为病毒或者误操作等原因引起了数据丢失的情况那就继续往下看吧。这篇文章带你了解u盘格式化后数据能恢复吗,带你了解可操作的工具。 1.福昕恢复数据 链接直达:https://www.pdf365.cn/foxit…

集成电路学习:什么是RTOS实时操作系统

RTOS:实时操作系统 RTOS,全称Real Time Operating System,即实时操作系统,是一种专为满足实时控制需求而设计的操作系统。它能够在外部事件或数据产生时,以足够快的速度进行处理,并在规定的时间内控制生产过…

2024国赛数学建模-模拟火算法(MATLAB 实现)

模拟退火算法 1.1 算法原理 模拟退火算法的基本思想是从一给定解开始 ,从邻域 中随机产生另一个解 ,接受 Metropolis准则允许目标函数在 有限范围内变坏 ,它由一控制参数 t决定 ,其作用类似于物 理过程中的温度 T,对于控制参数的每一取值 ,算法持续进 行“产生 —判断 —接受…

vscode中暂存块功能不能用了

vscode中暂存文件修改可以按每一处暂存,而不用一次暂存整个文件的修改,今天发现这个功能不能用了,不知道啥原因,记录一下。

Android 存储之 SharedPreferences 框架体系编码模板

一、SharedPreferences 框架体系 1、SharedPreferences 基本介绍 SharedPreferences 是 Android 的一个轻量级存储工具,它采用 key - value 的键值对方式进行存储 它允许保存和读取应用中的基本数据类型,例如,String、int、float、boolean …

JavaWeb案例

环境搭建 先创建好数据库,建表并插入数据 create database talis; use talis;-- 部门管理 create table dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null com…

QT QGraphicsView实现预览图片显示缩略图功能

QT QGraphicsView实现预览图片显示缩略图功能QT creator Qt5.15.2 头文件&#xff1a; #ifndef TGRAPHICSVIEW_H #define TGRAPHICSVIEW_H#include <QGraphicsView> #include <QMainWindow> #include <QObject> #include <QWidget>class TGraphicsVie…

TCP的传输速度

如何确定TCP最大传输速度&#xff1f; TCP 的传输速度&#xff0c;受限于发送窗⼝&#xff0c;接收窗⼝以及⽹络设备传输能⼒。 其中&#xff0c;窗⼝⼤⼩由内核缓冲区⼤⼩决定。如果缓冲区与⽹络传输能⼒匹配&#xff0c;那么缓冲区的利⽤率就达到了最⼤化。 如何计算网络传…

vue transition组件

可能不生效的几个注意点 选择器的优先级谨慎合并样式 显示三阶段和隐藏三阶段的class名 1、vue2中显示的初始阶段类名是&#xff1a;v-enter&#xff1b;隐藏的初始阶段类名是&#xff1a;v-leave2、v-enter-active、v-leave-active这两个 class 可以被用来定义动画的持续时间…

设计模式1:C#开发中使用创建型的工厂模式和行为型的策略模式

一、接口设计的好处 三大好处&#xff1a;解耦、可复用、可扩展。 二、简单工厂模式 【三要素】能创建具体产品的工厂、抽象产品&#xff08;接口&#xff09;、具体产品 【基本用法】字符串>创建对象>调用其方法 // 产品接口 public interface IProduct {void Opera…

应用开发---VTK放大镜(区域放大)功能实现

VTK 医学图像处理---放大镜/区域放大功能 本博文主要内容为:实现放大镜的源代码;实现思路;具体代码说明。 目录 VTK 医学图像处理---放大镜/区域放大功能 简介: 1 放大镜源代码 1 wxInteractorStyleImage 类源代码 2 wxMagnifierAcotor类源代码 3 Magnifier.cpp 源…

Android 打开 GBK项目如何设置成UTF-8

1.标题 今天打开一个eclipse老项目&#xff0c;编码格式为GBK&#xff0c;Android studio导入项目报错&#xff0c;本人想到一个方案就是批量修改文件格式从 GBK到 UTF-8&#xff0c;这样可以一键解决问题 2.开发脚本 使用前请备份代码 使用前请备份代码 使用前请备份代码…

NLP从零开始------文本中阶处理之序列到序列模型(完整版)

1. 序列到序列模型简介 序列到序列( sequence to sequence, seq2seq) 是指输入和输出各为一个序列(如一句话) 的任务。本节将输入序列称作源序列&#xff0c;输出序列称作目标序列。序列到序列有非常多的重要应用&#xff0c; 其中最有名的是机器翻译( machine translation), 机…

WebRTC协议下的视频汇聚融合技术:EasyCVR视频技术构建高效视频交互体验

视频汇聚融合技术是指将来自不同源、不同格式、不同网络环境的视频流进行集中处理、整合和展示的技术。随着视频监控、远程会议、在线教育、直播娱乐等领域的快速发展&#xff0c;视频数据的规模急剧增长&#xff0c;对视频处理能力和效率提出了更高要求。视频汇聚融合技术通过…