• 今日校园提交签到和查寝-Java实现


    2020年10月29日,今日校园闲得蛋疼,改了接口,文章中部分接口失效,最新接口点击下面源码链接,获取

    之前未开学之前,是信息表采集,开学之后,改成了循环签到和查寝,那就想着再写个脚本

    站在巨人的肩膀上,所以该代码全部开源,我也借鉴的大佬的东西,放在第三节致谢。有问题可以在下面进行留言讨论!

    博客地址

    一、自动每日签到

    源码

    1.1 思路

    1. 抓包(抓包的流程,可以参照我之前的文章
    2. 每日接口获取最新表单
    3. 通过上步的id获取详细表单
    4. 通过上步获取该表单的选项id

    如果整体的思路看不明白,可以参照下面的详细步骤

    1.1 获取最新表单

    接口

    /wec-counselor-sign-apps/stu/sign/getStuSignInfosInOneDay
    

    参数

    {}
    

    返回值

    {
    	"code": "0",
    	"message": "SUCCESS",
    	"datas": {
    		"dayInMonth": "2020-09-10",
    		"codeRcvdTasks": [],
    		"signedTasks": [],
    		"unSignedTasks": [{
    			"stuSignWid": "746210",
    			"signInstanceWid": "4146", //需要
    			"signWid": "514213", //需要
    			"signRate": "1",
    			"taskType": "4",
    			"taskName": "一日三签(早签到)",
    			"senderUserName": "牛逼学院(牛逼老师)",
    			"signStatus": "2",
    			"isMalposition": null,
    			"isLeave": "0",
    			"leavePcUrl": null,
    			"leaveMobileUrl": null,
    			"currentTime": "2020-09-10 08:15",
    			"singleTaskBeginTime": null,
    			"singleTaskEndTime": null,
    			"rateSignDate": "2020-09-10 (周四)",
    			"rateTaskBeginTime": "05:00",
    			"rateTaskEndTime": "09:59"
    		}, {
    			"stuSignWid": "759720",
    			"signInstanceWid": "4199",
    			"signWid": "514234",
    			"signRate": "1",
    			"taskType": "4",
    			"taskName": "一日三签(午签到)",
    			"senderUserName": "牛逼学院(牛逼老师)",
    			"signStatus": "2",
    			"isMalposition": null,
    			"isLeave": "0",
    			"leavePcUrl": null,
    			"leaveMobileUrl": null,
    			"currentTime": "2020-09-10 08:15",
    			"singleTaskBeginTime": null,
    			"singleTaskEndTime": null,
    			"rateSignDate": "2020-09-10 (周四)",
    			"rateTaskBeginTime": "10:00",
    			"rateTaskEndTime": "15:59"
    		}, {
    			"stuSignWid": "778325",
    			"signInstanceWid": "4266",
    			"signWid": "535128",
    			"signRate": "1",
    			"taskType": "4",
    			"taskName": "一日三签(晚签到)",
    			"senderUserName": "牛逼学院(牛逼老师)",
    			"signStatus": "2",
    			"isMalposition": null,
    			"isLeave": "0",
    			"leavePcUrl": null,
    			"leaveMobileUrl": null,
    			"currentTime": "2020-09-10 08:15",
    			"singleTaskBeginTime": null,
    			"singleTaskEndTime": null,
    			"rateSignDate": "2020-09-10 (周四)",
    			"rateTaskBeginTime": "16:00",
    			"rateTaskEndTime": "22:00"
    		}],
    		"leaveTasks": []
    	}
    }
    

    其中我们需要获取signWid514213和signInstanceWid4146

    1.2 获取详细信息

    接口

    /wec-counselor-sign-apps/stu/sign/detailSignInstance
    

    参数

    {
      "signWid" : 514213,
      "signInstanceWid" : 4146
    }
    

    返回值

    {
      "message" : "SUCCESS",
      "datas" : {
        "latitude" : "",
        "singleTaskEndTime" : null,
        "catQrUrl" : "https://cat.cpdaily.com/erweima",
        "singleTaskBeginTime" : null,
        "signInstanceWid" : "4146",
        "signPhotoUrl" : null,
        "signTime" : null,
        "senderUserName" : "牛逼学院(牛逼老师)",
        "qrCodeRcvdUsers" : [
          {
            "targetWid" : "91457111",
            "targetType" : "4",
            "targetName" : "牛逼老师/19070302",
            "targetGrade" : "-1",
            "targetDegree" : "-1",
            "targetUserType" : "-1"
          }
        ],
        "isNeedExtra" : 1,
        "signCondition" : 0,
        "currentTime" : "2020-09-10 09:33:08",
        "taskDesc" : "https://wecres.cpdaily.com/counselor/1018615876819107/content/54e503639d0244049c3b85baabe509fc.html",
        "signType" : null,
        "changeActorName" : "牛逼老师",
        "isMalposition" : 0,
        "longitude" : "",
        "signedStuInfo" : {
          "cls" : "20200521",
          "major" : "改变世界专业-牛逼",
          "dept" : "牛逼学院",
          "sex" : "男",
          "mobile" : null,
          "nation" : "-",
          "userWid" : "1017790009",
          "userId" : "20200521",
          "userName" : "雷军",
          "malposition" : null,
          "extraFieldItemVos" : [
            {
              "fieldIndex" : 0,
              "extraDesc" : "",
              "extraFieldItemWid" : "",
              "extraTitle" : "体温",
              "extraFieldItem" : null,
              "isExtraFieldOtherItem" : "0",
              "isAbnormal" : "0"
            },
            {
              "fieldIndex" : 0,
              "extraDesc" : "",
              "extraFieldItemWid" : "",
              "extraTitle" : "身体是否异常",
              "extraFieldItem" : null,
              "isExtraFieldOtherItem" : "0",
              "isAbnormal" : "0"
            }
          ],
          "schoolStatus" : null,
          "stuDormitoryVo" : {
            "sex" : "",
            "area" : "",
            "building" : "",
            "unit" : "",
            "room" : ""
          },
          "grade" : "2019级"
        },
        "extraFieldItemVos" : [
    
        ],
        "changeTime" : null,
        "taskType" : "4",
        "photograph" : [
    
        ],
        "signRate" : "1",
        "isPhoto" : 0,
        "signAddress" : null,
        "rateTaskEndTime" : "09:59",
        "taskName" : "一日三签(早签到)",
        "leaveAppUrl" : "/wec-counselor-leave-apps/leave/home/index.html",
        "isAllowUpdate" : false,
        "signMode" : 0,
        "rateTaskBeginTime" : "05:00",
        "signStatus" : "2",
        "signPlaceSelected" : [
          {
            "address" : "只有野鸡学校才用这个流氓app(北界王西区)",
            "radius" : 520,
            "longitude" : "125.398185",
            "placeWid" : null,
            "creatorUserWid" : null,
            "creatorName" : null,
            "wid" : null,
            "latitude" : "44.001709",
            "currentStatus" : null,
            "isShare" : null,
            "creatorUserId" : null
          },
          {
            "address" : "只有野鸡学校才用这个流氓app(北界王东区)",
            "radius" : 500,
            "longitude" : "125.40993457956229",
            "placeWid" : null,
            "creatorUserWid" : null,
            "creatorName" : null,
            "wid" : null,
            "latitude" : "44.00262969203334",
            "currentStatus" : null,
            "isShare" : null,
            "creatorUserId" : null
          },
          {
            "address" : "只有野鸡学校才用这个流氓app(南界王校区)",
            "radius" : 400,
            "longitude" : "125.296568",
            "placeWid" : null,
            "creatorUserWid" : null,
            "creatorName" : null,
            "wid" : null,
            "latitude" : "43.859918",
            "currentStatus" : null,
            "isShare" : null,
            "creatorUserId" : null
          }
        ],
        "rateSignDate" : "2020-09-10 (周四)",
        "extraField" : [
          {
            "hasOtherItems" : 0,
            "title" : "体温",
            "extraFieldItems" : [
              {
                "isSelected" : null,
                "value" : null,
                "content" : "37.3度以下",
                "isOtherItems" : 0,
                "wid" : 499882,//获取
                "isAbnormal" : false
              },
              {
                "isSelected" : null,
                "value" : null,
                "content" : "37.3度及以上",
                "isOtherItems" : 0,
                "wid" : 499883,
                "isAbnormal" : true
              }
            ],
            "description" : "",
            "wid" : 211814
          },
          {
            "hasOtherItems" : 1,
            "title" : "身体是否异常",
            "extraFieldItems" : [
              {
                "isSelected" : null,
                "value" : null,
                "content" : "健康",
                "isOtherItems" : 0,
                "wid" : 499884,//获取
                "isAbnormal" : false
              },
              {
                "isSelected" : null,
                "value" : null,
                "content" : "感冒",
                "isOtherItems" : 0,
                "wid" : 499885,
                "isAbnormal" : false
              },
              {
                "isSelected" : null,
                "value" : null,
                "content" : "发烧",
                "isOtherItems" : 0,
                "wid" : 499886,
                "isAbnormal" : false
              },
              {
                "isSelected" : null,
                "value" : null,
                "content" : "咳嗽",
                "isOtherItems" : 0,
                "wid" : 499887,
                "isAbnormal" : false
              },
              {
                "isSelected" : null,
                "value" : null,
                "content" : "其它",
                "isOtherItems" : 1,
                "wid" : 499888,
                "isAbnormal" : false
              }
            ],
            "description" : "",
            "wid" : 211815
          }
        ],
        "downloadUrl" : "https://img.cpdaily.com/ldy/index.html"
      },
      "code" : "0"
    }
    

    获取我需要的两个参数,体温选项499882和身体是否异常选项499884

    1.3 模拟提交

    最后通过上面步骤获取到的4146,499882,499884以及自定义的地址,进行签到

    接口

    /wec-counselor-sign-apps/stu/sign/submitSign
    

    参数

    {
    	"abnormalReason": "",
    	"position": "你的地址",
    	"longitude": 你的经度,
    	"isNeedExtra": 1,
    	"latitude": 你的纬度,
    	"isMalposition": 0,
    	"extraFieldItems": [{
    			"extraFieldItemWid": 499882,
    			"extraFieldItemValue": "37.3度以下"
    		},
    		{
    			"extraFieldItemWid": 499884,
    			"extraFieldItemValue": "健康"
    		}
    	],
    	"signInstanceWid": "4146",
    	"signPhotoUrl": ""
    }
    

    返回值

    {
      "message" : "SUCCESS",
      "datas" : {
        "signedStuInfo" : null,
        "signInstanceWid" : "4146"
      },
      "code" : "0"
    }
    

    1.4 运行结果

    二、自动每日查寝

    源码

    2.1 思路

    1. 抓包(抓包的流程,可以参照我之前的文章
    2. 每日接口获取最新表单
    3. 通过上步的id获取详细表单
    4. 通过上步获取该表单的选项id

    2.2 接口

    获取最新查寝

    /wec-counselor-attendance-apps/student/attendance/getStuAttendacesInOneDay
    

    获取详细查寝

    /wec-counselor-attendance-apps/student/attendance/detailSignInstance
    

    提交查寝

    /wec-counselor-attendance-apps/student/attendance/submitSign
    

    2.3 随机图片

    今日校园的图片,是存储到了阿里云。当然,你也可以尝试用代码实现自动往阿里云提交,但是我还是觉得太麻烦,就放弃了。

    提交查寝时的参数

    {
    	"signInstanceWid": "null",
    	"longitude": "null",
    	"latitude": "null",
    	"isMalposition": "null",
    	"abnormalReason": "null",
    	"signPhotoUrl": "null", //这个地方的图片链接,其实也可以放你自己服务器的图片链接,然后随机即可。
    	"position": "null",
    	"qrUuid": "null"
    }
    

    三、获取今日校园阿里云oss账号

    3.1 前言

    10月22日,学校换了新的签到,要拍照。

    在提交今日校园照片的时候,无意间抓包到一系列数据,然后,看了阿里云oss的文档之后,顿时明白了许多。

    终于知道为啥好多人挤破头颅都要去阿里了。

    阿里,就是牛逼,就连上传的所有可能用到的比较人性化的功能(比方说上传进度条功能),都给整完了。

    就连我这种菜鸡,都能拿来就可以用。

    我曾经听过某大佬说,真正的开发者,写的代码,不仅条理清楚,还通俗易懂。这用来形容阿里再合适不过了。

    这是不是就是真正的宗师境界呢?

    原谅我太过激动,这也更让我坚定了,要努力学习,进大厂的愿望

    3.2 正题

    今日校园获取阿里云OSS的接口

    /wec-counselor-sign-apps/stu/sign/getStsAccess
    

    请求头中携带自己的cookie

    获取如下信息,然后用id、secret、token,再结合阿里开源

    {
      "code": "0",
      "datas": {
        "accessKeyId": "STS.NV47ZBrGJfjlsj97t7VKWepMJvc",
        "accessKeySecret": "6ZdSLF6T3JPCbQgqd3mTcqzbEh987829gksCaFxsdxdYK",
        "securityToken": "CAIShAN1q6Ft5B2yfSjIr5WBfOD2n5hrgfufR235nFYeW+pcoo/dgTz228gnsibhnhsPw1m2xT6/cTlr0qEsIVGxybMpcutsoGqFP5JtKZ4pQdXmbqNdv3d1KIAjvXgeUFCoeQFaEME5XAQlTAkTAJK9KYERypQ12iN7CQlJdjda55dwKkbD1AdtU0Qwx5s501OGf2P/SgOQKI523LFxhQpxZbg2Fy4rjdusqH8UjygVn31uIyrYb8KYTGCs53J8VbUsyp5OVsarGjoClL8Epj/qBskIlZ/SvGptiHH2RJ5xKPP4iz9cZ0fit4fbQdEaxJp+Tn774a3NbejIPq0R1AEPhIWiDEPuCazdDDBfmiO6ReF9PyMG+f1cuUZNun8VFmQwpCbV4aJYp+dSMuUUJ9E2GCEML9pgCWODXEYrOezaQ73aByy1jV5teQLzCNOe7Ejn5HasRtNx1wbUFKhjGwI7V1eghNYk5hAK2OUYJwYRZRpKXlpwTOUTd6yXVarykzhQceaE91GoABUp6SSSSKU/bJ1rJtD536UCvZcYvsdl9eaDRwkSdFJhLlmd/jC6wpk1NUdqkDbRCs87xwfPZrdfL6AJXRxN0bXIR79q4M9s7tlqes+5iCDaXwsk5/MhIRE+asN6AM9YzOjlu2uftrxyvUsVqMbkBz8QCF+KrdLnSzvTQr1K+LdJQu003d",
        "expiration": "2020-10-22T14:53:12Z",
        "endPoint": "oss-cn-hangzhou.aliyuncs.com",
        "bucket": "wecloud-res",
        "fileName": "counselor/101820526o268269/content/2085lksj2jgwjoihggsljh.png"
      },
      "message": "SUCCESS"
    }
    

    此处我也遇到了很多问题,比方说有token经常报错不对,那就继续抓包,在上传照片的请求体重,会获得x-oss-security-token

    再将token换成x-oss-security-token即可登录今日校园oss,当然,这并不是永久有效的,但是依然有最高权限,比方说删除之类~

    注意:

    不要乱删除内容哦~

    附张成功登录oss之后的图

    四、致谢

    1. ZimoLoveShuang
  • 相关阅读:
    How can I pretty-print JSON in python?
    怎样取出cobbler kopts中设置的参数?
    提问的智慧
    mysql中binary相加的问题
    sql之left join、right join、inner join的区别
    js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)
    python setup.py uninstall
    Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    idea中的插件,可以快速将类中的属性转换成Json字符串
    上传照片时候,可以通过配置文件和写配置类,实现控制上传文件的大小
  • 原文地址:https://www.cnblogs.com/meethigher/p/13646776.html
Copyright © 2020-2023  润新知