Featured image of post 微博、B站、抖音实时关注脚本

微博、B站、抖音实时关注脚本

粉丝必备小脚本,原文撰写于2021年2月

代码已更新,详见https://www.blain.top/p/wbdxmonitor/

新代码链接:https://github.com/Bla1n/WBDXmonitor

本文代码已上传github,自取

https://github.com/Bla1n/WBDmonitor

0x00 起因

对于我这样一个假粉,想及时地收到喜欢明星的动态真的是太难了,靠APP的特别关注提醒也基本无济于事,除非我每天都打开微博,B站,抖音。但作为一名“热爱学习”的当代青年,以上这些APP能少看还是少看的好。这就是矛盾所在,也就产生了本文。(本文提供两种监控思路)

0x01 第一种:微博获取文章id

这里感谢奶权师傅的文章 提供的接口:https://m.weibo.cn/。经测试,现在访问已经不需要登陆,省去模拟登陆步骤。

来看访问用户主页的请求

最关键的为图中标红框的xhr

请求一:https://m.weibo.cn/api/container/getIndex?uid=1927305954&t=0&luicode=10000011&lfid=100103type%3D1%26q%3D%E6%88%90%E6%9E%9C&sudaref=login.sina.com.cn&type=uid&value=1927305954&containerid=1005051927305954

请求二:https://m.weibo.cn/api/container/getIndex?uid=1927305954&t=0&luicode=10000011&lfid=100103type%3D1%26q%3D%E6%88%90%E6%9E%9C&sudaref=login.sina.com.cn&type=uid&value=1927305954&containerid=1076031927305954

经测试,请求一中uid参数为各用户专有且固定不变,containerid参数可不加,返回结果包含的containerid参数提供给请求二,其余参数可舍。

请求二带上containerid参数即可返回微博内容,微博信息都在mblog数组内

思路:

1.先访问请求一获取containerid参数,拼接请求二。

2访问请求二,匹配响应里所有mblog数组里的id值(每条动态对应一个专有id),并存储到文件中。

3.定时访问,若发现新id值不在文件里,则视为新微博,推送微信消息。

封装到类里,代码如下(代码显示太丑了,点击github连接查看)

https://github.com/Bla1n/WBDmonitor/blob/main/monitor/wbmonitor.py

0x02 第二种:B站直接坐享其成

原本打算B站直接延续上文思路,但在分析网页内容的时候我发现了一处有意思的地方

https://space.bilibili.com/3345720/video

如图所示,B站已经统计好当前用户视频数了,那么我只要关注这个数字不就行了吗?

分析请求发现是下面这条连接返回的视频数目,那么剩下的就很简单了

https://api.bilibili.com/x/space/navnum?mid=3345720&jsonp=jsonp&callback=

思路:

1.拼接api的url(mid参数为b站用户专有且固定不变)

2.访问获取视频数目,存储到文件里

3.定时访问,若视频数发生变化,则视为更新

https://github.com/Bla1n/WBDmonitor/blob/main/monitor/bzmonitor.py

0x03 抖音监控(APP端)

抖音与前两者不同,抖音只有APP端才能访问,这就要配合手机或者模拟器来分析(本文用的模拟器)

查阅资料得知线索,打开抖音用户界面点击分享,里面的链接分享可供我们使用

https://v.douyin.com/e1o7d17/

分析数据包找到返回作品数的包

https://www.iesdouyin.com/web/api/v2/user/info/?sec_uid=MS4wLjABAAAAnCz_s5xyosgWTo5lTxKCmoYX1-uiytDsAKBye1LbfDE

sec_uid参数为用户专有参数

剩下思路同上

https://github.com/Bla1n/WBDmonitor/blob/main/monitor/dymonitor.py

0x04 推送程序

各平台监控问题解决了,没有一个好的推送也是不行的。日常用的最多的是微信,并且微信来消息的话,提醒也会很明显。

这里用到https://sre24.com/

使用也很简单,微信扫描登陆获取token,根据文档的介绍写一个notify函数就可以用了

0x05 启动程序

不多赘述,看代码

https://github.com/Bla1n/WBDmonitor/blob/main/start.py

0x06 定时任务

奶权师傅文章里采用心跳包的方式,我这种不愿意挂后台的人就用的定时任务,

如果服务器搭了宝塔可在后台直接设定,没有的用crontab设效果也是一样的

0x07 使用效果

代码已上传至github,使用方法详见readme

https://github.com/Bla1n/WBDmonitor

0x08 填坑

1.定时任务请将脚本内文件路径改为绝对路径

2.推送没采用邮件最主要的原因是,我在Windows上测试没有问题,Linux发不出去(端口开启着没被占用,stmp服务似乎是正常的,未解决)

3.抖音没有直接添加用户ID的选项,因为没有直接获取用户ID的方法,抓包需自己去抓。然后修改url里的sec_user_id参数也是一样的

4.如果想要用邮箱功能把start.py里的注释去掉即可,注意一点,授权码不是邮箱密码,自行查找邮箱账户。

哦对了,python3的email库需手动安装,详见Python3下email 安装报错 No module named ‘cStringIO’

5.兴趣是学习的第一推动力

参考文章:

Python系列之——利用Python实现微博监控

本博客已稳定运行
发表了18篇文章 · 总计38.60k字
森 ICP备2024001234
Built with Hugo
主题 StackJimmy 设计