前言:我们学习过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
欢迎下载!

Android模拟登录教务处(带验证码)相关推荐

  1. 新浪微博模拟登录分析(含验证码)

    实验室项目结题需要爬取新浪微博的内容做实验,师兄提供了一份已实现的微博爬虫系统.本身可以轻松愉快的完成语聊收集这一部分,然而自己的微博账号始终登录失败.究其原因,结果是登录时需要验证码.而系统对于需要 ...

  2. android模拟登陆,Android模拟登录V2EX

    最近在撸一个V2EX的客户端,官方API缺少一些功能如登录,发帖等,撸完官方API总觉得少了什么,本篇文章主要通过模拟登录实现一些官方没提供API的功能 观察登录传输的数据 在网页上登录帐号,通过ch ...

  3. 登录页面带验证码html,使用H5+css3+js实现带验证码的登录页面

    使用H5+css3+js实现带验证码的登录页面 发布时间:2020-10-28 19:51:18 来源:亿速云 阅读:151 作者:Leah 本篇文章为大家展示了使用H5+css3+js实现带验证码的 ...

  4. java登录代码带验证码实现_两种方法实现带验证码的用户登录

    带验证码的登录效果图 登录成功时,记录用户名和访问次数 登录失败,弹出错误提示 方法一:应用request对象获取表单数据实现登录操作 代码结构: index.jsp源码及详解: 当表单被提交时,数据 ...

  5. 基于正方系统的抢课软件教程系列一模拟登录3之验证码识别

    在上一篇可以进入系统后,我们发现我们还要输入验证码这是多么让人可恶的一件事呀!有时我们选课时就是在登录的这个门口进不行,那从何说起去选课页面呀!因此我们迫切要一种方法直接通过我们的帐号密码就可以选课! ...

  6. 使用eclipse开发javaweb登录功能带验证码文件下载第几位登录使用servlet编写html

    这个代码在我的资源中我有上传.如果需要可以前往下载 https://download.csdn.net/download/qq_41946557/11622045 当然也可以留言分享与你,共同进步 具 ...

  7. Bootstrap登录页面带验证码

    Bootstrap有自定义的验证码样式,在前端页面可以直接使用,他的css.js在使用前要在开头引入 上代码: <!DOCTYPE html> <html> <head& ...

  8. selenium 模拟登录 突破图片验证码(豆瓣网)

    from selenium import webdriver import time import requests from lxml import etree import base64# 请求浏 ...

  9. python---post请求数据包,正常模拟登录,图片验证码未自动化,phtesseract

    python-post请求数据包 可以正常访问网页地址 http://192.168.40.239/binzcms1/index.php 用户登录成功的post请求数据包信息: 1.获取最新的验证码 ...

最新文章

  1. SAP SD 常用表
  2. app.listen(3000)与app是不一样的
  3. Microsoft月度中文速递
  4. 使用PerfView监测.NET程序性能(三):分组
  5. Apache Camel 3.1 –更多骆驼核心优化(第2部分)
  6. vue 学习笔记—路由篇
  7. scala初学之函数定义、流程控制、异常处理入门
  8. Spring Boot文档阅读笔记-构建SOAP的web Service服务
  9. mysql 查看密码_Ubuntu安装和配置MySQL数据库
  10. selenium windows 下面环境搭建(安装JDK)
  11. 用phpcms如何将静态页面制作成企业网站(上)
  12. linux麒麟安装磁盘分区,一种中标麒麟系统根分区扩容的实现方法技术方案
  13. 常用ajax调用方法,web前端之4种常用的Ajax请求方式
  14. CS5211/eDP转LVDS转换器方案设计电路图
  15. mysql建数据库实例_MySQL数据库基础(四)——MySQL数据库创建实例
  16. HDFS HA机制 及 Secondary NameNode详解
  17. java程序的结构与类型实验报告_20172301 《Java软件结构与数据结构》实验三报告...
  18. 竞价推广过程中最难的问题是什么?
  19. XShell下载安装并连接阿里云
  20. 不要随便借出你的帐号

热门文章

  1. 15.12.1 美化的秒表
  2. 全网最全!!Qt实现图片旋转及图片旋转动画的几种方式
  3. 来CSDN的第一次正式自我介绍
  4. Unity 欢乐球球
  5. 机器学习的明天——迁移学习
  6. 使用华为云会议的总结【华为云至简致远】
  7. 最快解决硬盘死锁|逻辑锁的方法
  8. qt 汉字转拼音、简拼
  9. 对计科核心课程的关系的总结
  10. Android Studio+OpenCV 识别身份证号码---识别身份证号码