写在前边

自从2020年开始,收到疫情的影响,学校要求每日在今日校园上报健康信息。

虽然每天只需要耗费几分钟就能填写完的内容,日积月累也是一个很麻烦的事情。

这里不是说如何应付这件事,只是每天重复这样子的内容太过于繁琐。

比如像所在地,这个又不会经常变更,所以就都交给程序自动解决好了。

为什么不写

其实早就有这样的想法,但是出于没时间lǎn dé xiě等原因,迟迟没有动手。

直到最近,突然又想起来这件事,准备开始研究。

但是又一想,这件事都过去这么久了,会不会已经有人造好轮子了呢?

于是Google了一下,发现果然不出我所料,还真的有小可爱已经写好了。

那还等什么,直接用就好了。

如何操作

首先放上项目地址

源项目地址:https://github.com/ZimoLoveShuang/auto-submit

经过我稍微修改了的项目地址:https://github.com/chmoe/auto-submit(2020-10-27 23:21:45更新,作者已将我的PR合并,方式一现在已经可以直接访问原作者仓库)

首先来说,这个项目的readme看起来很复杂的样子,我最初拿到的时候阅读了好几遍。

因此在这里总结一下。

我需要使用的功能就是信息收集

因此,需要做的步骤如下:

  • git clone https://github.com/ZimoLoveShuang/auto-submit.git

  • 修改/auto-submit/config.yml中的学校和学号密码信息。(这里学校填中文全称、账号密码填写信息门户的账号和密码。

  • 运行generate.py文件,根据输出内容手动填写一次问卷,填写结束后手动复制控制台输出的横线下方的内容,将其复制到/auto-submit/config.yml文件中相应位置进行覆盖。

  • 打开腾讯云函数,注册认证后,进入控制台,点击左边的层,然后点新建,名称随意,然后点击上传zip,选择release中的dependency.zip上传,然后选择运行环境python3.6,然后点击确定,耐心等待一下,上传依赖包需要花费的时间比较长
    新建腾讯云函数依赖

  • 点左边的函数服务,新建云函数,名称随意,运行环境选择python3.6,创建方式选择空白函数,然后点击下一步
    新建腾讯云函数

  • 提交方法选择在线编辑,把本地修改好的index.py直接全文复制粘贴到云函数的index.py,然后点击文件->新建,文件名命名为config.yml,然后把本地配置好的config.yml文件中的内容直接全文复制粘贴到云函数的config.yml文件,点击下面的高级设置,设置超时时间为60秒,添加层为刚刚新建的函数依赖层,然后点击完成

配置腾讯云函数

  • 进入新建好的云函数,左边点击触发管理,点击创建触发器,名称随意,触发周期选择自定义,然后配置cron表达式,下面的表达式表示每天中午十二点整执行0 0 12 * * * *

  • 然后就可以测试云函数了,绿色代表云函数执行成功,红色代表云函数执行失败(失败的原因大部分是由于依赖造成的)。返回结果是success.,代表自动提交成功,如遇到问题,请仔细查看日志

  • 也可配合Windows计划任务或者使用linux定时任务,将脚本挂在自己的云服务器上,不会就搜索一下,过程不再赘述

修改说明

由于原作者在项目中贡献了自己的QQ邮箱,为了减轻压力,因此想可以加入自己的邮件系统。

而且原作者只有在填写成功时会发送邮件通知,但是我想知道所有自动填写的状态,但是多发几次邮件就会超过原作者设置的限制。。

邮件接口有次数限制吗?

有,每个邮箱地址每天上限10条,0点刷新,正常使用完全够了,加入限制主要是 为了防止接口被滥用,毕竟这是我的私人邮箱

而且单纯靠邮件推送,有的时候查看不及时会出现问题。

虽然原作者提到了Server酱的配置稍微有些复杂,但是比起暂时没有,我认为还是有人希望加上这种提醒。

另外考虑到有些小可爱可能不喜欢用微信,所以又引入了Qmsg酱通知。

这样使用的小可爱也可以根据自己需求进行配置。

增加部分具体内容

1
2
3
4
5
6
7
8
9
Info:
ServerChan: # 填写Server酱的SCKEY
Qsmg: # 填写Qsmg酱的SCKEY
Email:
enable: true # 必须为true才会使用自己的邮箱,否则默认使用原作者邮箱
server: smtp.exmail.qq.com # 填写邮件的smtp服务器(这里写好的是腾讯企业邮箱的服务器和端口,如果是qq邮箱应该是stmp.qq.com:465)
port: 465 # 填写邮件服务器的端口号
account: '' # 邮件服务器登录用户名
password: '' # 邮件服务器登录密码(如果QQ邮箱不是QQ密码,是smtp服务单独的授权码) 参考:https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256

讲解使用方法

绑定Server酱(微信推送)

官方链接:http://sc.ftqq.com/

如果有能力请直接参考上述官方链接

操作步骤:

  • 打开官方链接
  • 点击右上角登入,这里会自动跳转到github授权界面,用github授权登录即可(如果你不知道github为何物的话,洗洗睡吧)
  • 登录成功回到官网,点击微信推送
  • 扫描二维码,关注。
  • 点击发送消息菜单栏
  • 找到下方任意一行淡黄色背景的内容,如https://sc.ftqq.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxx.send
  • 复制红色部分内容,粘贴到/auto-submit/config.yml中的ServerChan部分(如图红色部分)

绑定Qmsg酱(QQ推送)

官方链接:https://qmsg.zendee.cn/

如果有能力请直接参考上述官方链接

操作步骤:

  • 打开官方链接
  • 点击右上角登录,用你喜欢的方式登录,我选择的是QQ扫码登录
  • 然后选择Qmsg酱小姐姐,加好友。
  • 添加QQ号,填上你添加Qmsg酱的QQ号。
  • 点击添加按钮
  • 点击文档菜单栏
  • 找到下方任意一行淡灰色背景的内容,如https://qmsg.zendee.cn:443/send/xxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 复制红色部分内容,粘贴到/auto-submit/config.yml中的Qsmg部分(如图红色部分)

自定义提醒QQ

如果您在绑定Qmsg酱的时候设定了多个QQ,但是只想要指定的qq接受提醒消息,这里可以修改相对应目录下的index.py文件中的如下设置

1
2
3
4
5
6
7
8
9
10
11
# Qmsg酱通知
def sendQmsgChan(msg):
log('正在发送Qmsg酱。。。')
- res = requests.post(url='https://qmsg.zendee.cn:443/send/{0}'.format(config['Info']['Qsmg']),={'msg': title_text + '\n时间:' + getTimeStr() + "\n 返回结果:" + str(msg)})
+ res = requests.post(url='https://qmsg.zendee.cn:443/send/{0}'.format(config['Info']['Qsmg']),={'msg': title_text + '\n时间:' + getTimeStr() + "\n 返回结果:" + str(msg), 'qq':'这里改成qq号,如果有多个就用英文逗号隔开,前提是都在Qsmg绑定了'})
code = res.json()['success']
if code:
log('发送Qmsg酱通知成功。。。')
else:
log('发送Qmsg酱通知失败。。。')
log('Qmsg酱返回结果'+code)

请一定使用英文逗号!
请一定使用英文逗号!
请一定使用英文逗号!

邮箱服务器配置

如果你使用QQ邮箱,可以参考官方链接https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256获取授权码。

其他邮箱也需要使用授权码。

在本文件配置中,需要使用邮件服务器中的SMTP服务器,请自行配置服务器和端口号。

下方有一些常用邮箱服务器的地址及其端口号等信息,仅供参考。

阿里云邮箱(mail.aliyun.com):
POP3服务器地址:pop3.aliyun.com(SSL加密端口:995;非加密端口:110)
SMTP服务器地址:smtp.aliyun.com(SSL加密端口:465;非加密端口:25)
IMAP服务器地址:imap.aliyun.com(SSL加密端口:993;非加密端口:143)

谷歌邮箱(google.com):
POP3服务器地址:pop.gmail.com(SSL启用端口:995)
SMTP服务器地址:smtp.gmail.com(SSL启用端口:587)

新浪邮箱(sina.com):
POP3服务器地址:pop3.sina.com.cn(端口:110)
SMTP服务器地址:smtp.sina.com.cn(端口:25)

Tom邮箱(top.com):
POP3服务器地址:pop.tom.com(端口:110)
SMTP服务器地址:smtp.tom.com(端口:25)

网易邮箱(163.com):
POP3服务器地址:pop.163.com(端口:110)
SMTP服务器地址:smtp.163.com(端口:25)

126邮箱:
POP3服务器地址:pop.live.com(端口:995)
SMTP服务器地址:smtp.126.com(端口:25)

雅虎邮箱(yahoo.com):
POP3服务器地址:pop.mail.yahoo.com
SMTP服务器地址:smtp.mail.yahoo.com

雅虎中国(yahoo.com.cn):
POP3服务器地址:pop.mail.yahoo.com.cn(端口:995)
SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587)
雅虎邮箱POP3的SSL不启用端口为110,POP3的SSL启用端口995;SMTP的SSL不启用端口为25,SMTP的SSL启用端口为465。

Foxmail邮箱(foxmail.com):
POP3服务器地址:POP.foxmail.com(端口:110)
SMTP服务器地址:SMTP.foxmail.com(端口:25)

QQ邮箱(mail.qq.com
POP3服务器地址:pop.qq.com(端口:110)
SMTP服务器地址:smtp.qq.com(端口:25)
SMTP服务器需要身份验证。

搜狐邮箱(sohu.com):
POP3服务器地址:pop3.sohu.com(端口:110)
SMTP服务器地址:smtp.sohu.com(端口:25)

HotMail邮箱(hotmail.com):
POP3服务器地址:pop.live.com(端口:995)
SMTP服务器地址:smtp.live.com(端口:587

移动139邮箱:
POP3服务器地址:POP.139.com(端口:110)
SMTP服务器地址:SMTP.139.com(端口:25)

中华网邮箱(china.com):
POP3服务器地址:pop.china.com(端口:110)
SMTP服务器地址:smtp.china.com(端口:25)


更新

2020-10-27 23:06:29更新

我昨天发现,从前天起,代码的作用就失灵了

结果导致周日那天没有提交。。

昨天晚上过了预设的自动填写时间。。结果还是没有受到任何提醒。。

于是我登录了下腾讯云函数的管理页面,发现出现无法登陆的提示

手动试了一下。。结果emmm 金智教育的网页登录被学校ban掉了hhhhhh

所以只能去第二种方式了

根据原作者仓库,我这我的修改仓库的read.md中的云端系统不可用,需使用通用脚本,参考步骤如下步骤进行操作

首先还是克隆仓库,但是我之前已经克隆好了,所以可以直接跳过

然后进入克隆好的文件夹中,执行下边的命令安装依赖文件

1
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

进入currency文件夹中(以下描述所有文件均默认为该目录下),按照上文提到的方式进行文件config.yml的配置。

注:这里的手机号是登录今日校园的手机号,需要一会儿接收验证码用

在cmd/terminal中执行python login.py,这个时候会提示输入手机验证码

然后会获取到一些参数,sessionTokenacw_tcMOD_AUTH_CASCpdailyInfo

将这些参数填写到文件index.py中开头配置部分

然后按照上边的方式配置题目参数:运行generate.py文件,根据输出内容手动填写一次问卷,填写结束后手动复制控制台输出的横线下方的内容,将其复制到config.yml文件中相应位置进行覆盖。

如果你想使用自己的邮件系统或者是希望使用Qsmg或放糖提示的话,请clone我的仓库:https://github.com/chmoe/auto-submit

方法一过渡到方法二

我不确定这个部分是否有写的意义,毕竟小可爱们学校不会那么变态突然禁用这个云系统 ぴえん

来自wiki共享资源:しんぎんぐきゃっと的作品

如果需要过渡的话,按照上边的方法二配置进行操作之后,在腾讯云函数部分只需要重新上传代码即可,不需要重新设置定时之类的其他内容。

方法二已知问题

会导致手机端登录下线,即不能同时登录。(如果手机端登录,则需要重新执行python login.py,然后更新index.py中的配置部分

如果同时出现多个(不同)问卷的话,会无法进行正常填写,程序会报错


注:本文中使用到的所有SCKEY|password|授权码等内容,请一概不要复制粘贴别人的,也一定不要告诉别人(这和把你的银行卡密码告诉别人的性质是一样的)。

参考

常用邮箱SMTP服务器地址大全:https://blog.csdn.net/ning521513/article/details/79217203

Github-ZimoLoveShuang/auto-submit:https://github.com/ZimoLoveShuang/auto-submit