虎牙自动送每日礼物(虎粮)

文章未完成。难产了家人们,发现根本抓不了包。

博主原创文章,转载请说明出处,但是不说我也管不了你🏳️

前言

许久没有登录虎牙,今日偶然打开虎牙看了看——诶,怎么消息框还有几个未读消息?赶紧点进去一看,结果全是“您与XXX的徽章亲密度正在下降”,啥也不是😅。

自从这虎牙改版后,只要隔几天不去送礼物来增加亲密度,自己那粉丝徽章就熄灭了,然后好不容易累积起来的亲密度也开始光速下降,可是正常人谁没事天天特意去某个直播间去送礼物维持亲密度不掉啊,隔这打卡上班呢,但是又心疼自己好不容易得来的N级粉丝徽章,所以准备做个简单的私人自动化小工具(也就是网络爬虫),让它帮我每天去虎牙“上班打卡”吧。

本爬虫基于java实现,使用cookie完成身份验证,仅支持个人轻量级使用。

正文

一、需求确定

做一件事,那肯定首先得明白自己到底要干什么、目的是什么,所以本章先浅浅说明这些问题。

业务方面:每天帮我自动登录虎牙账号,并找到有徽章的主播,将自己的每日免费虎粮分别送给这些主播;性能方面:仅作为私人使用,不需要大批量处理事务;安全方面:尽可能地安全,不在代码中太多任何隐私相关静态数据,不建立数据库静态存储隐私信息。

以上就是所有要求了,所有接上来按照这些要求来开发一个简单的小玩意儿。

二、技术路线选择

选择技术路线时,需要根据具体的需求来选择对应的技术,也就是一切都是建立在解决需求之上的,至于技术什么的除非是要学习,否则管他个鸟。

从上一章的内容再结合实际,可以得出需要解决的主要需求有:①开发语言的选择:我主要会java,那就选java;②抓包工具的选择:我主要用Fiddler,那就用Fidller;③爬虫登录账号时的身份验证方式:一般来说,为了安全性,在登录时会遇到网站的百般阻挠,例如要求输入验证或者滑动验证甚至点击验证,同时加上前端的加密传输方式,这都不是这么容易破解的,对我来说显然会耗费大量的时间才容易找到适配的解决方法。由于需求不大,只针对个人使用,所以就选择最最最最简单的方式——cookie验证,耶,不到三十秒解决了最难的问题!;④免费虎粮在赠送给多个主播的分配策略:在有虎粮的前提下,默认按照徽章等级占比来分配虎粮,当然也支持用户在参数里自定义虎粮分配;⑤默认参数设置:为安全性,默认参数均采用动态输入,即在代码运行时输进去,不采用静态保存数据,应用进程销毁,则数据销毁。

三、开始开发

突然发现根本抓不了送虎粮接口的包,百度谷歌Github了一圈,也只有基于selenium之类的,这种对环境的要求实在是太高了,实现起来不现实,而抓包接口的帖子只有一个,结果点进去一看,说自己抓不了。

这个问题留在这里,以后牛逼了再回来解决。

1.登录必要cookie确定

采用最质朴的方法,浏览器里面打开本地cookie,然后一个一个删除,再刷新页面,查看是否能保持登录状态。如果删除一个cookie后不能保持登录状态,则证明该cookie为必要cookie。

(将那些除带有token、credit、uid之类的变量之外的cookie名删除,然后再经过一系列操作验证)最后得到,必要cookie有:

Cookie名 Domain 有效持续时间
udb_biztoken .huya.com 15天
yyuid .huya.com 15天
udb_cred .huya.com

2.查询徽章列表

3.查询虎粮数量

4.赠送特定虎粮给特定主播

参考文献

附录