关于httpclient处理图片验证码提交的问题
本人之前用httpclient 3做了个自动登录网站的程序,实现的功能为登录网站,并在另一个页面post一个请求,请求时有图片验证码。
登录功能没有问题,在后面的post之前,我先从网站用get方法获取这个最新的验证码图片,然后调用本地程序解析成正确的String,但是提交了之后还是回到这个提交页面。
我用浏览器模拟了一下这些操作,提交成功的话应该是返回302,并转到另一个page。如果是验证码错误,就会返回200,并回到提交的页面,原来的字段输入都会保存在页面上(用的应该是aspx的__VIEWSTATE和__EVENTVALIDATION)但不会提示验证码错误。
就因为网站本身不会提示验证码错误,所以我程序返回200,并回到原来的页面我就无从判断到底是什么原因,因为我在本地程序里看到的验证码的确是解析正确的。
猜测会不会是cookie的问题,但我登录之后,每次操作前都会获取一下cookie,并且在get或者post前,用httpclient再把cookie set回request里,这样跳转页面的话,session还能保持的。
或者是验证码重复刷新的问题,但是我用fiddler看过浏览器的请求过程,它先用get获取那个要提交的页面,然后会自动用get获取那个验证码,再人工点击提交form。我只不过是直接用get获取了那个验证码,然后post提交了那个页面。
也怀疑过是aspx的__VIEWSTATE和__EVENTVALIDATION,在我的post request里有这两个字段的值,每次用浏览器提交,似乎都是不变的,所以我直接写进request了。如果不包括这两个值,那么如果验证码错误的话,返回到提交页面,上面原来部分输入的字段就是空的要重新输入,所以这两个参数应该是用来记录页面信息并还原的。
请有经验的朋友指教指教,如果能解决,立马结贴,谢谢!
登录功能没有问题,在后面的post之前,我先从网站用get方法获取这个最新的验证码图片,然后调用本地程序解析成正确的String,但是提交了之后还是回到这个提交页面。
我用浏览器模拟了一下这些操作,提交成功的话应该是返回302,并转到另一个page。如果是验证码错误,就会返回200,并回到提交的页面,原来的字段输入都会保存在页面上(用的应该是aspx的__VIEWSTATE和__EVENTVALIDATION)但不会提示验证码错误。
就因为网站本身不会提示验证码错误,所以我程序返回200,并回到原来的页面我就无从判断到底是什么原因,因为我在本地程序里看到的验证码的确是解析正确的。
猜测会不会是cookie的问题,但我登录之后,每次操作前都会获取一下cookie,并且在get或者post前,用httpclient再把cookie set回request里,这样跳转页面的话,session还能保持的。
或者是验证码重复刷新的问题,但是我用fiddler看过浏览器的请求过程,它先用get获取那个要提交的页面,然后会自动用get获取那个验证码,再人工点击提交form。我只不过是直接用get获取了那个验证码,然后post提交了那个页面。
也怀疑过是aspx的__VIEWSTATE和__EVENTVALIDATION,在我的post request里有这两个字段的值,每次用浏览器提交,似乎都是不变的,所以我直接写进request了。如果不包括这两个值,那么如果验证码错误的话,返回到提交页面,上面原来部分输入的字段就是空的要重新输入,所以这两个参数应该是用来记录页面信息并还原的。
请有经验的朋友指教指教,如果能解决,立马结贴,谢谢!
...全文
相关推荐
Java模拟get/post登陆(含验证码)
**处理验证码**: 当登录过程中涉及验证码时,问题会变得更复杂。验证码是为了防止自动化程序而设计的,通常需要通过图像识别技术来解决。
HttpClient 抓包实现验证码登陆,网站是教务系统
因为要做一个教务系统的客户端,学校不提交接口,所以需要自己去抓包,然后用Httpclient 实现登陆,比较头疼的是验证码,这里参考很多人的源码和文档终于自己成功登陆了。先是下载httpwatch pro版,然后抓到想要POST登陆信息的网页url,然后就是用代码实现登陆了 比较需要注意的是,POST数据创建的httpclient对象不能再用来用Get方法带着cookie访问登陆后的个人信息页面
用HttpClient类实现查询申通快递的功能
**验证码处理**: - **获取验证码图片**: 通过调用`Image.php`获取验证码图片。
网页和桌面程序验证码
例如,可以使用C#的HttpClient或Java的HttpURLConnection来发送请求获取验证码,然后用图形库(如Java的Swing或C++的Qt)显示验证码图片,并处理用户的输入。
java模拟淘宝登录源码
**处理验证码**:如果淘宝登录需要验证码,我们需要先获取验证码图片,然后可能需要识别它,或者让用户手动输入。验证码的处理可以使用OCR技术或第三方服务来实现。3.


Web 开发
