首页 > 其他分享 >小北自动打卡

小北自动打卡

时间:2022-09-19 12:34:17浏览次数:54  
标签:date url res self headers 自动 小北 打卡

  最近学校要求小北打卡,每天早上起床都要打卡真的让人很不舒服,于是从网上找了教程弄了一个小北自动打卡程序。
  在Student("小北账号", "密码").daka()输入自己的小北账号和密码运行即可打卡成功(如果没有成功可能是打卡人太多,过段时间在运行几次即可),有条件也可以部署到服务器里设置定时任务每天自动打卡。

import base64
import datetime

import requests

session = requests.Session()


class Student:
    def __init__(self, username, password):
        self.username = username
        self.password = password
        self.session = requests.Session()
        # self.redisClient = redis.StrictRedis(host='#', port=16379, db=0)
        self.IsPost = False
        self.baseUrl = 'https://xiaobei.yinghuaonline.com/xiaobei-api/'
        self.headers = {}
        self.loginInfo = self.login()

    def req(self, url, date=None, IsPost=False, headers=None):
        self.session.trust_env = False
        if date is None:
            date = {}
        if headers is None:
            headers = self.headers
        url = f'{self.baseUrl}{url}'
        if IsPost:
            res = self.session.post(url, json=date, headers=headers).json()
        else:
            res = self.session.get(url, params=date, headers=headers).json()
        if res.get('code') != 200:
            print('错误编码:' + str(res.get('code')) + '\t' + "错误消息:" + res.get("msg"))
            return
        else:
            return res

    def login(self):
        imgInfo = self.req("captchaImage")
        uuid = imgInfo['uuid']
        code = imgInfo['showCode']
        self.password = base64.b64encode(self.password.encode()).decode()
        loginInfo = self.req(url='login', date={
            "username": self.username,
            "password": self.password,
            "code": code,
            "uuid": uuid,
            "appUuid": ""
        }, IsPost=True)
        self.headers = {'Authorization': 'Bearer ' + loginInfo['token'],
                        "user-agent": "iPhone10,3(iOS/14.4) Uninview(Uninview/1.0.0) Weex/0.26.0 1125x2436"}
        return loginInfo

    def getUserInfo(self):
        if not self.headers:
            print("用户没登录成功")
            return
        UserInfo = self.req(url="getInfo")
        if UserInfo:
            return UserInfo
        else:
            print("用户信息为空")

    def daka(self):
        if not self.headers:
            print("用户没登录成功")
            return
        userInfo = self.getUserInfo()
        print(userInfo)
        nickName = userInfo['user']['nickName']
        phone = userInfo['user']['phonenumber']
        # 获取当前月份的打卡记录
        nowdate = str(datetime.date.today())
        date = {"beginCreateTime": "' + nowdate + '", "endCreateTime": "' + nowdate + '"}
        dakaInfo = self.req(
            url='student/health/list?params={"beginCreateTime":"' + nowdate + '","endCreateTime":"' + nowdate + '"}')
        if dakaInfo['total']:
            print(nickName + '今天已经打卡')
            return
        # 获取学生打卡信息
        healthInfo = self.req(url='student/healthLocation')
        # 开始填表
        res = self.req(url='student/health', IsPost=True, date={
            # 体温自测
            "temperature": "36.5",
            # 当前位置
            "coordinates": "中国湖南省长沙市望城区",
            # 当前经纬度
            "location": "112.911277,28.356724",
            # 今日份身体状况 1无异常情况2 有发烧发热症状
            "healthState": "1",
            # 是否去过中高风险地区  1 是 2否
            "dangerousRegion": "2",
            # 备注
            "dangerousRegionRemark": "",
            # 近七日接触情况
            "contactSituation": "2",
            # 近七日外出情况 1 无外出 2有外出
            "goOut": "1",
            # 外出备注
            "goOutRemark": "",
            # 其他不适症状
            "remark": "",
            # 同住家人身体情况
            "familySituation": "1"})
        print(res)
        print(nickName + '打卡完成')


# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    # 登录
    Student("小北账号", "密码").daka()

标签:date,url,res,self,headers,自动,小北,打卡
From: https://www.cnblogs.com/lengyingmofeng/p/16707333.html

相关文章