首先获取验证码并保存Cookie,登陆时将Cookie和账号密码一同发送出去,返回状态码200,登陆成功,接下来再去访问其他需要登录权限的页面时附上Cookie发送出去即可。

要实现模拟登陆,首先需要了解登陆网站时请求中都包含什么信息,需要用到的工具是[url=]HttpWatch[/url],这是抓包需要的工具,然后还有一个jar包,叫[url=]Jsoup[/url],这是用来解析网页HTML代码的。其次要用到抓取网页的类HttpClient。

要登录的网站为http://city.dlut.edu.cn/
登陆页面为http://cityjw.dlut.edu.cn:7001/ACTIONLOGON.APPPROCESS

通过[url=]HttpWatch[/url]可以看到

POST的数据为账号 密码 验证码 和两个无关的坐标数据

查看Cookies选项可以查看到Cookie

现在我们已经知道了我们POST的数据是什么,接下来便可以开工敲代码了。

首先获得验证码 [mw_shl_code=java,true]public Bitmap getcode() throws Exception {
HttpPost httpPost = new HttpPost("http://cityjw.dlut.edu.cn:7001/ACTIONVALIDATERANDOMPICTURE.APPPROCESS");
HttpResponse httpResponse = client.execute(httpPost);
COOKIE = ((AbstractHttpClient) client).getCookieStore().getCookies().get(0).getValue();
byte[] bytes = EntityUtils.toByteArray(httpResponse.getEntity());
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
return bitmap;
}[/mw_shl_code]
然后将Cookie和账号密码一同加入到请求,发送给网站服务器
[mw_shl_code=java,true]public String login(String name, String psw, String code) {
                 HttpResponse httpResponse;
                 String uriAPI = "http://cityjw.dlut.edu.cn:7001/ACTIONLOGON.APPPROCESS";
                /* 建立HTTP Post连线 */
                 HttpPost httpRequest = new HttpPost(uriAPI);
                 List<NameValuePair> params = new ArrayList<NameValuePair>();
                 
                String result = null;
                params.add(new BasicNameValuePair("Agnomen", code));
                params.add(new BasicNameValuePair("Password", psw));
                params.add(new BasicNameValuePair("submit.x", "25"));
                params.add(new BasicNameValuePair("submit.y", "6"));
                params.add(new BasicNameValuePair("WebUserNO", name));

httpRequest.setHeader("Cookie", "JSESSIONID=" + COOKIE);

try {
                        // 发出HTTP request
                        httpRequest.setEntity(new UrlEncodedFormEntity(params, "GBK"));
                        // 取得HTTP response
                        httpResponse = client.execute(httpRequest); // 执行
                        // 若状态码为200 ok
                        if (httpResponse.getStatusLine().getStatusCode() == 200) { // 返回值正常
                                StringBuffer sb = new StringBuffer();
                                HttpEntity entity = httpResponse.getEntity();
                                String content = EntityUtils.toString(entity);
                                InputStream is = entity.getContent();
                                BufferedReader br = new BufferedReader(new InputStreamReader(is, "GBK"));
                                String data = "";
                                while ((data = br.readLine()) != null) {
                                        sb.append(data);
                                }
                                result = sb.toString(); // 此时result中就是登陆后的页面的HTML的源代码了
                        } else {
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return result;
        }[/mw_shl_code]
该方法返回的字符串为登陆后的页面源码
提取页面有用信息可以使用Jsoup,正则表达式也可以,不过相对麻烦一点

Android模拟登陆带验证码的网站客户端相关推荐

  1. python-selenium模拟登陆(滑动验证码)

    python-selenium模拟登陆(滑动验证码) 普通滑动验证码验证 只需要我们将滑块拖动指定位置,处理起来比较简单.拖动之前需要先将滚动条滚动到指定元素位置,但是需要注意目标网站对seleniu ...

  2. 使用C#登录带验证码的网站

    我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法. 验证码的由来 几年前,大部分网站.论坛之类的是没有验 ...

  3. 爬虫模拟登陆手机验证码_Python+scrapy爬虫之模拟登陆

    一.126,163邮箱模拟登陆 # -*- coding:utf-8 -*-import timefrom selenium import webdriverdef login126_or_163em ...

  4. 爬虫模拟登陆手机验证码_爬虫入门到精通-headers的详细讲解(模拟登录知乎)...

    本文章属于爬虫入门到精通系统教程第七讲 直接开始案例吧. 本次我们实现如何模拟登陆知乎. 1.抓包 1. 首先打开知乎登录页 知乎 - 与世界分享你的知识.经验和见解 注意打开开发者工具后点击&quo ...

  5. 使用python-requests爬虫模拟登陆中国海洋大学教务处网站

    python的第三方库Requests是一个简单而且实用的网络爬虫库,今天,我将为大家演示如何通过requests爬虫实现模拟登录中国海洋大学教务处网站. 程序流程: 1.引入需要的外部库. impo ...

  6. Android利用Jsoup解析html 开发网站客户端小记。

    这些天业余时间比较多,闲来无事,想起了以前看过开发任意网站客户端的一篇文章,就是利用jsoup解析网站网页,通过标签获取想要的内容.好了废话不多说,用到的工具为 jsoup-1.7.2.jar包,具体 ...

  7. python 模拟登录验证码_Python模拟登陆 —— 征服验证码 3 CSDN

    CSDN使用了spring的webflow 这个隐藏参数可以理解成每个需要登录的用户都有一个流水号.只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程.否则,没有流 ...

  8. 使用PKav HTTP Fuzzer 爆破带验证码的网站

    首先需要下载PKav HTTP Fuzzer ,地址如下: 链接:https://pan.baidu.com/s/1Ddwcg7CW09hhyEUSugjENg 提取码:fypx 这个PKav HTT ...

  9. python模拟密码有效性检测功能_Python模拟登陆 —— 征服验证码 3 CSDN-阿里云开发者社区...

    CSDN使用了spring的webflow 这个隐藏参数可以理解成每个需要登录的用户都有一个流水号.只有有了webflow发放的有效的流水号,用户才可以说明是已经进入了webflow流程.否则,没有流 ...

最新文章

  1. 内存分配成功,但并未初始化
  2. vue常用语法 渲染数据
  3. 安装 mysql-8.0.23-winx64
  4. SSH框架中不为人知的细节(一)
  5. Vue3 --- vue-router4 编程导航
  6. 重置mariadb密码
  7. 设计模式-观察者模式 发布/订阅模式
  8. 酒水饮料类零售库存管理软件app,哪个简单好用?看看这10款
  9. html5在线留言表单代码,HTML CSS样式用户留言表单代码分享
  10. Object 转int
  11. 计算机英语六级时间,计算机一级考试_6月英语六级报名时间
  12. 电脑维修小知识(我抄的!)
  13. 最新Oracle官网JDK 8.0的下载
  14. 验证码识别逻辑回归案例
  15. 【Python】批量导出word文档中的图片、嵌入式文件
  16. 视觉打标软件 在线视觉打标系统 1.金橙子控制板卡 2.自主研发的定位系统
  17. 2月15日市场游资操作情况以及龙虎榜
  18. 计算机开机界面图片怎么修改,怎么修改Win7开机登录界面壁纸 Win7开机登录界面壁纸修改图文教程...
  19. Docker 大热,还不了解 Dockerfile 你就OUT啦~
  20. 数码照片处理基本技法

热门文章

  1. 《择天记》鹿晗洗髓成功 青藤宴娜扎飞鹤退婚
  2. 12种降维方法终极指南
  3. 0707(003天 结构化编程)
  4. mysql 除去周末_MySQL TimeDiff排除周末
  5. 周末舞会(循环队列)
  6. 468,提莫攻击的两种解决方式
  7. 瘟疫三生命计算与暗吸,绷带使用CD图
  8. Excel数据分析基础(3)-----使用Excel 2019的新函数IFS计算平均值
  9. Excel VBA基础与应用5
  10. Visitor设计模式