文档章节

使用Asprise-OCR 破解验证码

William
 William
发布于 2010/05/19 13:39
字数 652
阅读 8801
收藏 14
///先去下载个Asprise-OCR压缩包(那三个.dll文件是要破解版的,正版的.bat文件测试是没问题)
//解压,把那三个.dll文件放到JDK\bin目录下,别整到jre下了
//本地验证码识别测试
File file = new File("D:/imgcode.jpg");
BufferedImage image = ImageIO.read(file);
String s = new OCR().recognizeEverything(image);
System.out.println("\n---- 验证码是: ------- \n" + s);


//网络动态验证码测试,无会话(session)无状态测试
String url_ = "http://127.0.0.1:8080/checkcode/image.jpg?aa="+System.currentTimeMillis();
URL url = new URL(url_);
BufferedImage image =ImageIO.read(url.openStream());
File f = new File("D:/a.jpg");//由于效果不佳才先缓存到硬盘上,也可以直接读取数据流
ImageIO.write(image, "jpg", f);
OCR ocr = new OCR();
String s = ocr.recognizeCharacters(ImageIO.read(f));
System.out.println("\n---- 结果: ------- \n" + s);

/*
先解释一下,无状态会话是识别不了验证码的,因为这不是在浏览器环境下,
主要是没有session、cookie等维持客户端与服务器端的连接状态,所以这里要
用到apache下的一个开源项目httpclient,这个是用来模拟浏览器的,
那么先到apache官网上去下载这个东西,那么就可以进行网络环境识别了,
比如说识别注册时候的验证码
*/
public void register() {
		HttpClient client = new HttpClient();//相当于客户端浏览器
		client.getHostConfiguration().setHost("某个网站的host", 80);//比如www.oschina.net 80是端口
		try {
			PostMethod post = new PostMethod("/imgcode.jpg");// 验证码的相对路径
			int statusCode = client.executeMethod(post);
			post.releaseConnection();//释放连接
			if(HttpStatus.SC_OK==statusCode){//状态码200表示请求成功,先发送去请求验证码
				InputStream is = post.getResponseBodyAsStream();
				BufferedImage image = ImageIO.read(is);
				String imgcode = new OCR().recognizeEverything(image);
				
				System.out.println("\n---- 验证码是: ------- \n" + imgcode);
				
				PostMethod post1 = new PostMethod("/register.do?username=sa&password=sa&imgcode="+imgcode);//登陆或注册的提交路径
				statusCode = client.executeMethod(post1);
				post1.releaseConnection();//释放连接
				if(HttpStatus.SC_OK==statusCode){//状态码200表示请求成功,先发送去请求验证码
					System.out.println(post1.getResponseBodyAsString());//简单查看一下打印信息有没有成功的信息
				}
			}
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

开源中国社区的验证码有底纹有可能识别不了(主要是本人没测试),但是像百度、qq那种是可以识别的,99%的论坛是可以识别的(本人已测试过),另外从这方面也可以看出国外的软件是多么强大,做研究的人多,但是国内的人有时候连运用都运用不好,像验证码这种智能识别技术,在美国是有很多社区的,成果很丰富,当然这个东西也可以识别条形码

本文仅供学习交流参考,请读者不要扰乱网络秩序,谢谢合作

 

 

© 著作权归作者所有

William
粉丝 8
博文 26
码字总数 7874
作品 0
浦东
程序员
私信 提问
加载中

评论(2)

s
safetys
确实过誉了.
勒布朗·詹姆斯
勒布朗·詹姆斯
垃圾软件,只要有线条和干扰色就屌丝了
楼主吹个什么牛皮啊
C# 图片识别(支持21种语言)

图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号。 图片识别的用途:很多人用它去破解网站的验证码,用于达...

王磊的博客
2011/10/08
0
0
eclipse中的classpath文件

转自:http://coffeelet.blog.163.com/blog/static/13515745320107249178730/ eclipse工程中.classpath文件含义: 下面是一个.classpath文件内容: < ?xml version="1.0" encoding="UTF-8"?> ......

村长大神
2014/06/27
116
0
网页的验证码的字母为什么总是那么难辨认

欢迎访问网易云社区,了解更多网易技术产品运营经验。 首先来谈谈验证码的机制,验证码作为一种人机识别手段,其终极目的,就是区分正常人和机器的操作。而对于没有验证码的场景,比如用户登...

网易云
2018/11/28
0
0
Python破解验证码技术,识别率高达百分之八十!

本文将具体介绍如何利用Python的图像处理模块pillow和OCR模块pytesseract来识别上述验证码(数字加字母)。 我们识别上述验证码的算法过程如下: 将原图像进行灰度处理,转化为灰度图像; 获...

妄心xyx
03/09
0
0
谁能破了我的验证码?

不考虑OCR技术,服务器被入侵,加密算法被破解这三种情况, 我把验证码加密后存放到Cookie中,谁有什么办法可以破解掉?

wartskcaj
2011/10/14
1K
17

没有更多内容

加载失败,请刷新页面

加载更多

可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
13分钟前
2
0
网络七层模型与TCP/UDP

为了使全球范围内不同的计算机厂家能够相互之间能够比较协调的进行通信,这个时候就有必要建立一种全球范围内的通用协议,以规范各个厂家之间的通信接口,这就是网络七层模型的由来。本文首先...

爱宝贝丶
16分钟前
2
0
Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
34分钟前
8
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
49分钟前
7
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
今天
534
9

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部