长○大学晚签到自动化打卡脚本——“我在长大”

长○大学晚签到自动化打卡脚本——我在长大

前言

由于学校的要求在校学生每天晚上都要使用“我在长大”进行定位打卡进行签到,而打卡小程序的通知推送却经常出现不推送、推送晚之类的BUG,一旦忘记打卡便会面临着要面签、扣德育分的风险,为此笔者很是苦恼。有没有什么办法能每天完成打卡自动化呢?当然有啦,我们接着往下看,如何分析并制作我在长大签到打卡脚本。

准备工作

1.你需要一台能够24小时开机运行的服务器,并且能够运行Docker。

2.你需要基本的计算机网络知识才能看懂相关操作的意义。

3.你需要学会简单的抓包操作以获取你的登录态Cookie,推荐使用reqable或者fiddler工具(在这里面我们要用到的是Cookie中的JWSESSION字段)。

旧版我在校园打卡自动化方式

由于长○大学在2023年更换了新版的签到打卡方式“我在长大”,原来“我在校园”的打卡方式已经不再适用,如果你是其他学校的同学,并且也在寻找“我在校园”类的自动化打卡方式的话,请查看这个Repo获得更多帮助:zhacha222/wozaixiaoyuan: 我在校园 青龙面板 (健康打卡、日检日报、签到、账号检测、报备自动确认返校)理论适用于所有大学 (github.com) 。新版打卡与旧版打卡之间最大的变化是打卡服务器转为了学校私有,而不再由“我在校园”进行服务托管,签到指向的域名也转为了edu.cn结尾的校园域名,而不是wozaixiaoyuan.com 。此次升级还是有一些优点的,那就是打卡的流程更为简单,不再有时间戳校验以及其他防重放攻击的验证,所以要进行自动化签到的话,我们直接抓包然后稍作修改就可以无脑重放了。

抓取并分析打卡过程中发生的网络活动

获取打卡列表

在抓包的记录中,我们需要找到“https://gwwzxy.***.edu.cn/sign/mobile/receive/getMySignLogs?page=1&size=10”这条记录,他返回的数据中包含了我们每一条打卡的详细信息,例如打卡ID,签到日期,学生班级等等,具体响应体即对应含义如下所示。

{
  "code": 0,
  "data": [
    {
      "area": "***", #此处为校区名称,例如“小寨校区”或者“长安校区”,一般不会变动
      "areaId": "1", #区域ID,或许不同校区有不同ID
      "city": "西安市", #签到所在城市,一般不会变动
      "classes": "0101", #你所在的班级,一般不会变动
      "classesId": "1234567890", #你所在班级的班级ID,由系统分配,一般不会变动
      "college": "**学院", #你所在的学院,一般不会变动
      "country": "中国", #国家,一般不会变动
      "createCollege": "**学院", #创建此签到的学院名称
      "createHead": "https://wx.qlogo.cn/mmopen/vi_32/1234", #创建头,暂时不知道有什么用
      "createName": "王小明", #创建签到的人的名字
      "date": 1234567890, #创建签到的时间,为UNIX时间格式
      "degree": "本科", #学历
      "district": "碑林区", #区域范围
      "end": 1234567890, #签到结束时间,为UNIX时间格式
      "head": "https://thirdwx.qlogo.cn/mmopen/vi_32", #签到头,不知道有什么用
      "id": "1234567890", #签到ID,每天签到ID都是不一样的,我们需要提取这个字符串作为变量用于签到
      "isRead": 0,  #是否已读
      "latitude": "34", #签到点的纬度
      "leaderSign": 0, #不知道有什么用
      "longitude": "108", #签到点的经度
      "mode": 2, #签到模式,定位签到还是校区签到
      "name": "王小红", #你的名字
      "number": "12345678", #你的学号
      "phone": "123456789", #你的手机号
      "province": "陕西省", #省份
      "qrCode": 0, #二维码签到
      "readDate": 1234567890, #你打开签到消息并阅读的时间点
      "schoolId": "0", #学校ID,这个可能需要根据每个人的情况提取
      "signContext": "各位同学记得按时签到", #签到人给你留的消息
      "signDay": "20991202", #签到日期,这是以人类能读懂的方式写的日期,比如2099年12月02日
      "signId": "1234567890", #签到ID,每天的都不一样,需要提取
      "signMode": 2, #签到模式
      "signStatus": 2, #签到状态
      "signTitle": "定位签到", #签到方式的标题
      "signUserId": "0", #签到用户ID
      "signUserName": "",  #签到用户名
      "signUserNumber": "", #签到用户号码
      "signUserType": "", #签到用户的类型
      "start": 123456780000, #签到开始时间,UNIX格式
      "street": "求是路", #街道名称
      "targetId": "1234567890", #目标ID
      "targetName": "0101", #目标班级名字
      "targetType": 0, #目标类型
      "teacher": "王小花", #老师名字
      "teacherId": "1234567890", #老师的ID号
      "township": "文艺路街道", #街道名字
      "type": 1, #类型
      "userArea": "校本部", #用户所在区域
      "userId": "1234567890", #用户ID
      "userType": "在校学生", #用户类型
      "year": "2099" #你的入学年份
    }
  ]
}
获取我在长大打卡列表的请求体和响应体

签到时发出的签到请求

通过抓包可以发现,在签到时发出的签到请求头目标URL为:“https://gwwzxy.***.edu.cn/sign/mobile/receive/doSignByArea?id={{id|urlencode}}&schoolId={{schoolId|urlencode}}&signId={{signid|urlencode}}“其中主要用到了“id”,“schoolId”,“signid”三个变量参数,我们需要使用正则表达式来提取相关的参数。对于“signId”正则表达式如下所示

"signId":"(\d+)"

对于“id”,正则表达式如下所示:

","id":"(\d+)"

而“schoolId”基本不会变化,直接填入对应的数字即可,需不需要使用变量存储该值可由读者自行决定。

签到发出的请求体如下所示:

{
	"latitude": 34, #签到时所处的纬度,抓一次正常签到的包就可以获取,需要到小数点后14位
	"longitude": 108, #签到时所处的纬度,抓一次正常签到的包就可以获取,需要到小数点后14位
	"nationcode": "000", #国家代码
	"country": "中国", #国家
	"province": "陕西省", #省份
	"citycode": "12345678", #城市代码
	"city": "西安市", #城市
	"adcode": "123456", #区号代码(?)
	"district": "碑林区", #区划
	"towncode": "12345678", #镇代号
	"township": "文艺路街道", #街道名称
	"streetcode": "123456789012345678", #街道代号
	"street": "求是路", #具体街区名称
	"inArea": 1, #是否在签到区域内,1是在,0是不在。
	"areaJSON": "{\"type\":0,\"circle\":{\"latitude\":\"34\",\"longitude\":\"108\",\"radius\":700},\"id\":\"1\",\"name\":\"校本部\"}" #这里是系统内设定的签到有效区域范围,即在经度34度,纬度108度,辐射半径700内可以正常签上到,出了这个区域便无法签到。
}

签到脚本制作

推荐使用qd-today/qd: QD [v20230821] —— HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server (github.com)项目进行签到,可以极大方便推送和正则提取的设置,读者可以使用Docker方式搭建自己的签到站,具体方式详见:a76yyyy/qiandao – Docker Image | Docker Hub 。签到脚本正在准备中,感兴趣的小伙伴可以留言交流。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇