login-htmlunit模拟登录 请高人解答

问题描述

htmlunit模拟登录 请高人解答

使用htmlunit模拟登录的时候 ,首先穿创建了一个webclient 用webclient请求登录页面,同事请求解析验证码,验证码解析正确,然后开始登录系统,一直提示验证码错误。

WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_11);
webClient.getOptions().setJavaScriptEnabled(true);

webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getOptions().setThrowExceptionOnScriptError(false);

webClient .getOptions().setUseInsecureSSL(true);

    WebRequest request1 = new WebRequest(new URL("http://rd2.zhaopin.com/s/loginmgr/login.asp"));
    HtmlPage htmlPage = webClient.getPage(request1);

    //第三步 获取界面元素
    HtmlInput userName = htmlPage.getHtmlElementById("LoginName");
    HtmlInput password = htmlPage.getHtmlElementById("Password");
    HtmlInput checkCode = htmlPage.getHtmlElementById("CheckCode");
    HtmlInput btn = htmlPage.getHtmlElementById("login");

    WebRequest request = new WebRequest(new URL("https://passport.zhaopin.com/checkcode/imgrd"));

    UnexpectedPage imagePage = webClient.getPage(request);
    InputStream in =  imagePage.getWebResponse().getContentAsStream();
    File storeFile = new File("D:/zlzp.png");
    BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(storeFile));
    byte[] buf = new byte[2048];
    int length = in.read(buf);
    while (length != -1) {
        output.write(buf, 0, length);
        length = in.read(buf);
    }
    in.close();
    output.close();
    String valCode = new OCR().recognizeText(new File("D:\zlzp.png"), "png");
    System.out.println(valCode);
    userName.setAttribute("value", "");
    password.setAttribute("value", "");
    checkCode.setAttribute("value", valCode);
    HtmlPage page2 = btn.click();
    System.out.println("nnn");
    System.out.println(page2.asText());

解决方案

http://foxswily.iteye.com/blog/644353

解决方案二:

http://www.cnblogs.com/skillCoding/archive/2011/12/26/2169982.html

时间: 2024-10-27 17:06:38

login-htmlunit模拟登录 请高人解答的相关文章

htmlunit 登录问题-htmlunit模拟登录 验证码错误

问题描述 htmlunit模拟登录 验证码错误 使用htmlunit模拟登录的时候 ,首先穿创建了一个webclient 用webclient请求登录页面,同事请求解析验证码,验证码解析正确,然后开始登录系统,一直提示验证码错误. WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_11); webClient.getOptions().setJavaScriptEnabled(true); webClient

人民币阿拉伯数字转换成大写,然后角与分数字对不上,请高人解答。

问题描述 publicclassmy_simulate{publicstaticString[]chineseDigits=newString[]{"零","一","二","三","四","五","六","七","八","九"};publicstaticStringamountTochinese(double

异步操作同一对象问题,请高人解答~!

问题描述 我写了个异步操作的程序,遇到点问题,也是概念上不太清楚,所以问问大家.异步操作会不会影像全局变量?就是说:有个全局变量stringA有个方法publicvoidsetA()该方法就是操作aa.因为方法很长,很有可能几次过来的异步操作同时在执行setA.问题1:当其中一次异步操作改变A的值会不会影像到其他异步操作?问题2:当A为setA方法内部的变量时,其中一次异步操作改变A的值会不会影像到其他异步操作?最好给出理论性的解释 解决方案 解决方案二:会应该进行同步!!lock(A){set

【CURL】模拟登录网站并获取用户信息

模拟登录网站并获取用户信息 前言 这次来做的是通过代码的方式,模拟登录秒拍官网,获取登录用户的信息. 前后端分离 本文的标题是CURL,传统的网站是PHP代码直接渲染项目视图,通过表单提交到控制器直接进行数据操作. 传统模拟登录的方式在页面上找到表单元素,直接进行模拟表单提交. 近两年前端技术趋于完善,实现了前后端分离. 分析页面元素 秒拍官网地址 http://www.miaopai.com/ 通过审查元素以及源代码查找,在本页面并没有form标签,由此推断页面是通过js进行提交的. 查找提交

php 模拟登录网站并获取用户信息示例

前言 这次来做的是通过代码的方式,模拟登录秒拍官网,获取登录用户的信息. 前后端分离 本文的标题是CURL,传统的网站是PHP代码直接渲染项目视图,通过表单提交到控制器直接进行数据操作. 传统模拟登录的方式在页面上找到表单元素,直接进行模拟表单提交. 近两年前端技术趋于完善,实现了前后端分离. 分析页面元素 秒拍官网地址 http://www.miaopai.com/ 通过审查元素以及源代码查找,在本页面并没有form标签,由此推断页面是通过js进行提交的. 查找提交地址 由于提交的js代码可能

通过Winform模拟post请求和get请求登录网站

引言 最近有朋友问如何用winform模拟post请求,然后登录网站,稍微想了一下,大致就是对http报文的相关信息的封装,然后请求网站登录地址的样子.发现自己的博客中对这部分只是也没总结,就借着这股风,总结一下http报文的相关知识吧. HTTP定义 超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议. 这里对http的具体内容就不再介绍了,主要分析http报文信息

使用htmlunit模拟注册,整个流程走下来都很顺利,只是在最后提交的时候还是失败的,求解答,如下:

问题描述 使用htmlunit模拟注册,整个流程走下来都很顺利,只是在最后提交的时候还是失败的,求解答,如下: 我用htmlunit模拟注册,用户名密码手机都填进去了,获取手机验证码的按钮也能触发也成功的收到验证码短信了,图片验证码也解析正确,但就是在最后提交的时候好像还是没有注册成功,不知道为什么 解决方案 用fiddler调试下,你的模拟和浏览器的提交有什么不同,特别是user agent,cookie,referer等.

请大神给提供个解决思路,关于模拟登录的问题!

问题描述 我先来介绍一下项目:首先要一台服务器有2个IP地址IP1=133.XXX.XXX.XXXIP2=192.XXX.XXX.XXX其中133段为内网段,公司内部都使用这个网络,IP2为一条内部专线,专门负责联系一套管理系统.这套管理系统只能通过IP2来访问,但是只有这一台机器拥有这条线路,并且不允许扩展.IP2的管理系统是需要通过公司派发的统一帐号登录才可以操作,如帐号user,密码user,还包括一个验证码.那么问题来了!问题就是统一派发的帐号只有一个,也就是说如果让IP1段的所有用户都

Android利用爬虫实现模拟登录的实现实例

Android利用爬虫实现模拟登录的实现实例 为了用手机登录校网时不用一遍一遍的输入账号密码,于是决定用爬虫抓取学校登录界面,然后模拟填写本次保存的账号.密码,模拟点击登录按钮.实现过程折腾好几个. 一开始选择的是htmlunit解析登录界面html,在pc上测的能实现,结果在android上运行不起来,因为htmlunit利用了javax中的类实现的解析,android不支持javax,所以就跑不起来. 不过pc还是ok的 实例代码: package com.yasin; import jav