讨厌签到?动个歪脑筋吧😂
- -前言
总的来说,我已经是第二次疫情在家了,本人的记性一直都不太好,去年寒假的时候,每天还有一位热心的姐姐每天打电话问候我,我到现在都十分感谢那位给我打了一个寒假+一个学期电话的姐姐,但是现在,由于姐姐不能再继续提醒我了,但是这个记性依然还是很烂呀,而且我们学校每天需要填写的信息都是一样的,没办法,只能在网上搜索了一下教程,终于找到了一个与之相关的GitHub项目——auto-submit
- - -从上传的时间来看,这个项目已经有了大半年了,而且有400 star,毫不犹豫选择这个,这篇文章将会分为两个目的来给大家介绍,一个是小白上手,另一部分则是分享我整个的经历
-小白上手
首先注册搜索并注册腾讯云
- -然后进入云函数
- -进入函数服务并且新建建云函数,自定义并且选择python 3.6
- -鼠标继续往下滑,将这里执行超时改成60s
- -完成即可,如法炮制,新建一个层,随便输入一个名称,提交方法为默认(本地上传zip)并且将dependency (点击即可下载),添加 python3.6 的运行环境
- -找到刚才的函数服务,进入刚刚创建的创建函数,清空其中的代码并且将下面的代码复制到其中并且保存
- -1 | # -*- coding: utf-8 -*- |
然后在这个src目录新建一个文件,并且将它命名为config.yaml,这里写错了哈,图片上也错了(表现出我对yaml文件不熟悉😜)应该新建config.yml
将下面的yaml
代码复制粘贴进去,并且将学号改为你自己的学号,密码改为你用学号登录的密码,地址改为你家的地址,如果你想需要server酱
微信提醒,请点击server 酱,绑定微信和GitHub
1 | #登陆相关配置 |
上面代码需要修改的地方有这几点(注意
:1.yaml
语法格式的原因,修改内容时应该从冒号后面空一格开始,如下面举的例子 2.填写学号和密码应该填在单引号的里面 3.不同学院的收集内容可能不同,因此需要修改上面的问题)
1 | school: 燕山大学 #这里冒号和燕山大学之间有一个空格 |
type
的值为2时,说明这道题是一道单选题,为1时,说明这是一道填空题;注意,在设置温度时,一定要带上度,这样它就是一个string
类型,不是一个int
类型
1 | - default: |
改好这个config.yml
后,保存,并且部署,点击上面的层管理,再点击绑定选择刚才nihao
(我的是nihao
,你的取决于你当时取得名字啦)确定即可
然后选择左边的触发管理->创建触发器,配置如下图,如果想要选其他时间(每个学院发布收集的时间不一致嘛),请您观察规律,自行修改😂,不建议选整点,因为其实这是GitHub上那位大佬的服务器,选整点的人多了,自然服务器也累😂,效果也不好,做完这些提交就行啦!
- -好的,现在我们可以回到刚刚修改代码的的地方,点击一下测试
- -您得到的日志可能是这样子的,这表示您可能成功了,也可能没成功,因此,真正是否成功,还是要等到导员发了信息采集才可以,令人满意的效果应该像这种样子
- -OK,如果您已经完成这些,那么您就应该成功(当然,希望您还是再观察几天,以免出错),如果没有成功,欢迎在下方留言(留言无需注册,留个mail就行,留言支持图片,直接将图片拖拽进去就行),如果你想要感谢这个项目,请点击这里:auto-submit赞助它的原作者即可,下面我分享一下的我在将这个项目修改的时遇到的一些bug(小白直接跳过)
-过程分享
我本来在了解这个项目时,我对腾讯云函数并不了解,于是首先我尝试在本地先测试一下,在安装python的第三方库时,各种报错,这里我十分建议将源换成清华源,然后关掉所有代理,如果wifi下载失败,建议改用流量。我本以为只要改config.yml
里的内容就行,但无奈又报错了
观察日志最后,发现是requests超时Max retries exceeded with url: /v6/config/guest/tenant/list
又由上面的位置可知,这个url在index.py
里,于是我找到了这一行,复制了url在chrome里访问了一下
显然url失效了,上网搜了一下,原来由于作者更新过时,最后在csdn里面找到了两个新的网址
-1 | https://static.campushoy.com/apicache/tenantListSort |
但是很不幸,网址一返回的json文件是字典里data的value
是列表,而且列表里还有字典,字典里有datas,而这里requests.get
的schools的遍历无法满足下面的判断。
1 | # 获取今日校园api |
于是我就想着给它剥洋葱了😂,搜了一些剥洋葱的教程后,代码这样了(其实很简单,大家也不要随便放弃哟!)
-1 | def getCpdailyApis(user): |
修改的其实只是这里:
-1 | for item in schools: |
遇到的第二个大问题首先是我以为原作者采用的是findall直接找出关键字,但是当我偷懒只写了一些字符时,又报错了
- -我只好乖乖将那个问题都填完整(您知道的,有的问题真的好长,打字也容易错),后来改完上传时,表是填完了,但是上传失败。
- -这时候我有点绝望了,我看到GitHub作者上issue的问题,可惜大家大多数用的都是通用方法:cookie登录,电脑安装逍遥模拟器,然后装 xposed ,电脑fiddler抓包(但是我以前下载过逍遥,体验不好,不想再下载了),issue里面大多数都是说那个加密问题,但是我上文的这种方式其实不完全是模拟app,刚开始我以为是post
时没有加上咋们的那个地址没有经纬度的原因,但是我加上去没有效果,于是我打算将通用方法的user
移植过来(下面为通用的config.yml
),但是加了还是不行。
1 | user: |
所以没有那么那一步后来再那个issue里看到了一位大佬分享的版本密钥,于是我抱着侥幸的心理,修改了一下index.py,成功了。
- --
Server 酱
不知道是我的设置问题还是别的什么问题,在写完这篇教程后的一天,我的server 酱就post
成功不了了,但是我在本地测试,也就是用我电脑自带的python3.9
却可以成功,我原以为是第三方库的问题,因为我同学也向我反映过这个问题,但是我还是认为它报错存在问题,因为整个index.py
中依赖了许多库,如果不能够引入那些库,就不可能完成整个填报,而我只是出现了无法让Server 酱通知
我最近在家里尝试很多次,但是都没有结果,甚至出现了一件让我感到很amazing的事情,就是我点击运行,它能够post成功,但是我点击测试,他就无法成功。
- - -这让我百思不得其解,也让我忧心忡忡,因为如果某一天失败了(或者老师改了问卷),但我却不知道,那岂不是糟糕了,通知还是必要的呀,我想过用短信api来代替,但是又要注册啥的,我就算了,恰好今天看到了一个可以代替Server 酱——企业微信(点击跳转注册),注册完成后在app management里新建一个app
- - -记住下面这两个参数然后点击My Company
记住Company ID
点击wechat workplace
然后微信扫描这个二维码即可绑定应用。
然后在config.yml
最后一行里面加上这个三个参数格式如下
1 | AgentId: # |
在index.py
中找到sendServerChan
将这个函数替换为下面代码,配置即可成功,
1 | def sendServeChan(msg): |
OK,如果这些都配置好了,那么你的wechat应该就可以收到信息了
-总结
至此,这个有趣的项目就弄完了,虽然在一天半时间,这个过程中我曾想过放弃很多次,但是考虑到每天填那个表,还是坚持了下载,但终究还是我运气好,就成功了,欢迎大家有问题啥的留言呀😂,最后分享一下喜悦
- -如果还想实现其他的功能建议自己去探索哟,比如拍照签到,因为我没有相关的条件(没有拍照签到的任务,无法测试😂)
+讨厌签到?动个歪脑筋吧😂
+ +前言
+ +总的来说,我已经是第二次疫情在家了,本人的记性一直都不太好,去年寒假的时候,每天还有一位热心的姐姐每天打电话问候我,我到现在都十分感谢那位给我打了一个寒假+一个学期电话的姐姐,但是现在,由于姐姐不能再继续提醒我了,但是这个记性依然还是很烂呀,而且我们学校每天需要填写的信息都是一样的,没办法,只能在网上搜索了一下教程,终于找到了一个与之相关的GitHub项目——auto-submit
+ + +从上传的时间来看,这个项目已经有了大半年了,而且有400 +star,毫不犹豫选择这个,这篇文章将会分为两个目的来给大家介绍,一个是小白上手,另一部分则是分享我整个的经历
+小白上手
+ 首先注册搜索并注册腾讯云
+ +然后进入云函数
+ +进入函数服务并且新建建云函数,自定义并且选择python 3.6
+ +鼠标继续往下滑,将这里执行超时改成60s
+ +完成即可,如法炮制,新建一个层,随便输入一个名称,提交方法为默认(本地上传zip)并且将dependency +(点击即可下载),添加 python3.6 的运行环境
+ +找到刚才的函数服务,进入刚刚创建的创建函数,清空其中的代码并且将下面的代码复制到其中并且保存
+ +1 | # -*- coding: utf-8 -*- |
然后在这个src目录新建一个文件,并且将它命名为config.yaml,这里写错了哈,图片上也错了(表现出我对yaml文件不熟悉😜)应该新建config.yml
将下面的yaml
代码复制粘贴进去,并且将学号改为你自己的学号,密码改为你用学号登录的密码,地址改为你家的地址,如果你想需要server酱
微信提醒,请点击server 酱,绑定微信和GitHub
1 | #登陆相关配置 |
上面代码需要修改的地方有这几点(注意
+:1.yaml
语法格式的原因,修改内容时应该从冒号后面空一格开始,如下面举的例子
+2.填写学号和密码应该填在单引号的里面
+3.不同学院的收集内容可能不同,因此需要修改上面的问题)
1 | school: 燕山大学 #这里冒号和燕山大学之间有一个空格 |
type
的值为2时,说明这道题是一道单选题,为1时,说明这是一道填空题;注意,在设置温度时,一定要带上度,这样它就是一个string
类型,不是一个int
类型
1 | - default: |
改好这个config.yml
后,保存,并且部署,点击上面的层管理,再点击绑定选择刚才nihao
(我的是nihao
,你的取决于你当时取得名字啦)确定即可
然后选择左边的触发管理->创建触发器,配置如下图,如果想要选其他时间(每个学院发布收集的时间不一致嘛),请您观察规律,自行修改😂,不建议选整点,因为其实这是GitHub上那位大佬的服务器,选整点的人多了,自然服务器也累😂,效果也不好,做完这些提交就行啦!
+ +好的,现在我们可以回到刚刚修改代码的的地方,点击一下测试
+ +您得到的日志可能是这样子的,这表示您可能成功了,也可能没成功,因此,真正是否成功,还是要等到导员发了信息采集才可以,令人满意的效果应该像这种样子
+ +OK,如果您已经完成这些,那么您就应该成功(当然,希望您还是再观察几天,以免出错),如果没有成功,欢迎在下方留言(留言无需注册,留个mail就行,留言支持图片,直接将图片拖拽进去就行),如果你想要感谢这个项目,请点击这里:auto-submit赞助它的原作者即可,下面我分享一下的我在将这个项目修改的时遇到的一些bug(小白直接跳过)
+过程分享
+我本来在了解这个项目时,我对腾讯云函数并不了解,于是首先我尝试在本地先测试一下,在安装python的第三方库时,各种报错,这里我十分建议将源换成清华源,然后关掉所有代理,如果wifi下载失败,建议改用流量。我本以为只要改config.yml
里的内容就行,但无奈又报错了
观察日志最后,发现是requests超时Max retries exceeded with url: /v6/config/guest/tenant/list
+又由上面的位置可知,这个url在index.py
里,于是我找到了这一行,复制了url在chrome里访问了一下
显然url失效了,上网搜了一下,原来由于作者更新过时,最后在csdn里面找到了两个新的网址
+1 | https://static.campushoy.com/apicache/tenantListSort |
但是很不幸,网址一返回的json文件是字典里data的value
是列表,而且列表里还有字典,字典里有datas,而这里requests.get
的schools的遍历无法满足下面的判断。
1 | # 获取今日校园api |
于是我就想着给它剥洋葱了😂,搜了一些剥洋葱的教程后,代码这样了(其实很简单,大家也不要随便放弃哟!)
+1 | def getCpdailyApis(user): |
修改的其实只是这里:
+1 | for item in schools: |
遇到的第二个大问题首先是我以为原作者采用的是findall直接找出关键字,但是当我偷懒只写了一些字符时,又报错了
+ +我只好乖乖将那个问题都填完整(您知道的,有的问题真的好长,打字也容易错),后来改完上传时,表是填完了,但是上传失败。
+ +这时候我有点绝望了,我看到GitHub作者上issue的问题,可惜大家大多数用的都是通用方法:cookie登录,电脑安装逍遥模拟器,然后装
+xposed
+,电脑fiddler抓包(但是我以前下载过逍遥,体验不好,不想再下载了),issue里面大多数都是说那个加密问题,但是我上文的这种方式其实不完全是模拟app,刚开始我以为是post
时没有加上咋们的那个地址没有经纬度的原因,但是我加上去没有效果,于是我打算将通用方法的user
移植过来(下面为通用的config.yml
),但是加了还是不行。
1 | user: |
所以没有那么那一步后来再那个issue里看到了一位大佬分享的版本密钥,于是我抱着侥幸的心理,修改了一下index.py,成功了。
+ ++
Server 酱
+
+不知道是我的设置问题还是别的什么问题,在写完这篇教程后的一天,我的server
+酱就post
成功不了了,但是我在本地测试,也就是用我电脑自带的python3.9
却可以成功,我原以为是第三方库的问题,因为我同学也向我反映过这个问题,但是我还是认为它报错存在问题,因为整个index.py
中依赖了许多库,如果不能够引入那些库,就不可能完成整个填报,而我只是出现了无法让Server
+酱通知
+我最近在家里尝试很多次,但是都没有结果,甚至出现了一件让我感到很amazing的事情,就是我点击运行,它能够post成功,但是我点击测试,他就无法成功。
+ + +这让我百思不得其解,也让我忧心忡忡,因为如果某一天失败了(或者老师改了问卷),但我却不知道,那岂不是糟糕了,通知还是必要的呀,我想过用短信api来代替,但是又要注册啥的,我就算了,恰好今天看到了一个可以代替Server +酱——企业微信(点击跳转注册),注册完成后在app +management里新建一个app
+ + +记住下面这两个参数然后点击My Company
+记住Company ID
点击wechat workplace
然后微信扫描这个二维码即可绑定应用。
然后在config.yml
最后一行里面加上这个三个参数格式如下
1 | AgentId: # |
在index.py
中找到sendServerChan
将这个函数替换为下面代码,配置即可成功,
1 | def sendServeChan(msg): |
OK,如果这些都配置好了,那么你的wechat应该就可以收到信息了
+总结
+ +至此,这个有趣的项目就弄完了,虽然在一天半时间,这个过程中我曾想过放弃很多次,但是考虑到每天填那个表,还是坚持了下载,但终究还是我运气好,就成功了,欢迎大家有问题啥的留言呀😂,最后分享一下喜悦
+ +如果还想实现其他的功能建议自己去探索哟,比如拍照签到,因为我没有相关的条件(没有拍照签到的任务,无法测试😂)