Android模拟登录教务处(带验证码)
前言:我们学习过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模拟登录教务处(带验证码)相关推荐
- 新浪微博模拟登录分析(含验证码)
实验室项目结题需要爬取新浪微博的内容做实验,师兄提供了一份已实现的微博爬虫系统.本身可以轻松愉快的完成语聊收集这一部分,然而自己的微博账号始终登录失败.究其原因,结果是登录时需要验证码.而系统对于需要 ...
- android模拟登陆,Android模拟登录V2EX
最近在撸一个V2EX的客户端,官方API缺少一些功能如登录,发帖等,撸完官方API总觉得少了什么,本篇文章主要通过模拟登录实现一些官方没提供API的功能 观察登录传输的数据 在网页上登录帐号,通过ch ...
- 登录页面带验证码html,使用H5+css3+js实现带验证码的登录页面
使用H5+css3+js实现带验证码的登录页面 发布时间:2020-10-28 19:51:18 来源:亿速云 阅读:151 作者:Leah 本篇文章为大家展示了使用H5+css3+js实现带验证码的 ...
- java登录代码带验证码实现_两种方法实现带验证码的用户登录
带验证码的登录效果图 登录成功时,记录用户名和访问次数 登录失败,弹出错误提示 方法一:应用request对象获取表单数据实现登录操作 代码结构: index.jsp源码及详解: 当表单被提交时,数据 ...
- 基于正方系统的抢课软件教程系列一模拟登录3之验证码识别
在上一篇可以进入系统后,我们发现我们还要输入验证码这是多么让人可恶的一件事呀!有时我们选课时就是在登录的这个门口进不行,那从何说起去选课页面呀!因此我们迫切要一种方法直接通过我们的帐号密码就可以选课! ...
- 使用eclipse开发javaweb登录功能带验证码文件下载第几位登录使用servlet编写html
这个代码在我的资源中我有上传.如果需要可以前往下载 https://download.csdn.net/download/qq_41946557/11622045 当然也可以留言分享与你,共同进步 具 ...
- Bootstrap登录页面带验证码
Bootstrap有自定义的验证码样式,在前端页面可以直接使用,他的css.js在使用前要在开头引入 上代码: <!DOCTYPE html> <html> <head& ...
- selenium 模拟登录 突破图片验证码(豆瓣网)
from selenium import webdriver import time import requests from lxml import etree import base64# 请求浏 ...
- python---post请求数据包,正常模拟登录,图片验证码未自动化,phtesseract
python-post请求数据包 可以正常访问网页地址 http://192.168.40.239/binzcms1/index.php 用户登录成功的post请求数据包信息: 1.获取最新的验证码 ...
最新文章
- SAP SD 常用表
- app.listen(3000)与app是不一样的
- Microsoft月度中文速递
- 使用PerfView监测.NET程序性能(三):分组
- Apache Camel 3.1 –更多骆驼核心优化(第2部分)
- vue 学习笔记—路由篇
- scala初学之函数定义、流程控制、异常处理入门
- Spring Boot文档阅读笔记-构建SOAP的web Service服务
- mysql 查看密码_Ubuntu安装和配置MySQL数据库
- selenium windows 下面环境搭建(安装JDK)
- 用phpcms如何将静态页面制作成企业网站(上)
- linux麒麟安装磁盘分区,一种中标麒麟系统根分区扩容的实现方法技术方案
- 常用ajax调用方法,web前端之4种常用的Ajax请求方式
- CS5211/eDP转LVDS转换器方案设计电路图
- mysql建数据库实例_MySQL数据库基础(四)——MySQL数据库创建实例
- HDFS HA机制 及 Secondary NameNode详解
- java程序的结构与类型实验报告_20172301 《Java软件结构与数据结构》实验三报告...
- 竞价推广过程中最难的问题是什么?
- XShell下载安装并连接阿里云
- 不要随便借出你的帐号