逆向爬虫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 三个参数需要处理,经过查找发现它们就在页面源代码里,正则提取即可。

逆向爬虫31 某站刷播放相关推荐

  1. 逆向爬虫32 某视频刷播放

    逆向爬虫32 某视频刷播放 目标:利用爬虫刷某视频播放量 思路:和某站一样,先抓包验证哪个数据包可以使播放量增加,这个过程就省略了,经过测试发现是下图这个数据包 观察请求参数 ctime: 动态时间 ...

  2. 逆向爬虫14 Mongo入门

    逆向爬虫14 Mongo入门 一.MongoDB和MySQL的区别 MongoDB 是一种 非关系型数据库,存放任意形式的 json 格式数据:而 MySQL 是一种 关系型数据库,只能存放事先定义好 ...

  3. 逆向爬虫35 常见加密的python实现

    逆向爬虫35 常见加密的python实现 目的:将App逆向中常见的算法用python实现,方便以后的使用 Java常见加密 隐藏字符串 字符串是以字节编码数组的形式存储或网络传输的,因此可以通过指定 ...

  4. 逆向爬虫18 Scrapy抓取全站数据和Redis入门

    逆向爬虫18 Scrapy抓取全站数据和Redis入门 一.全站数据抓取 1. 什么是抓取全站数据? 我们曾经在过猪八戒,图片之家,BOSS直聘等网站,利用网站官方提供的搜索功能,搜索指定关键词的内容 ...

  5. python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现.我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路.怎么突破的, ...

  6. 逆向爬虫20 Scrapy-Splash入门

    逆向爬虫20 Scrapy-Splash入门 一. Splash 在学习Splash之前,先要明白为什么要学它,它能帮我们完成什么工作,什么情况下适合使用Splash? splash是一个可以动态渲染 ...

  7. ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学, 你就是下一个大佬❤️!

    ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学,你就是下一个大佬❤️! 前言 程序说明 数据爬取 获取 CSDN 作者总榜数据 获取收藏夹列表 获取收藏数据 爬虫程序完整代码 ...

  8. 逆向爬虫28 webpack扣代码

    逆向爬虫28 webpack扣取码 目标: 了解 js 模块化打包webpack代码的特点. 掌握扣取 webpack 代码的方法. 一. 模块化 webpack 代码特点 有的时候, 我们发现一些网 ...

  9. 携程逆向爬虫 | PC网页端 | 旅游景点评论爬虫

    目录 导语 1. 获取所有城市_id 2. 分析评论信息位置 3. 获取当前市 景点页数 4.获取当前景点的评论页数 5. 总体爬虫效果 6. 注意 导语 自携程更新后,这是全网首篇,关于新版携程的逆 ...

最新文章

  1. 程序调试的时候利用Call Stack窗口查看函数调用信息
  2. RedisManager使用手册(六)-- 监控功能介绍
  3. 实现集合类的元素删除和修改的一点实践。。。
  4. 三款ActiveX图表控件对比评测 TeeChart VS ProEssentials…
  5. 5.7 echo:显示一行文本
  6. 交公粮了,我经常逛的技术网站,你最爱哪个?
  7. UnitTest测试框架全栈详解
  8. Java方法调用和参数传递
  9. c++整理程序 dev_【C++】用Dev-C++写的C++程序老是报错,请问为什么?如何解决?...
  10. 深度剖析MQTT协议的整个通信流程
  11. QDir setSorting 文件排序
  12. 对TMS320F28335存储空间的理解
  13. linux文件分号意思,linux中的分号和,|和||的用法与区别
  14. python和c 情侣网名_qq情侣网名个性网
  15. iphone邮件服务器 263,如何在iPhone和iPad中设置使用263企业邮箱?
  16. mysql5.7越用c盘越小_Windows7的C盘可用空间为什么越用越小呢?
  17. Nature:16年前的论文生成软件SCIgen至今仍有人用,骗过同行评审,论文被接收...
  18. 修仙第一步:凌晨打坐
  19. HTTPS/HTTP
  20. iphone一键转移_iPhone 12换机首选,QQ同步助手一键智能备份迁移

热门文章

  1. 有效抑制故障电弧——AAFD-DU多回路型故障电弧探测器
  2. GUI Guider设计UI界面移植到STM32
  3. MOXA Nport在二所ATC的使用方式(川大是UDP方式)
  4. Informatica:全局数据治理
  5. 在运行makefile文件的时候遇到 /bin/sh: 1: XXXXX: not found问题解决
  6. 全球及中国滚球粘度计行业发展动态及投资规划分析报告2022-2028年
  7. 乘信息化之势,QAD铸就航天模塑管理变革
  8. 笨方法学Python之一(原第六)
  9. 基于C++OpenGL实现的小桌子图形绘制
  10. nginx rewrite功能使用