逆向爬虫31 某站刷播放

2023-11-04

逆向爬虫31 某站刷播放

目标:利用爬虫模拟某站视频播放,增加视频的播放量

思考:正常用户是如何为视频增加播放量的?进入视频播放页,点击播放按钮,视频开始播放,就会增加一个播放量。

因此我们只需要模拟点击播放按钮时,浏览器对服务器发送的数据包就可以实现增加播放量。

抓包

在这里插入图片描述

上图是点击 开始播放 后立马停止播放,浏览器发出的8个数据包,分别是以下四种类型:

now
h5
web
heartbeat

思考:只是一点击 开始播放 就发出了这么多数据包,是否这些数据包都要模拟呢?由于我们之前爬过视频网站的电影,知道视频在 持续播放 时也会源源不断地和服务器进行数据交互,我们知道持续播放视频并不会给视频增加播放量,因此当我们点击 开始播放 时,会不会也存在 持续播放 时发送的数据包呢?抱着这个疑问清空数据包,再点击一次播放按钮,让视频持续播放

抓包

在这里插入图片描述

上图是再次点击播放按钮,播放视频10几秒后抓到的数据包,分别是:

heartbeat
web
564529090.xxx.m4s

思考:其中m4s文件应该是视频文件,heartbeat和web分别是都在前面出现过,因此点击 开始播放 按钮发出数据包是

now
h5

问题:究竟是 now数据包 导致播放量增加,还是 h5数据包 导致播放量增加,还是 now和h5两个数据包 共同作用下导致播放量增加?一般爬虫遇到这类问题的时候,只能一个一个试来找到答案。这里为了快速接近问题的答案,直接把浏览器里的 请求头载荷 填入 requests 中(写死的方式),来观察结果。

模拟发送now数据包

get_play_count()	# 获取当前播放量
access_now()		# 发送now数据包
sleep(3)			# 延时3秒
get_play_count()	# 获取当前播放量
""" 输出结果
当前播放量: 136
{"code":0,"message":"0","ttl":1,"data":{"now":1650896747}}
当前播放量: 136
"""

模拟发送h5数据包

get_play_count()	# 获取当前播放量
access_h5()			# 发送h5数据包
sleep(3)			# 延时3秒
get_play_count()	# 获取当前播放量
""" 输出结果
当前播放量: 136
{"code":0,"message":"0","ttl":1}
当前播放量: 137
"""

通过尝试发现是 h5数据包 导致播放量增加,因此接下来的目标就是模拟发送 h5数据包

处理h5数据包的载荷

aid: 810329371			每个视频不同
cid: 564529090			每个视频不同
bvid: XXXXXXXXXX		每个视频不同
part: 1
mid: 0
lv: 0
ftime: 1650890472		时间戳
stime: 1650897031		时间戳
jsonp: jsonp
type: 3
sub_type: 0
from_spmid: 333.337.search-card.all.click
auto_continued_play: 0
refer_url: https://search.bilibili.com/all?keyword=python
from_source: webtop_search
spm_id_from: 333.1007
bsource: 
spmid: 333.788.0.0

只有 aid cid bvid 三个参数需要处理,经过查找发现它们就在页面源代码里,正则提取即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逆向爬虫31 某站刷播放 的相关文章

  • 我如何在 python 2.6 中测试抽象方法

    我有一个抽象类 import abc class Hello object metaclass abc ABCMeta abc abstractmethod def add self foo pass abc abstractmethod
  • CVXPY 二次规划; ArpackNoConvergence 错误

    我尝试使用 Python 包 CVXPY 来解决第一种形式的凸二次规划问题 https www cvxpy org examples basic quadratic program html https www cvxpy org exam
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 如何使用 django (python) 和 s3 上传文件?

    我正在寻找一种将文件上传到 s3 的方法 我正在使用 django 我目前正在使用亚马逊的 python 库进行上传以及以下代码 View def submitpicture request fuser request session lo
  • 使用 Python 在 Google Cloud Storage 存储桶中创建/上传新文件

    如何使用 Python 和可用的客户端库在 Google Cloud Storage 中创建新的空文件 或者如何使用 blob 函数 upload from filename 将新文件上传到选定的存储桶 要初始化 blob 对象 我们应该在
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • Seaborn 热图中的自定义调色板间隔

    我正在尝试绘制一个heatmap https seaborn pydata org generated seaborn heatmap html使用seaborn库 绘图函数如下所示 def plot confusion matrix da
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 如何在Python中求和

    我想知道如何在 python 中表示总和而不需要像这样的循环here http docs scipy org doc scipy reference tutorial optimize html 我们有 def rosen x The Ro
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 是否有更矢量化的方法来沿轴执行 numpy.outer ?

    gt gt gt x np array a0 a1 b0 b1 gt gt gt y np array x0 x1 y0 y1 gt gt gt iterable np outer x i y i for i in xrange x sha
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • 检查多个 pd.DataFrame 是否相等

    是否有一种 Pythonic 方式 无循环或递归 来检查是否超过两个pd DataFrames 例如 pd DataFrames 列表 彼此相等吗 就像是 all x equals dfs 0 for x in dfs with dfs数据
  • 如何保持 python 3 脚本 (Bot) 运行

    不是母语英语 抱歉 英语可能很蹩脚 我也是编程新手 您好 我正在尝试使用 QueryServer 连接到 TeamSpeak 服务器来创建机器人 经过几天的努力 它有效 只有 1 个问题 而我却被这个问题困扰了 如果您需要检查 这是我正在使
  • Pip 突然使用了错误版本的 Python

    在 os x 上使用 pip 时遇到一个奇怪的问题 据我所知 快速查看我的 bash history 似乎可以确认 我最近没有对我的配置进行任何更改 唉 pip 命令似乎突然使用了与以前不同的 python 版本 到目前为止 我使用命令 p
  • 如何配置 Eclipse 在使用 Pydev 插件选择“运行”或“调试”时启动浏览器

    我正在使用 Eclipse Pydev 插件学习 Python 和 Django 当我按 运行 或 调试 时 我希望内部或外部浏览器使用 URL http 127 0 0 1 启动或刷新 我见过用 PHP 插件完成的 但没有用 Pydev
  • 在多个图表上绘制一条线

    I don t know how this thing is called or even how to describe it so the title may be a little bit misleading The first a
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐

  • 数据结构与算法(二十)快速排序、堆排序(四)

    数据结构与算法 三 软件设计 十九 https blog csdn net ke1ying article details 129252205 排序 分为 稳定排序 和 不稳定排序 内排序 和 外排序 内排序指在内存里 外排序指在外部存储空
  • electron-vue工程创建

    创建工程 创建一个工作文件夹用于存放所有Electron工程 设为 D work 打开CMD cd到 D work 文件夹下 然后执行命令 创建 electron vue 工程 创建过程会多次提示输入信息 vue init simulate
  • 【2011集训队出题】Digit

    Description 在数学课上 小T又被老师发现上课睡觉了 为了向全班同学证明小T刚才没有好好听课 数学老师决定出一道题目刁难一下小T 如果小T答不出 那么 情节就按照俗套的路线发展下去了 小T显然无法解决这么复杂的问题 可怜的小T只能
  • 联想拯救者系统重装?不求人教程

    前阵子帮人重装了联想原装系统 今天总结一下步骤 造福那些想给女同志装联想原装系统而无从下手的工具人 哈哈哈哈哈 进入正题 既然要重装系统 就绕不开做启动盘 要做一个玉洁冰清 小声BB 纯净无插件 的启动盘 U盘启动盘制作工具的选择就很关键
  • 爬虫毕设(三):爬取动态网页

    动态网页分析 按照上一篇的分析 直接使用XPath找到该标签 然后通过parse提取出数据 在写入到item中就完事了 但是 当信心满满的写完代码后却发现 控制台输入了一个简简单单的 小问号你是否有很多朋友 一顿操作猛如虎 一看输出数据无
  • 在Arduino中使用DS18B20温度传感器(基于OneWire和DallasTemperature库)

    文章目录 目的 快速使用 相关库引入 使用步骤 使用演示 演示一 演示二 演示三 相关库说明 OneWire库 DallasTemperature库 总结 目的 DS18B20是常用的温度传感器 功能够用 使用简单 本文将用Arduino第
  • 一周Hard (2021.12.20-2021.12.26)

    由于除了刷题外还有些个人的事情 所以大概本周的安排是这样的 本周前两天先研究下关于在周赛272中遇到的问题 打算思考明白并给出一个详细的证明 对于周赛272让我重新拎起LIS 打算对相应的题目进行学习 LC 673 另外大概是要重新学习DP
  • php 基于ICMP协议实现一个ping命令

    php 基于ICMP协议实现一个ping命令 网络协议是什么 ICMP 协议 什么是ICMP ICMP 的主要功能 ICMP 在 IPv4 和 IPv6 的封装 Wireshark抓包 ICMP 请求包分析 PHP构建 ICMP 数据包 p
  • FileInputStream 和 FileOutputStream

    1 什么是流 流是一连串流动的字符 是一组有序的数据序列 是以先进先出方式发送信息的通道 将数据从一个地方带到另一个地方 在 java 中所有数据都是使用流读写的 同时可以通过流进行文件的读写操作 2 流的分类 按照流向 可以分为输入流和输
  • 设计模式之访问器模式(Visitor)的C++实现

    1 访问器模式的提出 在软件开发过程中 早已发布的软件版本 由于需求的变化 需要给某个类层次结构增加新的方法 如果在该基类和子类中都添加新的行为方法 将给代码原有的结构带来破坏 同时 也违反了修改封闭 扩展开放的原则 访问器模式可以实现不改
  • Jira项目管理

    目录 需求管理 项目权限管理 sql jira看板设计 sprint需求看板 ALL需求看板 sprint研发看板 需求管理 版本 创建面板 创建 修复版本 只能管理同一个项目下的需求集 Epics 史诗 可以管理跨项目 有不同项目关键字
  • java常混淆知识,Java中==和equals区别

    在Java语言中 和equals都是用来比较两个对象是否相等的操作符 但是它们的比较方式和比较结果有所不同 操作符 操作符用于比较两个对象的引用是否相等 即这两个对象是否是同一个对象的引用 如果两个对象的引用相同 则返回true 否则返回f
  • scala学习-11-package object

    1 概述 Scala 2 8提供包对象 package object 的新特性 什么是包对象呢 按我的理解 根据Scala 一切皆对象 设计哲学 包 package 也是一种对象 既然是对象 那么就应该有属性和方法 也可以在包对象内声明某个
  • Sublime Text3 快速格式化代码

    英文版 打开Sublime软件 PreFerences gt Key Bindings User 如图 添加代码 keys alt shift f command reindent 保存即可 alt shift f 可以自己改为任意键的组合
  • 深入学习jquery源码之is()与not()

    深入学习jquery源码之is 与not is expr obj ele fn 概述 根据选择器 DOM元素或 jQuery 对象来检测匹配元素集合 如果其中至少有一个元素符合这个给定的表达式就返回true 如果没有元素符合 或者表达式无效
  • three.js ThreeBSP(多个模型组合:差集、交集、并集 附带demo) - 05

    文章目录 一 什么是模型运算 1 函数属性介绍 2 代码示例 二 模型组合demo 需要在我的第一节中找到对应的库 或者私信我 2 代码效果 2 1并集效果 2 2 差集效果 2 3 交集效果 一 什么是模型运算 我所理解的ThreeBSP
  • InfluxDB 的 InfluxQL 基本介绍与使用

    前言 本文主要介绍 InfluxDB 的 InfluxQL 的基本概念与用法并且包含了一些需要注意的点 由于 InfluxDB 2 x 不使用 InfluxQL 进行查询 如您的版本大于 2 x 请查找其他资料 主要为以下内容 SELECT
  • Linux-升级CMake版本(Ubuntu18.4)

    一 简介 在一些场景中 因为CMake版本过低而无法编译 此时就需要升级CMake的版本 二 升级 卸载 先卸载旧的cmake sudo apt get autoremove cmake 安装 切换文件夹 cd usr src 下载cmak
  • 数据结构-第三章 栈和队列

    Stack and Queue 栈和队列是逻辑上的结构 在物理上可以用数组和链表来实现 1 栈 A stack is a list in which insertions and deletions take place at the sa
  • 逆向爬虫31 某站刷播放

    逆向爬虫31 某站刷播放 目标 利用爬虫模拟某站视频播放 增加视频的播放量 思考 正常用户是如何为视频增加播放量的 进入视频播放页 点击播放按钮 视频开始播放 就会增加一个播放量 因此我们只需要模拟点击播放按钮时 浏览器对服务器发送的数据包