博主经常错过博学谷的签到被记旷课(委屈巴巴
所以来分析一波博学谷的签到
1. 登录
抓包得到登录请求的url为http://stu.ityxb.com/back/bxg_anon/login
方法是post,带三个参数,登录成功后可以取到cookie
automaticLogon | username | password |
---|---|---|
是否自动登录 | 用户名 | 密码 |
2. 获取课程列表
url为http://stu.ityxb.com/back/bxg/course/getHaveList
在请求头里带上获取到的cookie
pageNumber | pageSize | type |
---|---|---|
页码 | 页面大小(应该是指每页显示多少) | 类型(不明,根据抓出来的写了1) |
返回
{
"code": null,
"errorMessage": null,
"resultObject": {
"items": [
{
"id": "607d7bcd53d94923aab98cead154b06a",
"category_id": null,
"name": "Android移动应用基础教程(Android Studio)(第2版)",
"course_no": null,
"active": true,
"photo": "https://attachment-center.boxuegu.com/data/picture/univ/2019/05/23/14/2ac19a0746b946ab9de0828a53b3a0ff.png",
"vedio": null,
"keyword": null,
"seq": 0,
"brief_introduction": null,
"relation_ids": null,
"create_person": null,
"create_time": null,
"recommend": false,
"url": null,
"is_relation": false,
"resource_url": null,
"page_number": null,
"book_number": null,
"press": null,
"price": null,
"apply_college": null,
"coop_count": 0,
"coopStatus": 0,
"is_new": false,
"outline_url": null,
"is_archive": false,
"totalCount": 3,
"videoNums": 0,
"pptNums": 0,
"questionNums": 0,
"additionalNums": 0,
"pdf_url": null,
"pdf_status": null,
"pdf_name": null,
"sys_course_id": null,
"sampleUrl": null,
"new_notice_status": 1,
"new_resources_status": 1,
"collegeNums": 0
},
{
"id": "286fa422f8c04617ac2bc56d797b3d11",
"category_id": null,
"name": "微信小程序开发实战",
"course_no": null,
"active": true,
"photo": "https://attachment-center.boxuegu.com/data/picture/univ/2019/06/03/13/13de084bf9084a67a1173877e43b9000.jpg",
"vedio": null,
"keyword": null,
"seq": 0,
"brief_introduction": null,
"relation_ids": null,
"create_person": null,
"create_time": null,
"recommend": false,
"url": null,
"is_relation": false,
"resource_url": null,
"page_number": null,
"book_number": null,
"press": null,
"price": null,
"apply_college": null,
"coop_count": 0,
"coopStatus": 0,
"is_new": false,
"outline_url": null,
"is_archive": false,
"totalCount": 0,
"videoNums": 0,
"pptNums": 0,
"questionNums": 0,
"additionalNums": 0,
"pdf_url": null,
"pdf_status": null,
"pdf_name": null,
"sys_course_id": null,
"sampleUrl": null,
"new_notice_status": 1,
"new_resources_status": 1,
"collegeNums": 0
}
],
"totalCount": 2,
"totalPageCount": 1,
"pageSize": 100,
"currentPage": 1
},
"success": true
}
3. 获取签到列表
url为http://stu.ityxb.com/back/bxg/my/sign/conditionList
在请求头里带上获取到的cookie
course_id | pageNumber | pageSize | signName | signType | stuSignStatus |
---|---|---|---|---|---|
课程id | 页码 | 页面大小(同上) | 签到名称(可空) | 签到类型(可空) | 学生签到状态?(不明) |
返回
{
"code": null,
"errorMessage": null,
"resultObject": {
"items": [
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "95b078939739439982c32d9a2a7f61a9",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-04-15 20:18:54",
"signName": "202041520181",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 3356,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-04-15 20:18:06",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "210cf808281e4a99ae38543918f6a998",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-04-15 17:02:35",
"signName": "202041517136",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 1558,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-04-15 17:01:41",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "a57f6a3cc2ee40a483080f407b7b7c91",
"stuSignStatus": 4,
"stuSignStatusName": "旷课",
"stuSignTime": null,
"signName": "202041420730",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 5444,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-04-14 20:07:36",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "54894c6113e34e93a345302627d57d72",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-04-08 17:24:16",
"signName": "202048165011",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 2075,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-04-08 16:50:14",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "72c38a0c4104498ab722a4f4f1aea8ad",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-04-07 20:14:18",
"signName": "202047201343",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 4850,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-04-07 20:13:47",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "4dc756d9ddbb48b3ad4265057404ad61",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-04-01 17:09:36",
"signName": "202041162937",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 6983,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-04-01 16:29:40",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "725221013951477a840b0566b67c6f03",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-31 20:21:43",
"signName": "202033120215",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 8723,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-31 20:21:07",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "f5c4193427434ee98e04099b5b5c4682",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-25 20:20:11",
"signName": "2020325201920",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 3257,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-25 20:19:25",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "f27bcff670c84407a4b2ee4e684515a1",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-25 16:55:03",
"signName": "2020325165143",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 7359,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-25 16:51:55",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "620580f05edb4777a1296af7a22240e6",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-24 20:48:44",
"signName": "20203242084",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 3027,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-24 20:08:08",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "27be8c47d14e46fbadfcfc21a653fc0e",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-18 19:37:22",
"signName": "2020318193657",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 2754,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-18 19:37:01",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "259d2210476d4ec1ad6f7da468188c98",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-18 16:11:37",
"signName": "2020318161112",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 7737,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-18 16:11:13",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "b3462e490ce8497cb32949914b990b7d",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-17 20:15:12",
"signName": "2020317201311",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 4961,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-17 20:13:18",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "6038ee576cdc4f06a366d612cf440b46",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-11 20:23:31",
"signName": "2020311202259",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 2101,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-11 20:23:04",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "0fa42e881a2e417a9bc388a1c525b6b5",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-11 16:10:40",
"signName": "202031116917",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 6360,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-11 16:09:25",
"squadId": "97457868eb234c1fa293988156e7460e"
},
{
"studentId": "cf806fa4104b4ee1a1c76ae921a36843",
"signId": "7e505b327267416690d363f5bf67f89e",
"stuSignStatus": 1,
"stuSignStatusName": "出勤",
"stuSignTime": "2020-03-10 19:37:53",
"signName": "202031019557",
"signType": 2,
"signTypeName": "数字签到",
"signNum": 4165,
"signStatus": 2,
"signStatusName": "已结束",
"signTime": "2020-03-10 19:06:07",
"squadId": "97457868eb234c1fa293988156e7460e"
}
],
"totalCount": 16,
"totalPageCount": 1,
"pageSize": 50,
"currentPage": 1
},
"success": true
}
4. 签到
url为http://stu.ityxb.com/back/bxg/my/sign/number/updateSignStatus
在请求头里带上获取到的cookie
sign_id | sign_num |
---|---|
签到id | 签到密码 |
签到密码可以暴力遍历出来
5. 总结
总的来说要想实现自动签到还是比较简单的
思路就是登录获取到课程列表,然后根据课程列表的课程id再去获取签到列表,判断签到状态,如果签到进行中,就开个线程暴力遍历密码post
博主已经粗略实现了,但还不完美,就不放出来了,有兴趣的小伙伴可以自行实现