# auto-submit **Repository Path**: heweiliang/auto-submit ## Basic Information - **Project Name**: auto-submit - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-07-20 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # auto-submit #### 今日校园每日自动提交疫情上报py脚本,支持邮件推送提交结果消息,支持几乎所有学校 #### 使用了此脚本或者参考了这个项目,请自觉给项目点个star #### 本项目仅供学习交流使用,如作他用所承受的任何直接、间接法律责任一概与作者无关 #### 如果此项目侵犯了您或者您公司的权益,请立即联系我删除 # 项目说明 - `config.yml` 默认配置文件 - `config_xxxx.yml` xx学校的配置文件,xxxx是学校英文简称 - `index.py` 完成自动提交的py脚本 - `generate.py` 帮助生成默认项配置的py脚本 - `requirements.txt` py依赖库以及版本说明文件 - `dependency.zip` 打包好的云函数依赖库文件 # 使用方式 ## 宜宾学院的同学 ### 配合腾讯云函数使用(免费) 1. clone 或者 下载 此仓库到本地 ```shell script git clone https://github.com/ZimoLoveShuang/auto-submit.git ``` 2. 打开本地仓库文件夹,配置`config.yml`中对应的学号(username)和密码(password)还有地址(address)等等信息,详情请看`config.yml`中的注释说明,**注意这里的学号和密码都是智慧校园的学号和密码** 3. 打开百度搜索[腾讯云函数](https://console.cloud.tencent.com/scf/index?rid=1),注册认证后,进入控制台,点击左边的层,然后点新建,名称随意,然后点击上传zip,选择项目中的`dependency.zip`上传,然后选择运行环境`python3.6`,然后点击确定,耐心等待一下,上传依赖包需要花费的时间比较长 ![新建腾讯云函数依赖](screenshots/ed6044e6.png) 4. 点左边的函数服务,新建云函数,名称随意,运行环境选择`python3.6`,创建方式选择空白函数,然后点击下一步 ![新建腾讯云函数](screenshots/a971478e.png) 5. 提交方法选择在线编辑,把本地修改好的`index.py`直接全文复制粘贴到云函数的`index.py`,然后点击文件->新建,文件名命名为`config.yml`,然后把本地配置好的`config.yml`文件中的内容直接全文复制粘贴到云函数的`config.yml`文件,点击下面的高级设置,设置超时时间为`60秒`,添加层为刚刚新建的函数依赖层,然后点击完成 ![配置腾讯云函数](screenshots/1aa80c41.png) 6. 进入新建好的云函数,左边点击触发管理,点击创建触发器,名称随意,触发周期选择自定义,然后配置cron表达式,下面的表达式表示每天中午十二点整执行 ```shell script 0 0 12 * * * * ``` 7. 然后就可以测试云函数了,绿色代表云函数执行成功,红色代表云函数执行失败(失败的原因大部分是由于依赖造成的)。返回结果是`auto submit fail.`代表自动提交失败;返回结果是`auto submit success.`,代表自动提交成功,如遇到问题,请仔细查看日志 8. enjoy it! 9. 也可配合Windows计划任务或者使用linux定时任务,将脚本挂在自己的云服务器上,不会就搜索一下,过程不再赘述 #### 如果你不会配置表单组默认选项配置,请先配置好`user`信息之后本地执行`generate.py`,根据提示信息手动输入,然后将分割线下的内容复制到配置文件中对应位置;如果问题中有省市县三级联动的位置,按`xx省/xx市/xx县`这个格式输入文本即可 ## 其他学校的同学 使用方式同宜宾学院同学,但请注意修改`index.py`中`21`行,读取的配置文件要和你的配置文件名称对应 ```python config = getYmlConfig(yaml_file='config.yml') ``` # 封禁白嫖说明 #### 白嫖党太多且几乎定时为同一时刻,导致高并发,使得提供模拟登陆API的服务器响应很不稳定,已采取封禁措施 #### 封禁策略:未授权的账号只能使用一次模拟登陆API接口 #### 解封联系QQ:461009747,捐赠(金额不限),收到的捐赠将会用于购买和续费或者购买更好的服务器 #### 也欢迎有服务器的同学贡献出服务器,造福本校同学;如不会部署模拟登陆API服务,可以联系我 #### 目前通过测试的学校
学校名称 学校英文简称 加入今日校园的方式
宜宾学院 yibinu NOTCLOUD
安徽农业大学经济技术学院 jjjs CLOUD
中国矿业大学 cumt NOTCLOUD
惠州市技师学院 hzti CLOUD
西南大学 swu NOTCLOUD
长江师范学院 yznu NOTCLOUD
新乡医学院 xxmu CLOUD
天津天狮学院 tianshi CLOUD
河南大学 henu NOTCLOUD
韩山师范学院 hstc CLOUD
#### 福州大学的同学自动签到已支持,请看[auto-sign项目](https://github.com/ZimoLoveShuang/auto-sign)暂不支持,原因:接口更新,暂未测试通过 # 说明 1. 此项目**默认配置适用于宜宾学院学子,也欢迎其他学校同学提交适合自己学校的配置**,命名为`config_学校英文简称.yml`,示例:`config_hzti.yml`,hzti是惠州市技师学院的英文简称,不需要抓包 2. 此项目依赖`python3.8`运行环境,如没有,自行安装 3. 此项目依赖`PyYAML oss2 urllib requests json `等python库,如没有,自行安装,**参考命令** ```shell script pip install -r requirements.txt -t . -i https://mirrors.aliyun.com/pypi/simple ``` 4. 此项目依赖上一个爬虫项目[宜宾学院教务系统成绩爬虫](https://github.com/ZimoLoveShuang/yibinu-score-crawler.git),开放的登陆api 5. 此项目默认提交全部正常的情况,如果有其他情况,请自行在今日校园app上提交 # 设计思路 1. 模拟登陆 2. 获取表单 3. 填充表单 4. 提交表单 5. 推送消息 # 关于模拟登陆API的说明 请看[`wisedu-unified-login-api`项目](https://github.com/ZimoLoveShuang/wisedu-unified-login-api.git) # 关于金智教务系统的说明 1. 学校接入金智系统的方式有两种:`CLOUD`和`NOTCLOUD` 2. `CLOUD`方式对应的教务系统登陆页通常以`/iap/login`结尾 3. `NOTCLOUD`方式对应的教务系统登陆页通常以`/authserver/login`结尾 4. 目前以上两种接入方式,我提供的[模拟登陆API](https://github.com/ZimoLoveShuang/wisedu-unified-login-api.git)都能支持 5. 以上两种接入方式,登陆原理均为CAS,接口略有一点不同,但大同小异 # 其他 1. 关于[Cpdaily-Extension](https://github.com/ZimoLoveShuang/yibinu-score-crawler/blob/master/src/main/java/wiki/zimo/scorecrawler/helper/DESHelper.java):今日校园APP的处理是登陆时获取,每台设备唯一,但是有个空子就是,只要你不退出登陆,这个就会一直被维持,一直有效,换句话说,就是在APP上手动退出后失效,所以无需重复抓包获取 ![意外发现:Cpdaily-Extension](screenshots/13d573c2.png) ![意外发现:Cpdaily-Extension](screenshots/e5f77237.png) 2. 关于抓包:今日校园APP某些接口启动了`ssl pinning`机制,一般的方法无法抓包 3. 提供一个参考的 绕过 `ssl pinning`机制的方法:使用`逍遥安卓4.4.4`模拟器,配合`xposed框架`,使用`justtrustme模块`,`hook`掉验证证书的函数即可抓包 4. 此项目为自动提交疫情收集表,自动签到请参考另一个开源项目[auto-sign](https://github.com/ZimoLoveShuang/auto-sign) # 反馈bug或者小问题 请提供完整运行日志 # 更新日志 - 2020-07-17 优化自动获取登陆地址的函数,处理某些学校转发到另一个域名去进行登陆认证的情况 - 2020-07-12 新增对配置文件默认项不正确的检查,并提示 - 2020-07-09 由于根据joinType确定的登陆地址不准确,所以将自动确定登陆地址的方式,改为根据关键字确定 - 2020-07-07 新增帮助生成默认项配置的脚本,进一步降低使用难度 - 2020-07-05 打包好云函数依赖,便于将脚本部署在腾讯云函数上定时执行 - 2020-07-04 完善自动填写表单函数,增加对文本,多选,图片等表单内容的支持;其他学校的学子不需要再自己抓包,通过简化的配置文件配置完成之后即可使用,降低使用难度 - 2020-06-15 加入多用户配置,去掉容易死的休眠策略,配置文件改为yml方式,更直观,恢复默认值配置,配合log输出日志,方便debug - 2020-06-03 去掉比较难配置的微信消息推送,改为开放邮件服务,由邮件推送消息 - 2020-05-31 由于高并发,导致提供模拟登陆API的服务器崩溃,于是尝试封禁白嫖党 - 2020-05-27 去掉繁琐的默认项配置,加入消息推送配置 - 2020-05-13 开源模拟登陆api - 2020-04-26 优化自动填充表单的函数 - 2020-04-25 更新配置文件,使脚本支持大部分学校 - 2020-04-13 重构项目编码,抽取函数 - 2020-03-27 更新提交的表单项,适应金智更新后的接口验证 - 2020-03-18 抓到获取wid的接口,脚本不再暴力尝试,支持提交位置信息 - 2020-03-14 发布暴力尝试脚本 # 致谢 @suqir # 捐赠