定制轻量级课程表APP,大学生专属,告别繁琐教务系统,源码可查

2025-02-11
来源:网络整理

实施课程时间表(基于技术学术事务系统)

1。这个小型系统为大学生提供服务。用户可以根据代码在手机上自定义并安装自己的轻质课程应用程序(当然,他们可以将一些修改向网络请求移植到PC或Web平台)。

2.好处:您不再需要下载30至60MB的应用程序,以查看手机上的课程时间表并拥有各种干扰信息。同时,许多学术事务系统只能使用IE登录。这很烦人吗?

3。在这里,我们尝试制作一个简单的课程时间表查询()。当然,这里提到的网络请求很明确,可以实现基于学术事务系统周围领域的更有趣的应用程序。

4。可以在其上查看源代码。如果您有任何疑问,也可以 @ me

目前,学术事务网络的界面发生了变化,现有代码无法直接运行。我将来没有上传最新的代码。现有代码可以用作参考。如果您有任何疑问,请通过电子邮件向我询问。

阅读之前

当然,此登录接口相似

这是该界面的课程时间表界面的直接发布(这是学年的ID,ZC是每周):.do?= 2018-2019-1&ZC = 12

源代码说明

该代码的最终数据表示平台是在分析界面和获取数据期间,它将解释如何在接口上展示它。当然,您也可以根据网络和PC侧进行操作。

该代码仍然不足,将来会更新。我们可以继续关注它:在学期之间灵活切换;验证代码识别。

如果您有任何疑问,请 @我,

代码模块分析1。网络请求

学术事务系统中登录的三个共同元素:帐户,密码和验证代码(提示:某些系统没有验证代码,使其更容易实施;我学校的学术事务系统中有学生和父母选择,因此默认情况下只是设置学生)

有了提到的三个要素,我们可以输入学术事务系统进行各种操作。以下是分析网络请求。

打开浏览器(我们在此处使用浏览器,当然有类似的操作),输入学术事务网络的登录接口,按F12弹出开发人员工具,然后单击学术事务的请求路径名称在最左侧的网络,您可以看到(请求)头)。 (如果您无法通过单击看到任何东西,只需在开发人员工具开放的前提下刷新学术事务网络)。当然,请求标题中最重要的是。

[外部链路图像传输失败,源位点可能具有防盗链路机制。建议保存图像并将其直接上传(img--35)()]

这是登录的唯一标识符。换句话说,登录,保存并使用此(在生存期间)以访问学术事务系统下的任何地址的数据和数据。

在这里,我们可以进行一个小实验来验证这一观点。该实验是可以理解的,并且可以登录到学术事务网络以模拟后续计划也是可以理解的。

假设我的学术事务网络地址是:/jww/,我成功登录并跳到/jww//main.jsp,复制成功登录时使用的值。在浏览器上打开一个新的选项卡页面,然后输入学术事务网络地址: / jww /。目前(通常)没有登录。我们再次打开开发人员工具。这次我们不点击。我们单击,双击该值,然后对其进行修改。这是我们之前登录的值(如下图所示),然后用我们要在登录后要访问的地址的地址栏的地址(例如,登录后跳过的地址)然后按!我们已经登录了学术事务系统并进入了系统!

[外部链接图像被转移给公众失败。源部位可能具有反盗用链路机制。建议保存图像并将其直接上传(img--40)()]

以下是登录学术事务网络的核心代码。

Connection loginConn = Jsoup.connect(loginHomePage); loginConn.cookies(cookies); //login using cookies loginConn.data(reqData); //login parameters Connection.Response loginResponse = loginConn.execute();

注意:库非常简单,在这里使用不多,因此可以通过代码说明易于理解。

这是学术事务网络形式的属性值(在查看源代码时可以看到它),这是要以我们形式提交的URL地址。

如果我们直接查看代码的第四行,请评论三行,然后获取一条,我们可以打印出的内容都是HTML代码,并且根本没有图片。也就是说,我们必须单独请求图像,保存返回请求的图像,然后在登录时使用此图像登录。

现在的想法是:如果我们想登录,我们必须首先请求并下载验证代码图片,在请求图像时获取返回的图像,并使用此图片添加我们根据我们填写的帐户,密码和验证代码对于下载的图像,这些参数已提交到服务器以进行登录。

因此,我们可以完善我们的代码:

//all static for convenience //file request parameters static String personType = "0"; //0-我是学生, 1-我是家长。 很多教务网都没有这个字段,可忽略掉 static String userNumber = "****"; //你的账号 static String password = "****"; //你的密码 static String verifyCode = ""; //验证码默认设置为空,后续通过用户的输入来填充这个值 //登陆请求的地址 final static String loginHomePage = "http://kkk.edu.cn/jww/Logon.do?method=logon"; //验证码请求地址

弄课程表的软件或小程序_课程表小程序开发_课程表开发程序小结怎么写

final static String verifyImgSrcURL = "http://kk.edu.cn/jww/verifycode.servlet"; //验证码保存的桌面位置 final static String verifyImgDestURL = "C:\\Users\\Canliture\\Desktop\\verifyCodeImg.jpg"; //课表的地址 final static String getTableBaseURL = "http://kkk.edu.cn/jww/tkglAction.do?method=goListKbByXs"; //cookie name final static String sessionName = "JSESSIONID"; //cookie value static String sessionValue = ""; //request parameters [personType, username, password, RANDOMCODE] static Map<String, String> reqData = new HashMap<>(); static Map<String, String> cookies = new HashMap<>(); //save cookies // 'reqData' initialization static { reqData.put("personType", personType); // 0 - students or teachers , 1 - parents reqData.put("USERNAME", userNumber); reqData.put("PASSWORD", password); } public static void main(String[] args) throws IOException { //download verifyImg and //get the cookie we getfrom the img //use the cookie everywhere around the site. downloadImgReturnCookie(verifyImgSrcURL, verifyImgDestURL); System.out.println("Download Image Successfully"); //print cookie System.out.println(cookies); //input verifycode System.out.print("Please input your verifyCode: "); verifyCode = new Scanner(System.in).nextLine(); reqData.put("RANDOMCODE", verifyCode); //login using cookie prepared. Connection loginConn = Jsoup.connect(loginHomePage); //login using cookies loginConn.cookies(cookies); //login parameters loginConn.data(reqData); //try to login Connection.Response loginResponse = loginConn.execute(); System.out.println( loginResponse.body() ); //。。。未完,看下面分析 } // download verifyCode image from 'srcUrl' and save to 'dest' at localhost private static void downloadImgReturnCookie(String srcUrl, String dest) throws MalformedURLException, IOException{ //get image using the cookie HttpURLConnection imgConn = (HttpURLConnection) ( new URL(srcUrl) ).openConnection(); //get the cookie String cookie = imgConn.getHeaderField("Set-Cookie"); sessionValue = cookie.substring( cookie.indexOf('=') + 1, cookie.indexOf(';') ); cookies.put( sessionName, sessionValue ); //new input from network( 'imgConn' ) try( BufferedInputStream imgInputStream = new BufferedInputStream( imgConn.getInputStream() ) ){ //new output to local file system try( BufferedOutputStream imgOutputStream = new BufferedOutputStream( new FileOutputStream(dest) ); ){ byte[] buf = new byte[1024]; while( -1 != ( imgInputStream.read(buf) ) ) imgOutputStream.write(buf); } catch(IOException e) { e.printStackTrace(); } } catch(IOException e) { e.printStackTrace(); } }

代码首先称为kie(,);要请求验证代码图片,并将其保存到桌面,同时保存返回的图片。然后使用新的(.in)。()获得用户输入的验证代码(将其下载到桌面后可以易于打开,可以通过肉眼识别)。

最后登录并打印由登录请求返回的HTML源代码。

我们发现,当我们输入错误的验证代码(或错误的帐户或密码)时,打印了登录接口的HTML源代码。当我们成功登录时,返回的内容非常简单:。基于此,我们很容易判断我们是否已成功登录。

以上是网络请求的整个分析过程。

可以在平台上显示更多数据以查看源代码。您还可以查看以下效果图。

分享