模拟教务系统登录过程中的一些总结---至今还未成功模拟登录

1第一次我尝试用java后台来满足这个需求,通过java进行请求官方登陆页面的连接,得到html文本后,通过jsoup进行选择,获取input标签名为__VALUESTATE的标签值,登录所需要的参数1账号,2密码,3验证码,(按钮参数和身份参数经过测试不需要),4_VALUESTATE(这事官方后台检测身份的值),参数都完整了,进行post请求提交参数(期间我通过浏览器前台测试过其实get请求带参数也是可以登录成功的,不过暂时不需要),可是最后的问题是:我没办法模拟出登录环境来,就是系统版本,浏览器版本之类的,只要模拟出这个来,那么java后台的模拟登录就成功了




2我选择另外一条路,通过js+html前台进行实现模拟登录,而不是方案一的通过前台传参后,用后台进行模拟登录,

这样就避免了再去模拟登录环境这一说,那么问题还是来了,其他参数都可以通过用户输入和请求来拿到,但是__VALUESTATE(上文提到过的重要参数),这个参数是后台不定时变化的,需要我动态去获取,于是我用iframe去加载官方的教务系统,并设为不可见,这样前台用户是看不到我的这个iframe,然后通过拿到iframe里面的ducement,在通过标签的name值就可以动态拿到__VALUESTATE这个参数,并赋给自己的页面上的__VALUESTATE,并进行提交,这样登录环境也有了,参数也齐全了-------但是百度后才发现,js为了安全考虑不允许跨域获取iframe里面的内容,也就是说这次却__VALUESTATE这个参数了




3方案一:需要后台java模拟出浏览器环境,系统环境等用户的登录环境参数----感觉太麻烦,还没尝试成功

 方案二:因为js不允许跨域取值,特别是这个域又是不可控的第三方域,所以缺少一个必要的官方的验证值__VALUESTATE

 最后只有选择备选方案:方案三,前台请求一次官方页面并显示出来,由用户去操作登录,登录成功后,就通过固定连接获取相应的课程表,成绩等个人信息,其实倘若还有精力,方案一应该是眼下超级课程表等一系列获取教务系统数据的唯一途径吧,他的重点在于模拟出用户的操作环境等一系列参数上(系统版本,浏览器版本等)------这个没做过,很生疏,估计等请教老师或者其他模拟登录成功的高人们


*********这事关键的最后一步,因为模拟登录成功之后就能进行一切操作,我已经实践过拿到课程表,并通过jsoup结合java原本的api,讲课程表数据写入数据库,并正常使用它,所以还是只差最后一步啊


最后,模拟登录这件事耗费了太多精力,不过从中学得的经验也是超过付出的时间本身的,但是,还是先告一段落吧,铭记那句话copygoodstealgreat,认得精力是有限的,但是可以等待时机去学习已经成功的例子,站在巨人的肩膀上,我今天是第一次理解,也用了一年多了,这次还是这么办,伺机等待高手吧,把有限的精力用在其他转换效率更高的地方吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值