代码已更新,详见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
经测试,请求一中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端才能访问,这就要配合手机或者模拟器来分析(本文用的模拟器)
查阅资料得知线索,打开抖音用户界面点击分享,里面的链接分享可供我们使用
分析数据包找到返回作品数的包
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.兴趣是学习的第一推动力
参考文章: