使用Github Action自动填写疫情通

西电晨午晚检一天三次,通过企业号功能进行填写。实际上,西电企业号大部分功能是以网页模式工作的,通过构造connection发送合适的request,设置计划按时间自动运行,即可完成自动填写。

1、原理分析

打开晨午晚检页面,复制链接,得到实际的网页地址:https://xxcapp.xidian.edu.cn/site/ncov/xidiandailyup

在浏览器打开后发现会重定向到登录页面:https://xxcapp.xidian.edu.cn/uc/wap/login

一般来说,登录一次之后,会保留一段时间的cookies,我们要做的就是模拟一次登录,获得相应的connection,随后再次向晨午晚检网页发送request

2、登录过程

[TODO]

3、使用Python

  • 准备

Python中有很多与网络相关的库,例如scapy。在这里我们直接使用requests库模拟http的request请求。

首先下载requests库:pip install requests

随后导入:import requests

由于填写的信息是以json形式post的,因此要用到json库格式化信息:import json

  • 数据处理

提前编辑好各个字段:是否在校(sfzx),体温(列表形式,对应数字),区域(高德地图API)等

{
"sfzx": "1",
"tw": "1",
"area": 根据实际情况填写,Unicode编码,
"city": 同上,
"province": 同上,
"address": 同上,
"geo_api_info": 高德地图API,Unicode编码,
"sfcyglq": "0",
"sfyzz": "0",
"qtqk": "",
"askforleave": "0"
}

可以将其保存为单独的json文件,再使用json.load导入

  • 登录

首先新建一个requests.Session,使用登录接口,post用户名和密码,获得登陆结果

conn = requests.Session()
result = conn.post(
url="https://xxcapp.xidian.edu.cn/uc/wap/login/check",
data={'username': uname, 'password': upswd}
)
if result.status_code != 200:
print('Failed to login.', result.status_code)
exit()
  • 提交数据

使用上面新建的conn,再次向晨午晚检接口post数据,并保存新的respond

result = conn.post(
url="https://xxcapp.xidian.edu.cn/xisuncov/wap/open-report/save",
data=data
)
if result.status_code != 200:
print("Error.", result.status_code)
exit()
  • 验证结果

查看respond传回的消息,判断是否成功

rjson = json.loads(result.text)
print(rjson['m'])

Github Action

新建仓库上传配置好的数据和代码,就可以使用Github Action帮我们自动完成任务了。在repository页面上点击Action,选择set up a workflow yourself 来自定义任务

Github Action每次执行时,实际上是使用了一台新的虚拟机执行任务,因此需要在yml文件内完整地写出从一个新系统到代码启动所需要执行的全部步骤

name: Daily Check In
on:
schedule:
- cron: '0,30 0,5,11 * * *'
# UTC时间,分别对应了北京时间的8点、13点、19点的整点和30分 jobs:
sign_in:
runs-on: ubuntu-latest
# 定义系统类型,这里选择Ubuntu
steps:
- name: '[Prepare] Code Check'
uses: actions/checkout@v2
# 从该仓库clone代码到虚拟机
- name: '[Prepare] Set python'
uses: actions/setup-python@v1
# 安装python
with:
python-version: '3.x'
- name: '[Prepare] Install Dependencies'
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade requests
# 安装需要的python库
- name: '[Final Main] Check In'
run: |
python submit.py
# 执行代码

有关详细的Github Action yml文件格式,可以在官方文档中找到解释:https://docs.github.com/cn/actions

使用Github Action自动填写疫情通的更多相关文章

  1. hexo配合github action 自动构建(多种形式)

    已经使用HEXO正常构建GitHub页面 根据github action 给hexo配置自动部署github page 前往墨抒颖的个人网站查看纯净版 1. 为仓库设置访问密钥 第一步先生成密钥,打开 ...

  2. 利用.NET 5和Github Action 自动执行米游社原神每日签到福利

    背景 众所周知,原神的签到福利是需要下载app才可以领取的.但像我这种一般不怎么刷论坛的人,每天点开app签到很麻烦. 很多大佬利用Github的Action自动执行的模式,实现了很多好东西.加上.n ...

  3. 5 分钟教你快速掌握 GitHub Actions 自动部署博客

    自从 GitHub 宣布 GitHub Actions 在平台上对所有开发人员和存储库可用以来,GitHub Actions 越来越受欢迎.很多第三方平台在生态系统中有速度等限制,将进一步推动开发人员 ...

  4. github action 实现CI/CD

    两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...

  5. 利用Github Action和.Net 5 自动执行米游社原神每日签到福利

    GenshinDailyHelper 原神的签到福利是需要单独下载APP进行才可以领取,并且每天需要打卡,虽然奖励并不是很可观,但有一些摩拉,食材和可观的经验书累计起来还是挺有吸引力的.可能本身不怎么 ...

  6. 使用GitHub Action进行打包并自动推送至OSS

    GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 官方文档:https://docs.github.com/cn/actions CI\CD 持续 ...

  7. 你知道什么是 GitHub Action 么?

    本文是 GitHub Action 的入门教程,如您已有相关使用经验可以直接关掉. GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 之前一直都是 ...

  8. 用 GitHub Action 构建一套 CI/CD 系统

    ​ 缘起 Nebula Graph 最早的自动化测试是使用搭建在 Azure 上的 Jenkins,配合着 GitHub 的 Webhook 实现的,在用户提交 Pull Request 时,加个 r ...

  9. 使用github action发布hexo博客到云服务器

    目录 搭建Hexo博客 安装主题hexo-theme-bamboo 修改博客名称等信息 添加github action发布 1. 在github中创建自己的博客仓库 2. 设置Secrets 3. 在 ...

随机推荐

  1. java多线程编程(二)

    1. wait 和 sleep 区别? 1.wait可以指定时间也可以不指定,sleep必须指定时间. 2.在同步中时,对cpu的执行权和锁的处理不同.  wait:释放执行权,释放锁.  sleep ...

  2. 面试题之java缓存总结,从单机缓存到分布式缓存架构

    1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...

  3. 05网络并发 ( GIL+进程池与线程池+协程+IO模型 )

    目录 05 网络并发 05 网络并发

  4. LNMP 架构 与 部署 uwsgi 服务

    内容概要 nginx 配置文件中 location 匹配符号 LNMP 架构 uwsgi 服务部署 内容详细 一.location 使用 Nginx Location 可以控制访问网站的路径,但一个 ...

  5. Java架构师必备技能:docker使用大全

    前言   java工程师成长为架构师是一个艰难且耗费心力的过程,不仅仅需要熟悉java体系内相关的技术,同时要掌握许多运维相关的操作技能,随着k8s逐渐成为微服务持续集成开发难以越过的基础设施之后,d ...

  6. 手把手带你安装最小化suse 12 linux

    当然. 你需要现有一个vmware,还要有一个suse的镜像,suse镜像可以直接去官网获取,只需要注册一个suse的账号就可以了,官网下载会有点慢,可以使用迅雷下载 F2 可以设置安装界面的语言,可 ...

  7. MySQL架构原理之运行机制

    所谓运行机制即MySQL内部就如生产车间如何进行生产的.如下图: 1.建立连接,通过客户端/服务器通信协议与MySQL建立连接.MySQL客户端与服务端的通信方式是"半双工".对于 ...

  8. CVE-2020-0796

    CVE-2020-0796 SMBv3漏洞复现 0X00漏洞简介 Microsoft Windows和Microsoft Windows Server都是美国微软(Microsoft)公司的产品,Mi ...

  9. 浅谈:redis的主从复制 + 哨兵模式

    浅谈:redis的主从复制 + 哨兵模式 主从模式 ​ 在谈论redis的主从复制之前,我们先回想下mysql的主从搭建过程,第一步呢首先要在主库服务器中修改my.cnf,开启一下bin_log功能, ...

  10. CLR 详解

    公共语言运行时就是按照CLI标准制作的执行托管代码的环境.CLR 能运行非托管代码. 公共语言运行的功能:代码JIT/AOT编译.  内存管理 .垃圾回收.异常处理.反射服务.安全服务.程序集加载.本 ...