社区
Web 开发
帖子详情
java中通过httpclient下载指定的验证码失败
lonelydreamsym
2011-06-16 06:01:39
如题,地址为:http://www.lyjjzd.com/wfcx.asp,这里面查询时有验证码,在程序中通过httpclient访问这个面页,然后访问页面中的难码,但总是返回空信息,不知道为啥,这种访问访问其它网站的验证码都是正常的,挺让人郁闷的,给瞧瞧如何处理。
...全文
224
12
打赏
收藏
java中通过httpclient下载指定的验证码失败
如题,地址为:http://www.lyjjzd.com/wfcx.asp,这里面查询时有验证码,在程序中通过httpclient访问这个面页,然后访问页面中的难码,但总是返回空信息,不知道为啥,这种访问访问其它网站的验证码都是正常的,挺让人郁闷的,给瞧瞧如何处理。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
checktime
2011-07-01
打赏
举报
回复
之前遇到的问题是,用URL 类能获得 验证码,但是用httpclient时的 getResponseBodyAsStream 返回的时候,转成imageicon 出不来图片,后来发现,用in.avaiable()返回的是空,看解释说,返回0是正常的,然后直接用ByteArrayInputStream 转了一次再用BufferedImage再转一次,然后new ImageIcon 就出来了,还没研究为什么会这样,之前测试jsp时候没有问题,在asp下有这个问题,郁闷啊
xwmr1988
2011-06-17
打赏
举报
回复
大家好哦,路过
lonelydreamsym
2011-06-17
打赏
举报
回复
程序中保持会话的情况下,先访问页面,然后找到页面中的图片的url,再接着访问图片,也是不成的。
lonelydreamsym
2011-06-17
打赏
举报
回复
楼上几位的方法,早都试过了,都搞不定,才来这里开这个帖子的,大家可直接试下,找到url中直接在浏览器中是打不开的。我用java和net都测试过,获取不到图片。
xuejelly
2011-06-17
打赏
举报
回复
[Quote=引用 7 楼 magong 的回复:]
引用 3 楼 lonelydreamsym 的回复:
呵呵,这个是比较奇怪的,找对了url它也不会显示的,偶奇怪的也是这里,目前反复测试,除了直接在页面里能显示,其它各种方式都不显示,让人不是一般的郁闷。
你这样操作肯定可以:
1 用浏览器打开网页
2 浏览页面源码,找到参数,如".24566"之类的
3 将该参数附缀到URL中,可以直接下载到图片(我验证过)
那么你需要在……
[/Quote]
+1
magong
2011-06-17
打赏
举报
回复
[Quote=引用 3 楼 lonelydreamsym 的回复:]
呵呵,这个是比较奇怪的,找对了url它也不会显示的,偶奇怪的也是这里,目前反复测试,除了直接在页面里能显示,其它各种方式都不显示,让人不是一般的郁闷。
[/Quote]
你这样操作肯定可以:
1 用浏览器打开网页
2 浏览页面源码,找到参数,如".24566"之类的
3 将该参数附缀到URL中,可以直接下载到图片(我验证过)
那么你需要在程序中用httpclient模拟这个次序,第一步抓到网页后,从网页中萃取出正确的参数。
Fly_m
2011-06-16
打赏
举报
回复
我刚看一下url界面。
这里面它显示的图片,是根据后面的一个参数确定的。如果你随便给个参数的话,那是显示不了图片的。
我想这个随便数跟session相关。因此,你重新发请求,去读取这个图片,由于session变了,肯定读不了图片了。
因此,在读取图片时,要使用与前一次访问网页地址同样的一个session,否则就取不到图片。并且,访问一次图片变一次,所以不要重复访问(验证码重新生成了)。
小伙
2011-06-16
打赏
举报
回复
HttpAnalyzerStdV6这个工具你用过就最好(抓网页的)
你通过
httpGet= new HttpGet("http://www.lyjjzd.com/wfcx.asp")
httpGet.setHeader("Referer","页面由来的网页"); //有时候可以没有
response=httpclient.execute(httpGet);
String contentString = EntityUtils.toString(response.getEntity());
System.out.println(contentString); //这里面是你请求网址的所有内容;
你需要截取contentString的内容取得图片的href="url内容"
httpGet.abort() 终止httpGet请求
你再发送请求url内容;
httpGet= new HttpGet("http://www.lyjjzd.com/"+url内容) 这里面是你请验证码图片的完整url
File file = new File("C:/Users/guo/workspace/ghn/tesseract/cPic.gif");
response=httpclient.execute(httpGet);
InputStream is = response.getEntity().getContent();
FileOutputStream fos = new FileOutputStream(file);
int len;
byte[] b = new byte[buffer];
while((len=is.read(b,0,1024))!=-1){
fos.write(b,0,len);
}
fos.flush();
is.close();
fos.close();
这样可以保存图片..希望对您有用哦
hymagic
2011-06-16
打赏
举报
回复
学习学习
lonelydreamsym
2011-06-16
打赏
举报
回复
呵呵,这个是比较奇怪的,找对了url它也不会显示的,偶奇怪的也是这里,目前反复测试,除了直接在页面里能显示,其它各种方式都不显示,让人不是一般的郁闷。
magong
2011-06-16
打赏
举报
回复
验证码就是图片而已。
URL找对了就行了。
这个页面中的验证码需要一个URL参数来决定验证码,不是随机生成的,倒是有点奇怪。
lonelydreamsym
2011-06-16
打赏
举报
回复
自己顶下
Java
实现短信
验证码
发送
本文详细介绍如何使用互亿官方提供的
Java
模板实现短信接口,包括注册账号、
下载
接口文档、配置参数及发送短信的完整流程。文章提供了具体的代码示例,展示了如何生成随机
验证码
、设置短信内容并发送。
使用
HttpClient
4.x实现模拟
验证码
登陆
本文详细介绍了在存在
验证码
的情况下,实现网站登录的具体步骤。包括如何通过编程手段获取
验证码
、设置必要的Cookie,以及最终提交登录请求的过程。
示例-
下载
验证码
文件
本文介绍了一种使用
Java
批量
下载
网站
验证码
图片的方法,并通过计算MD5值进行图片内容的去重处理,确保每张图片都是独一无二的。此外,还实现了多线程
下载
以提高效率。
java
模拟有
验证码
的Http登陆
本文介绍如何利用Tesseract识别
验证码
并结合
HttpClient
管理会话,实现自动化登录过程。主要内容包括:设置Eclipse项目引入所需jar包,通过HttpWatch获取
验证码
URL,使用Tesseract识别
验证码
并获取Cookie,然后在登录请求
中
发送数据并同步Cookie,最后验证登录成功与否。
Java
爬虫(七)--
httpClient
进阶: https 和 证书认证(讲故事篇)
本文讲述了作者在使用
Java
爬虫时遇到的HTTPS和证书认证问题,包括错误1(Unsupported record version SSLv2Hello)和错误2(SSLHandshake
失败
)。解决方案涉及强制
指定
SSL协议、
下载
并转换证书、加载信任证书到sslContext。文章以故事形式展开,详细描述了解决过程。
Web 开发
81,110
社区成员
341,727
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章