热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android模拟登录教务处(带验证码)

前言:我们学习过Android之后,总想写出一两个属于自己的应用,作为学生,可能我们最想尝试的就是实现一个Android版教务处,可以查成绩,学分,绩点,课表,还有学校新闻这样的a

前言:我们学习过Android之后,总想写出一两个属于自己的应用,作为学生,可能我们最想尝试的就是实现一个Android版教务处,可以查成绩,学分,绩点,课表,还有学校新闻这样的app吧。下面我们开始尝试!
2017 4.14 记:我打算将本应用当成系列博客来讲,敬请期待(ps:大家可以先熟悉下bmob后端云,融云及时通讯)


github地址:https://github.com/SharkChao/Tyut
欢迎下载!





要想从Android中登录教务处,目前有两种实现办法

1. 通过app嵌入webview来实现
2. 通过Android模拟登录来实现

对于第一种方法,可能只是简单的输入网址到webview中,从屏幕适配,用户体验各方面可能达不到我们的要求,所以接下来我主要讲解Android模拟登录教务处


先来一张示例图(知道我是哪个学校了吧)
这里写图片描述


一般而言,学校的教务处都会带有验证码,那么我们怎么获取这个验证码,并把验证码,账号,密码 一同发给学校的服务器呢?

我认为需要需要以下三个步骤:


1. 先访问学校教务处的登录页面,我们会拿到一个COOKIE,这个COOKIE至关重要。
2. 因为验证码这张图片也是从网址中获取的,所以我们应该拿着第一步中的COOKIE去访问验证码的网址,会拿到一张验证码图片。
3. 我们将验证码,账号,密码输入以后,需要拿着第一步中的COOKIE去访问登录页面。
4. (3.2号更新)后来我测试发现,可以省略第一步,直接先访问验证码图片网址,也是可以拿到一个COOKIE,带着这个COOKIE访问登录页面,也是可以的啊!

下面我们开始正式实现。

首先我们需要的工具是火狐浏览器,还有火狐浏览器插件firebug
下载后如图所示:
这里写图片描述

1.那么我们先使用firebug模拟一遍整个登录流程(原理)
先访问学校网站,如下图。
这里写图片描述
我们会发现一个现象,当所有界面元素都刷新出来以后,验证码的图片是最后才粗来的,我们有理由相信整个页面的展现流程是这样的:


1. 浏览器通过网址先访问学校服务器,服务器返回一个页面给我们,同时返回一个COOKIE给我们(这个COOKIE很重要!)
2. 我们拿着这个COOKIE去访问验证码图片的网址,服务器会给我们返回一个验证码图片(这个COOKIE就保证了我们的验证码,同 账号密码是在一个网页上)
3. 我们输入账号,密码,验证码。登录教务处,通过判断学校服务器给我们返回的html来判断是否登陆成功(这里就需要用到jsoup这个库来解析html)


2.原理解释清楚,我们就可以动手来实现模拟登录的功能了(过程)。
那就用我们学校来做个例子吧

(1)访问学校教务处网址,我们会拿到COOKIE
这里写图片描述
(2)我们看看验证码图片的网址是什么,在模拟的时候我们需要用第一步拿到的COOKIE去访问验证码网址,拿到一个图片。
这里写图片描述
(3)我们输入账号密码,还有验证码去访问教务处,拿到服务器返回给我们的html源码,我们就可以判断是否登陆成功了!(通过jsoup来解析html,通过标题我们就可以判断是否成功了!)
这里写图片描述

3.代码实现
我使用的是dagger2+retrofit+rxjava+mvp 来实现的。
当然对于一些没用过这些库的同学来讲,可以使用Android原生的httpclient来实现。代码我有时间会贴出来,有问题可以在博客底下留言,大家一块分享进步哈!
github地址:https://github.com/SharkChao/Tyut
欢迎下载!


推荐阅读
  • JSCoverage-->JavaScript测试覆盖率检测工具(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 凡客诚品官方网站的前端改进建议
    打开http:www.vancl.com发现采用的Asp.net,这点我感到很欣慰,毕竟国内采用.net技术体系的优秀网站少之又少。好奇之余右键-查看源 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • fiddler_Fiddler的原理和基本介绍
    一,Fiddler的工作原理   1,Fiddler是位于客户端和服务器端的HTTP ... [详细]
  • JavaScript与DOM(上)——也适用于新手 – 深入理解JavaScript系列 23
    本文是《JavaScript深度解析》系列文章第23篇(共51篇)文档对象模 ... [详细]
author-avatar
ryan__bug
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有