htmlunit 模拟登陆 验证码如何解决

问题描述

我用htmlunit做一个网站模拟登陆程序,但是,遇到有需要输入验证码的就登陆不上去了,请问怎么获得验证码,然后和用户名、密码一块post。提示:有的网页不需要验证码的,我试过可以登陆上去

解决方案

解决方案二:
据我所知,验证码就是防机器人的坐等高人出现。。
解决方案三:
我这纯属工作需求,绝对不是干非法的事,暂时还没有这个能力,呵呵!没有高手指点吗?我现在的思路是:让程序执行一半终止,通过返回登陆页面的html源码去查找验证码,然后手动输入验证码,然后程序继续执行。不知道我的思路可行否,如果可行请高手给予指点,应该怎样才能让程序执行一半时停止?
解决方案四:
我也遇到这样的问题。。坐等
解决方案五:
我遇到的问题是先需要把验证码拿回去,放到客户端,等待用户输入用户名,密码,然后我传入用户名和密码,验证码,还有sissionId,这个sessionId是在获取验证码的时候拿到的,但是不知道为什么,居然也是验证码错误。。楼上的问题:如果你只是想实现登录进去,可以借助Swing,将验证码图片显示在你的屏幕上,然后给一个参数,输入验证码,再让程序继续就行。网上有很多的。
解决方案六:
先用模拟浏览器获取到验证码图片,并在界面上显示出来。然后在界面上输入用户名、密码、验证码,然后用获取验证码的模拟浏览器发送登录请求,应该是可以能成功登录的。
解决方案七:
引用5楼wangcomputer2010的回复:

先用模拟浏览器获取到验证码图片,并在界面上显示出来。然后在界面上输入用户名、密码、验证码,然后用获取验证码的模拟浏览器发送登录请求,应该是可以能成功登录的。

正解先save到本地然后找到验证码图片摆到输入界面上今天下午正好在做这个
解决方案八:
之前有人问过相似的问题。验证码的本质就是为了防止机器人这类操作的。现在有专门研究验证码破解算法的。比较简单的方法就是在你一次请求中把验证码保存下来,然后手动输入,最后一起提交你的数据。这样其实和手动输入没什么区别。
解决方案九:
还要注意的是,验证码的请求不能请求第二次,不然你提交就不成功了!
解决方案十:
htmlunit爬取网页没弄过,用过jsoup抓取过验证码。不知道对你有帮助没。Stringimage="";Stringcode="";try{URLconnect=newURL("http://60.190.2.101/web/ValidateCode.aspx?type=ValidateCodeCMCX&t=2012/11/23");URLConnectionconnection=connect.openConnection();connection.setDoOutput(true);InputStreaminput=connection.getInputStream();Map<String,List<String>>headerMap=connection.getHeaderFields();if(headerMap!=null&&headerMap.containsKey("Set-Cookie")){//content.setHttpHeadMap(headerMap);for(Stringtmp:headerMap.get("Set-Cookie")){if(tmp.indexOf("ASP.NET_SessionId")!=-1){out.println(tmp.split(";")[0].split("=")[1]);code=tmp.split(";")[0].split("=")[1];}}}image=request.getSession().getServletContext().getRealPath("")+"/wap/hw/peace/code/image.jpg";Filefile=newFile(image);//创建一个输出流OutputStreamout1=newBufferedOutputStream(newFileOutputStream(file));//每次的写入大小为:intlength=1024*1024;byte[]a=newbyte[length];//如果大小大于length继续循环,否则值为-1while((length=input.read(a))>0){out1.write(a,0,length);}//别忘了关闭流input.close();out1.close();}catch(Exceptione){out.println(e.getMessage());}finally{}Connectionconn=Jsoup.connect("http://60.190.2.101/web/SearchNameForm.aspx");Connectionconn1=Jsoup.connect("http://60.190.2.101/web/ValidateCode.aspx?type=ValidateCodeCMCX&t=2012/11/23");Documentdoc=conn.ignoreContentType(true).get();
解决方案十一:
引用6楼doufugan321的回复:

Quote: 引用5楼wangcomputer2010的回复:
先用模拟浏览器获取到验证码图片,并在界面上显示出来。然后在界面上输入用户名、密码、验证码,然后用获取验证码的模拟浏览器发送登录请求,应该是可以能成功登录的。

正解先save到本地然后找到验证码图片摆到输入界面上今天下午正好在做这个

第一步获取验证码是一个webclient,第二部展示到客户端界面,用户输入,这个时候你的webclient应该是已经关闭了,那么第三步传入验证码,还有用户信息再用一个webclient,就登陆不上去了,这个就是其实验证码请求了两次的问题,请问你是怎么解决的呢
解决方案十二:
楼主不知道你的问题解决了没有,我现在也正琢磨着呢,我是一个webclient依次访问两个地址,一个是网页,网页通过一个Servlet获取验证码图片,另一个应该是服务器验证的代码,我现在是访问第一个页面下载验证码图片到本地,然后把手动输入后再用这个webclient提交给服务器,这两次应该不会获取两次验证码吧,而且我看过验证码的图片并没有变,可是还是提示验证码错误。。。。

时间: 2024-09-21 10:43:48

htmlunit 模拟登陆 验证码如何解决的相关文章

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

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

php对于带有验证码的模拟登陆

问题描述 php对于带有验证码的模拟登陆 学校网站:http://jwgl.nchu.edu.cn/(A(dwUI5Kdz0AEkAAAAODAzYTNmOTctOTA3ZS00NmJiLThhZDYtMzc2Nzg2N2IwZGM5vaYo34BuUWwDjV7-QS6aq6Rx5RA1))/ischool.aspx#求大神分析一下,解决不了啊!试了好久. 解决方案 前段时间研究过你们学校的教务系统,关于验证码.不知道凌展的是不是也可以绕过(方正的某些是可以绕过的)具体我也忘了.如果不能绕过只

当模拟登陆遇到验证码

前言 环境 实施 简易示例 实战校园图书馆登录 效果演示 总结 前言 这两天在看相关于模拟登录的案例,不可避免的遇到了一些验证码相关的问题,在此之前一直使用的是将验证码下载到本地,然后人工肉眼识别的方式.但是效果可想而知,精确度倒是还可以,然而却变得不是很智能了.于是今天来学习一下如何自动识别验证码. 环境 我的实验环境为: Python3.6 Pycharm2016.2 Professional Tesseract-OCR-3.0 Windows 10 64位 在开始之前确保安装了tesser

验证码-用php模拟登陆方正教务系统的问题

问题描述 用php模拟登陆方正教务系统的问题 获取验证码 <?php header('Content-Type:image/png');$authcode_url=""http://jwxt1.cumt.edu.cn/CheckCode.aspx"";$cookieFile=""cookie.tmp"";$ch = curl_init($authcode_url);curl_setopt($chCURLOPT_COOKI

模拟登陆问题, input 标签里没有value 如何处理 ,常见的模拟登陆问题我可以解决

问题描述 模拟登陆问题, input 标签里没有value 如何处理 ,常见的模拟登陆问题我可以解决 模拟登陆问题, input 标签里没有value 如何处理 ,常见的模拟登陆问题我可以解决 比如 有的input 标签里没有value属性,我该怎么处理,求大神帮助 解决方案 input标签里没有value,那么登录的时候请求里面是否包含了这个input标签的值?如果有, 那说明页面通过js脚本动态给它赋值了.模拟的时候直接给这个input赋值就可以了. 解决方案二: 用fiddler拦截浏览器

java-用JAVA HttpClient模拟登陆网站时登陆成功后网站重定向,请问一下 怎么解决???谢谢拉

问题描述 用JAVA HttpClient模拟登陆网站时登陆成功后网站重定向,请问一下 怎么解决???谢谢拉 我觉得最有问题的地方就是我没有触发这个js事件 js的部分代码如下 通过这个JS代码我猜测YAHOO.util.Connect.asyncRequest('xxx','XXX', callback, null) 和我直接通过get和post请求服务器 服务器处理的话会有些许不同 . 并且我通过post请求登陆后 服务器返回了我 这代表登陆成功了 可是 当请求成功后 转向网站的个人主页的时

验证码-php中如何用curl模拟http头信息进行模拟登陆并获取信息

问题描述 php中如何用curl模拟http头信息进行模拟登陆并获取信息 最好有带 验证码的,不一定要curl 其他也行 不过需要模拟http 信息 这个问题我一直都不太懂 能有个经典的例子参考下吗 解决方案 http://www.helloweba.com/view-blog-253.html 解决方案二: php curl模拟登陆PHP使用curl模拟登陆php使用curl模拟用户登陆

请教下带验证码的网站怎么用php curl模拟登陆呢?

问题描述 请教下带验证码的网站怎么用php curl模拟登陆呢? www.xianbao5.com 这个网站用CURL post登录 谁会能教教我吗? 主要是怎么获取这个网站的验证码?人工输入也可以 我在抓包工具找到了验证码的网址,是 http://www.xianbao5.com/misc.php?mod=seccode&update=11212&idhash=cSB0PJ9T 但是不知道为什么直接在浏览器访问却没有东西! <?php header("content-Ty

python模拟登陆新浪微博,设置登录不需要验证码,代码返回验证码错误

问题描述 python模拟登陆新浪微博,设置登录不需要验证码,代码返回验证码错误 网页登陆不需要验证码 代码返回retcode=2070 验证码输入错误 求大神指点 解决方案 用fiddler调试下,看看是否带上了cookie,新浪是否传给你验证码,如果传了,必须先识别. 解决方案二: http://blog.csdn.net/ta790799213/article/details/44205351http://www.crazyant.net/796.htmlhttp://www.2cto.c