Android实现模拟登陆正方系统查成绩

本文介绍如何在Android中模拟登陆正方教务系统获取成绩。讲解了需要的前置知识,如http协议、抓包、Java网络请求、Jsoup和OkHttp。详细解释了登陆过程中所需的数据字段,并提供了相关链接的分析。最后,提到了在查询成绩时遇到的bug和解决思路。
摘要由CSDN通过智能技术生成

Android实现模拟登陆正方系统查成绩


相信有很多小伙伴的学校在使用的都是正方系统作为教务系统,在平时我们会图方便利用各种微信公众号、超级课程表之类的东西查成绩,今天就跟大家示范一下如何自己编码模拟登陆正方系统并获得我们需要的信息。

本次教程需要备有如下知识:了解http协议、抓包、Java网络请求的写法、解析html页面的开源库Jsoup、以及方便网络操作的OkHttp(这个如果不熟悉可以用Android原生的HttpUrlConnection,但这里推荐使用OkHttp,因为写起来确实很方便啊,哈哈哈哈)

好,话不多说,马上开始!!!

以我们学习的教务系统为例子,通常我们访问的链接如下:

http://210.38.162.117

然后正方系统就会很诡异将我们访问的链接变成如下形式:

http://210.38.162.117/(sxaiuuqeeivmbu555ha1bd55)/default2.aspx

中间有着24个随机的字符:iwpzdwm0xckdu055dwq5jb45

在这个了地方我纠结了很久,我本以为需要先通过访问

http://210.38.162.117

再获得变化后的

http://210.38.162.117/(sxaiuuqeeivmbu555ha1bd55)/default2.aspx

,然后再次发起链接,但经过多次实验后发现,特么这24个随机字符其实是可以固定写死的Orz,可就是说我们一开始就可以通过访问第二条链接实现登陆。

String loginUrl = "http://210.38.162.117/(sxaiuuqeeivmbu555ha1bd55)/default2.aspx";

现在我们就要通过抓包的形式获得登陆时浏览器向服务器提供的数据,怎么抓包可以详情百度,这里简单地说一下,通常现在的浏览器都自带了抓包功能(个人喜欢用UC浏览器哈哈)

在浏览器中右键->审查元素(不同浏览器可能名字不同)

抓包页面如图所示,不同浏览器的抓包功能也不一,有的好有的坏。

在登陆前先打开审查元素功能,输入用户名、密码后登陆

登陆后,点击那个default2.aspx会看到旁边的一些请求头、回复头、表单数据。(看不懂的童鞋赶紧去恶补一下Http协议吧)

__VIEWSTATE:dDwyODE2NTM0OTg7Oz4EdrhGRK2tAP2OLlvKpVtfzXS17g%3D%3D
txtUserName:131110142
TextBox2:******
txtSecretCode:
RadioButtonList1:%D1%A7%C9%FA
Button1:
lbLanguage:
hidPdrs:
hidsc:

这个就是我们表单的数据,实际上我们在向服务器发送请求时,只需要传过去这些数据就行了,

__VIEWSTATE 是一个固定的字符串,是可以写死的。(不同学校的系统不知会不会有所变化)

txtUserName 是学号

TextBox2 是密码,这里被我打了马赛克哈哈哈

txtSecretCode 是验证码

RadioButtonList1 后面那个字符串是学生,在提交的时候经过了Url编码

剩下的几个字段默认都是空,也不必在意它是什么了。

知道了访问所需要的字段,现在开始编码,还是用简单快速的OkHttp。

String loginUrl = "http://210.38.162.117/(sxaiuuqeeivmbu555ha1bd55)/default2.aspx";

public void login() throws UnsupportedEncodingException {
    //构建表单数据
    FormEncodingBuilder builder = new FormEncodingBuilder();
    builder.add("__VIEWSTATE", "dDwyODE2NTM0OTg7Oz4EdrhGRK2tAP2OLlvKpVtfzXS17g==");
    builder.add("txtUserName", "131110142");
    builder.add("TextBox2", "******");
    builder.add("txtSecretCode", "");
    builder.add("lbLanguage", "");
    builder.add("RadioButtonList1",
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值