python实现易校园自动打卡教程

准备

软件版本(请自行百度)

  • HttpCanary:v9.9.9.9安卓版

    可以用burpsuite,findler等其他的Windows抓包软件代替,自行搜索如何用电脑抓手机的包。

  • 易校园:v2.5.9

    易校园一定要使用低版本的!!!可以去豌豆荚下载历史版本,找到2开头的最后一个版本就行。

    最新版用了ssl pining,抓https的包很麻烦!

  • http Canary配置

    打开http canary,界面如图

    按照提示安装证书

    部分手机可能无法自动弹出安装,比如我的手机。。。。参考以下步骤:

    1、点击左上方菜单

    2、点击【设置】


    3、点击【SSL证书设置】

    4、点击【导出HttpCanary根证书】

    5、选择第二个

    6、安装刚刚导出的证书

    开始

    1. 完场上述准备工作

    2. 进入易校园打卡界面,等待定位完成,划到底部【先不要提交】

      这样做是为了快速找到提交的包

    3. 此时打开HttpCanary,点击右下角的小飞机,开始抓包

    4. 回到易校园,点击提交

    5. 回到HttpCanary,再次点击右下角小飞机,停止抓包

    6. 从下往上找出【POST https://h5.xiaofubao.com/marketing/health/doDetail】

    注意别找错了,一定是doDetail

    1. 找到之后点进去,点击请求包

    2. 点击预览,里面的数据就是你刚才打卡提交的数据,如下图(我的易校园又被强制更新了,抓不了包了,没有源数据包的截图,将就着看吧)

    3. 代码如下,修改填入你自己的参数

      import requests
      from requests.api import head
      import yagmail
      
      
      def eMail(email_to, email_title, email_content):
          # 邮件用户
          mail_user = '你的邮箱'
          # 授权码
          mail_key = '授权码'
          # smtp服务器
          mail_host = 'smtp.qq.com'
          try:
              mail_server = yagmail.SMTP(
                  user=mail_user, password=mail_key, host=mail_host)
              mail_server.send(email_to, email_title,
                               email_content, attachments=None)
              mail_server.close()
              return True
          except Exception as e:
              print(e)
              return False
      
      
      def DoDetail(json):
          # 输入打卡信息
          data = json
          # 添加打卡信息
          data['address'] = '根据左边的变量名,去数据包找相同的参数'
          # 填写Tokan信息
          data['uuToken'] = '同上'
          # 填写Userid
          data['loginUserId'] = '同上'
          # 填写学校id
          data['loginSchoolCode'] = '同上'
          # 填写学校名称
          data['loginSchoolName'] = '同上'
          # 填写体温信息
          data['temperature'] = '36.3'
          # 填写打卡地址
          data['longitudeAndLatitude'] = '同上'
          # 填写打卡地址
          data['locationInfo'] = '同上'
          requests.packages.urllib3.disable_warnings()
          # 请求易校园接口
          response = requests.post(
              "https://h5.xiaofubao.com/marketing/health/doDetail", headers=headers, data=data, verify=False)
          return response.json()
      
      
      # 获取userid
      def GetDetail(userid):
          data1 = {'userId': userid}
          requests.packages.urllib3.disable_warnings()
          response = requests.post(
              "https://h5.xiaofubao.com/marketing/health/getDetail", headers=headers, data=data1, verify=False)
          return response.json()
      
      
      # 伪造请求头
      if __name__ == '__main__':
          headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/98.0.4758.101 Mobile Safari/537.36 Html5Plus/1.0 (Immersed/34.909092) ZJYXYwebviewbroswer ZJYXYAndroid tourCustomer /yunmaapp.NET/2.5.9/c9dcace70d408476',
                     'Cookie': 'shiroJID=be09980c-ace6-4350-ba63-38f441029802'}
          # 填写Userid
          json = GetDetail('填写你的Userid')
          if(json['success'] == True):
              json = DoDetail(json['data'])
              print(json)
          if(json['success'] == True):
              eMail(email_to='填写你的邮箱',
                    email_title='健康打卡成功!', email_content=str(json))
              print('成功')
          else:
              eMail(email_to='jenchoi413@qq.com',
                    email_title='健康打卡失败!', email_content=str(json))
              print('失败')
      
      1. 调试代码没问题之后,把代码挂到云服务器上,设置定时任务即可

    来源:slipperJ

    物联沃分享整理
    物联沃-IOTWORD物联网 » python实现易校园自动打卡教程

    发表回复