config.yml
默认配置文件config_xxxx.yml
xx学校的配置文件,xxxx是学校英文简称index.py
完成自动提交的py脚本generate.py
帮助生成默认项配置的py脚本requirements.txt
py依赖库以及版本说明文件currentcy
通用脚本大部分学校没有禁用学生账号登录云端系统,只有少部分学校禁用了
在readme的比较靠后的位置,我写了一个我测试过的云端系统被禁用或者没被禁用的表格,部分学校的同学,直接搜索就可以知道你们学校是否被禁用云端系统
config.yml
中填好学校名称index.py
,会报错,因为你只填了学校信息,不用管他,然后你会得到类似下面这样的输出
2020-09-18 10:35:35 {'login-url': 'http://authserver.yibinu.edu.cn/authserver/login?service=https%3A%2F%2Fyibinu.cpdaily.com%2Fportal%2Flogin', 'host': 'yibinu.cpdaily.com'}
从这个里面拿出host的值yibinu.cpdaily.com
config.yml
中填好用户名(学号或者工号),密码,学校等index.py
,大概率会报错,因为你没有配置表单默认值信息,不用管他,然后你会得到类似下面这样的输出
2020-09-18 10:57:05 {'msg': 'login failed! 登陆失败,cookies返回为null', 'code': 1, 'cookies': None}
从这个里面拿出msg的值login failed! 登陆失败,cookies返回为null
cookies返回为null
就代表云端系统被禁用了请联系开发者
,这代表模拟登陆api可能暂时不适用于你们学校,这时候如果你有能力自行改写适配,可以参考模拟登陆api的项目设计思路,自己完成适配;如果没有,可以联系我,捐赠适配,Q:461009747第一种情况,云端系统可用,那么你可以直接看下面的云端系统可用(配合腾讯云函数)的操作步骤,或者如果你自己有服务器,也完全可以使用定时任务挂在你自己的服务器上
git clone https://github.com/ZimoLoveShuang/auto-submit.git
config.yml
中对应的学号(username)和密码(password)还有地址(address)等等信息,详情请看config.yml
中的注释说明,注意这里的学号和密码都是智慧校园的学号和密码dependency.zip
上传,然后选择运行环境python3.6
,然后点击确定,耐心等待一下,上传依赖包需要花费的时间比较长
python3.6
,创建方式选择空白函数,然后点击下一步
index.py
直接全文复制粘贴到云函数的index.py
,然后点击文件->新建,文件名命名为config.yml
,然后把本地配置好的config.yml
文件中的内容直接全文复制粘贴到云函数的config.yml
文件,点击下面的高级设置,设置超时时间为60秒
,添加层为刚刚新建的函数依赖层,然后点击完成
0 0 12 * * * *
success.
,代表自动提交成功,如遇到问题,请仔细查看日志第二种情况,云端系统不可用(被禁用),这种情况就只能使用通用脚本了,同样可以挂在腾讯云函数,或者你自己的服务器上
git clone https://github.com/ZimoLoveShuang/auto-submit.git
auto-submit
目录下,安装依赖,命令pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
currency
文件夹,配置config.yml
python login.py
获取到sessionToken
,acw_tc
,MOD_AUTH_CAS
和CpdailyInfo
,填入currency/index.py
对应位置currency
文件夹,触发管理和上面一样python3和pip3
user
信息之后本地执行generate.py
,根据提示信息手动输入,然后将分割线下的内容复制到配置文件中对应位置xx省/xx市/xx县
这个格式输入文本即可学校名称 | 学校英文简称 | 加入今日校园的方式 |
---|---|---|
宜宾学院 | yibinu | NOTCLOUD |
安徽农业大学经济技术学院 | jjjs | CLOUD |
中国矿业大学 | cumt | NOTCLOUD |
惠州市技师学院 | hzti | CLOUD |
西南大学 | swu | NOTCLOUD |
长江师范学院 | yznu | NOTCLOUD |
新乡医学院 | xxmu | CLOUD |
天津天狮学院 | tianshi | CLOUD |
河南大学 | henu | NOTCLOUD |
韩山师范学院 | hstc | CLOUD |
白城师范学院 | bcnu | NOTCLOUD |
成都师范学院 | cdsf | CLOUD |
江西理工大学 | jxust | NOTCLOUD |
南京农业大学 | njau | NOTCLOUD |
贵州医科大学 | gmc | NOTCLOUD |
大连海洋大学 | dlou | CLOUD |
广东工贸职业技术学院 | gdgm | NOTCLOUD |
合肥工业大学 | hfut | CLOUD |
河南中医药大学 | hactcm | NOtCLOUD |
新乡学院 | xxu | CLOUD |
华侨大学 | hqu | NOTCLOUD |
滁州职业技术学院 | chzc | CLOUD |
大连大学 | dlu | CLOUD |
江西理工大学应用科学学院 | jxust | NOTCLOUD |
四川建筑职业技术学院 | scac | NOTCLOUD |
福建医科大学 | fjmu | NOTCLOUD |
四川信息职业技术学院 | scitc | NOTCLOUD |
广州大学华软软件学院 | sise | CLOUD |
贵州交通职业技术学院 | gzjtzy | NOTCLOUD |
南京城市职业学院 | ncc | CLOUD |
云南财经大学 | ynufe | NOTCLOUD |
新疆财经大学 | xjufe | NOTCLOUD |
安阳师范学院 | aynu | NOTCLOUD |
华北电力大学(保定) | ncepu | NOTCLOUD |
重庆医科大学 | cqmu | CLOUD |
未通过的原因是由于学生账号被禁用云(web)端系统,而不是模拟登陆api不适用金智统一认证系统,不过这没有关系,依然可以使用currency下的通用脚本(重点:可能是完全通用,请注意完全通用这四个字,毕竟我模拟了整个今日校园app的认证和提交行为)
学校名称 | 学校英文简称 | 加入今日校园的方式 |
---|---|---|
福州大学 | fzu | NOTCLOUD |
临沂大学 | lyu | NOTCLOUD |
桂林师范高等专科学校 | glnc | NOTCLOUD |
config_学校英文简称.yml
,示例:config_hzti.yml
,hzti是惠州市技师学院的英文简称,不需要python3.8
运行环境,如没有,自行安装PyYAML oss2 urllib requests json
等python库,如没有,自行安装,参考命令
pip install -r requirements.txt -t . -i https://mirrors.aliyun.com/pypi/simple
CLOUD
和NOTCLOUD
CLOUD
方式对应的教务系统登陆页通常以/iap/login
结尾NOTCLOUD
方式对应的教务系统登陆页通常以/authserver/login
结尾ssl pinning
机制,一般的方法无法抓包ssl pinning
机制的方法:使用逍遥安卓4.4.4
模拟器,配合xposed框架
,使用justtrustme模块
,hook
掉验证证书的函数即可抓包@suqir @所有捐赠作者的朋友 @所有支持作者的朋友 @所有贡献出服务器的热心网友 @所有贡献出邮箱的热心网友 @所有反馈的朋友 @所有测试的朋友
三月初的时候,我是先用java写了宜宾学院的教务系统成绩单爬虫,然后回过头来才写的这个脚本,另一方面,java处理这样的数据,会显得过于冗余,要写的代码会多很多(我想偷懒)
答案跟上面差不多,其实是写过一遍登陆过程了,懒得再写第二遍。另外,抽取出来有一个好处,就是模块化,可以在不影响这个项目的情况下,升级登陆api,便于更新和维护
其实是我没学过python,这应该算是我用python写的第一个小项目吧,还挺好用的,没有上手难度,拿到就能写
其实是有不少人跟我反馈微信消息推送配置要自己手动操作几步,嫌麻烦,不如直接输入个邮箱地址,来得方便,所以我就开放了邮件服务,其实QQ邮件也可以发送到微信通知,去邮箱app设置就好了,可以参考https://jingyan.baidu.com/article/d5a880ebccafd813f147ccb0.html,另外,如果想要微信消息推送,也可以跟我联系,如果人多,我就考虑更新,因为我找到了一个比server酱更好的解决方案,也不需要大家配置什么,大概的操作过程就是微信扫码,关注公众号,然后会收到一个key,将这个key放到配置文件,基本上就像输入邮件地址一样简单方便
有,每个邮箱地址每天上限10条,0点刷新,正常使用完全够了,加入限制主要是 为了防止接口被滥用,毕竟这是我的私人邮箱