逆向爬虫31 某站刷播放

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值