云战役自动打卡脚本
前言
实在苦恼于每天云战役打卡,于是写了一个python脚本用来进行每天自动打卡。涉及到的知识点有requests,yagmail,schedule,以及一点点的js分析,先来看下效果图,将每天的打卡情况通过yagmail发送到邮箱,定时的部分可以用schedule做或者放到PC上的定时脚本中,有条件的直接放到服务器上
话不多说,正式开始
分析流程
由于进行了headers验证,首先需要改成手机端的请求头
然后是登录抓post请求,老方法,先写个错误的密码看看
发现post请求data只需要两个参数,用户名和密码,而且密码还是明文的,没有进行js加密,那这就很简单了,我们直接request发送一个post请求即可,为了不用管理cookies,因此我用requests.sesion()
代替,具体代码可以看最后
然后我们填写正确的用户名密码进入这个页面
还是一样,填写好内容抓post请求,我们看看参数
下面的都直接复制即可,但是有一个参数我们要找出来,就是uuid,只有知道了这个值,我们之后就迎刃而解,currentResd是家庭住址哈,我这里码掉了。因此,问题的关键就是找到这个uuid在哪生成的。
uuid查找过程
首先发现不在这个post请求的cookie里,那就有可能是后端传来的或者是前端加密的,然后全局搜索uuid,可以看到,发现了倪端
这个值也就是_ncov_uuid,而且都在cookie中,并且连图标的请求都带有这个cookie,所有的证据都指向了一点:这个值是后端一开始就传到前端来的,因此我们重新抓登录的页面
好家伙,藏这呢
那接下来就很容易了,具体的看最下面代码
一个新的问题
当我在编写python脚本的时候,发现了一个新的问题,这个值是哪来的??我原以为是js进行了分割
后来去前端进行了查找,发现这个值来自于一个对象
再对这个对象进行查找
发现是https://ip.ws.126.net/ipquery
对这个网站的一个get请求,然后我访问这个网站,得到的是一个地址,由于这个请求并没有携带任何参数,我猜是对ip地址进行归属查询,因此我还需要对这个网址进行一个get请求。
使用方法
注意yaml文件参数都需要改
方法一:
解压文件夹,修改yaml文件参数后,运行同目录下.exe文件即可(切记不要关闭,每天早上10点半前脚本需运行),这种方法可以是可以,但要保证每天10点半电脑开机且运行该脚本
方法二:
windows10定时任务,这个会比方法一简单,配置可能会多几步
https://jingyan.baidu.com/article/9080802200cc15fd91c80fcf.html
定时开机
https://jingyan.baidu.com/article/15622f2419ff79fdfcbea5db.html
方法三:
放到服务器上执行,一劳永逸
方法四:
这个方法还没有实现,我打算以后写个简单的脚本管理Web挂到我的服务器上,这样子只要访问我的url添加即可(这种最简单,以后再说)
方法五:
账号密码地址邮箱发我,我帮你打🐶
后序优化方案
-
异常处理这块需要完善,没判断密码错的情况,,,以后再说以后再说
-
可以起一个服务器(tomcat,flask,django等等)进行简单的可视化管理
-
url,param写死在了py文件中,可以抽出来放到yaml,txt等文件中
-
可以写个thinker或者pyQ5
-
总觉得很耦合,学了设计模式再改吧
目前想到了这么多(目前也没能力改),能力有限,再说。
源码地址
https://gitee.com/xin_cheng_wang11/crawler_demo/tree/master
软件地址(.exe格式)
链接: https://pan.baidu.com/s/1sHY4-c6Ucwxy6jgYAvHwBw
提取码: 7q82