{"id":16974648,"url":"https://github.com/windrunnermax/shst","last_synced_at":"2025-07-04T01:35:50.926Z","repository":{"id":53565334,"uuid":"165610651","full_name":"WindRunnerMax/SHST","owner":"WindRunnerMax","description":"强智教务API \u0026 山科小站","archived":false,"fork":false,"pushed_at":"2024-04-27T12:05:02.000Z","size":10038,"stargazers_count":153,"open_issues_count":1,"forks_count":25,"subscribers_count":6,"default_branch":"dev","last_synced_at":"2024-10-15T01:07:23.569Z","etag":null,"topics":["api","java","php","python","uniapp","vue"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WindRunnerMax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-14T06:52:49.000Z","updated_at":"2024-09-11T05:07:39.000Z","dependencies_parsed_at":"2024-02-27T15:31:25.882Z","dependency_job_id":"ecbb81f8-3f9f-4e66-bed2-d7bb8d5ec3e0","html_url":"https://github.com/WindRunnerMax/SHST","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindRunnerMax%2FSHST","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindRunnerMax%2FSHST/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindRunnerMax%2FSHST/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindRunnerMax%2FSHST/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WindRunnerMax","download_url":"https://codeload.github.com/WindRunnerMax/SHST/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230400616,"owners_count":18219831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","java","php","python","uniapp","vue"],"created_at":"2024-10-14T01:07:23.883Z","updated_at":"2024-12-19T08:08:38.781Z","avatar_url":"https://github.com/WindRunnerMax.png","language":"Java","readme":"# SHST\r\n\r\n\u003cp\u003e\r\n\u003ca href=\"https://github.com/WindrunnerMax/SHST\"\u003eGitHub\u003c/a\u003e\r\n\u003cspan\u003e｜\u003c/span\u003e\r\n\u003ca href=\"https://cdn.jsdelivr.net/gh/SHST-SDUST/SHST-UNI/src/vector/resources/exhibition/shst-wx.jpg\"\u003eOnline\u003c/a\u003e\r\n\u003cspan\u003e｜\u003c/span\u003e\r\n\u003ca href=\"https://juejin.cn/post/7341805821527113747#heading-1\"\u003eBLOG\u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n山科小站，山东科技大学校园服务平台，提供教务系统、图书馆、校园导航等服务，拥有比较丰富的生态产品：\r\n\r\n\u003ctable\u003e\r\n\u003cthead\u003e\r\n\r\n\u003ctr\u003e\r\n\u003cth width=\"150px\" \u003e项目地址\u003c/th\u003e\r\n\u003cth\u003e简介\u003c/th\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003c/thead\u003e\r\n\u003ctbody\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"./Python/\"\u003eSHST/Python\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e\u003ccode\u003ePython\u003c/code\u003e版本的\u003ccode\u003eAPI\u003c/code\u003e。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"./PHP/\"\u003eSHST/PHP\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e\u003ccode\u003ePHP\u003c/code\u003e版本的\u003ccode\u003eAPI\u003c/code\u003e。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"./Java/\"\u003eSHST/Java\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e\u003ccode\u003eJava\u003c/code\u003e版本的\u003ccode\u003eAPI\u003c/code\u003e。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"https://github.com/SHST-SDUST/SHST-UNI\"\u003eSHST-UNI\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e山科小站小程序版本，山东科技大学校园服务平台，已上线微信小程序与\u003ccode\u003eQQ\u003c/code\u003e小程序。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"https://github.com/SHST-SDUST/SHST-PLUS\"\u003eSHST-PLUS\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e山科小站小程序\u003ccode\u003ePlus\u003c/code\u003e版本，作为小程序\u003ccode\u003eAPI\u003c/code\u003e的补充，纯爬虫解析\u003ccode\u003eHTML\u003c/code\u003e版本，已上线微信小程序。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"https://github.com/SHST-SDUST/SHST-UNI-NEXT\"\u003eSHST-NEXT\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e山科小站小程序\u003ccode\u003eNext\u003c/code\u003e版本，提供山科小站与小站\u003ccode\u003ePlus\u003c/code\u003e组合最新版本，已上线微信小程序。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"https://github.com/SHST-SDUST/SHST-WEL\"\u003eSHST-WEL\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e山科小站迎新专版小程序，提供校内的相关信息迎新专用，已上线微信小程序与\u003ccode\u003eQQ\u003c/code\u003e小程序。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"https://github.com/SHST-SDUST/SHST-WEX\"\u003eSHST-WEX\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e山科小站\u003ccode\u003eAPP\u003c/code\u003e版本，提供\u003ccode\u003eNVUE/WEEX\u003c/code\u003e版本的原生渲染\u003ccode\u003eAPP\u003c/code\u003e，已上架酷安应用市场。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003ctr\u003e\r\n\u003ctd\u003e\u003ca href=\"https://github.com/SHST-SDUST/SHST-ULTRA\"\u003eSHST-ULTRA\u003c/a\u003e\u003c/td\u003e\r\n\u003ctd\u003e山科小站小程序\u003ccode\u003eUltra\u003c/code\u003e版本，纯小程序端请求与解析数据，无需服务器中转，已上线微信小程序。\u003c/td\u003e\r\n\u003c/tr\u003e\r\n\r\n\u003c/tbody\u003e\r\n\u003c/table\u003e\r\n\r\n\r\n\r\n## API \r\n\r\n### Python\r\n\r\n```python\r\n# Python/SW.py\r\n\r\n# 配置信息\r\naccount = \"\"                              # 账号\r\npassword = \"\"                             # 密码\r\nurl = \"http://jwgl.sdust.edu.cn/app.do\"   # ${学校教务系统}/app.do\r\n\r\n# 代码末尾注释的方法 取消注释测试执行\r\nQ.get_student_info()                      # 获取学生信息\r\nQ.get_current_time()                      # 获取学年信息\r\nQ.get_class_info()                        # 当前周次课表\r\nQ.get_class_info(3)                       # 指定周次课表\r\nQ.get_classroom_info(\"0102\")              # 空教室查询 \"allday\"：全天 \"am\"：上午 \"pm\"：下午 \"night\"：晚上 \"0102\":1.2节空教室 \"0304\":3.4节空教室\r\nQ.get_grade_info(\"2018-2019-1\")           # 成绩查询 # 无参数查询全部成绩\r\nQ.get_exam_info()                         # 获取考试信息\r\n```\r\n\r\n### PHP\r\n```php\r\n// PHP/Main.php\r\n\r\n// 配置信息\r\n$accountSW = \"\";                            // 账号\r\n$passwordSW = \"\";                           // 密码\r\n$urlSW = \"http://jwgl.sdust.edu.cn/app.do\"; // ${学校教务系统}/app.do\r\n\r\n// 代码末尾注释的方法 取消注释测试执行\r\n$Q -\u003e getStudentInfo();                     // 获取学生信息\r\n$Q -\u003e getCurrentTime();                     // 获取学年信息\r\n$Q -\u003e getTable();                           // 当前周次课表\r\n$Q -\u003e getTable(3);                          // 指定周次课表\r\n$Q -\u003e getGrade(\"2018-2019-2\");              // 成绩查询 // 无参数查询全部成绩\r\n$Q -\u003e getClassroom(\"0102\");                 // 空教室查询 \"allday\"：全天 \"am\"：上午 \"pm\"：下午 \"night\"：晚上 \"0102\":1.2节空教室 \"0304\":3.4节空教室\r\n$Q -\u003e getExam();                            // 获取考试信息\r\n```\r\n\r\n### Java\r\n```java\r\n// Java/MainSw.java\r\n\r\n// 配置信息\r\nprivate String account = \"\";                            // 账号\r\nprivate String password = \"\";                           // 密码\r\nprivate String url = \"http://jwgl.sdust.edu.cn/app.do\"; // ${学校教务系统}/app.do\r\n\r\n// 代码末尾注释的方法 取消注释测试执行\r\nQ.getStudentInfo().exec();                              // 获取学生信息\r\nQ.getCurrentTime().exec();                              // 获取学年信息\r\nQ.getTable().exec();                                    // 当前周次课表\r\nQ.getTable().setWeek(\"3\").exec();                       // 指定周次课表\r\nQ.getGrade().exec();                                    // 查询全部成绩\r\nQ.getGrade().setTerm(\"2018-2019-2\").exec();             // 查询指定学期成绩\r\nQ.getClassroom(\"0102\").exec();                          // 空教室查询 \"allday\"：全天 \"am\"：上午 \"pm\"：下午 \"night\"：晚上 \"0102\":1.2节空教室 \"0304\":3.4节空教室\r\nQ.getExamInfo().exec();                                 // 获取考试信息\r\n```\r\n\r\n### Notice\r\n\r\n1. 由于强智版本不尽相同，返回的数据字段会有所差别，例如我们学校返回的是`flag`字段标记登陆成功，而有学校会返回`success`字段标记登录成功。\r\n2. 数据接口全部抓取智校园`App`而来，可以使用`Fiddler`等抓包工具自行尝试抓包，注意安卓`7`及以上不会认同用户自定义证书，可以使用`root`将证书安装为系统证书或使用其他的辅助工具尝试抓包。\r\n3. 虽然数据接口由智校园`App`得来，但这并不意味着只有学校支持智校园才能使用数据接口，强智教务系统的接口一般是默认开放的，当然系统管理员可以手动关闭，而智校园的使用是需要强智公司授权的，也就是说虽然学校不能用智校园，但是完全有可能开放接口。\r\n4. 目前发现有的教务系统不能直接查询全部成绩，这个接口的使用请自行验证，按学期查询成绩的接口使用目前并未发现问题。\r\n5. 如果接口无法使用，可以尝试直接识别验证码爬取教务系统，验证码识别请参阅`https://github.com/WindrunnerMax/SWVerifyCode`仓库，提供了使用`Python、PHP、Java、JavaScript`识别验证码的示例\r\n6. 对于请求的`URL`，是直接使用`protocol://hostname[:port]/app.do`，并不是教师学生端的`URL`再拼接`app.do`，具体可以访问`http://app.qzdatasoft.com:9876/qzkjapp/phone/provinceData`查阅，此外有些使用`ASPX`的强智系统的开放接口为`${URL}/app/app.ashx`。\r\n\r\n  \r\n## 山科小站\r\n\r\n![山科小站宣传图](https://cdn.jsdelivr.net/gh/SHST-SDUST/SHST-UNI/src/vector/resources/exhibition/show.jpg)\r\n\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindrunnermax%2Fshst","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwindrunnermax%2Fshst","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindrunnermax%2Fshst/lists"}