Archive for the ‘技术’ Category

用djpeg+gocr突破无噪声captcha验证

Tuesday, February 17th, 2009

Captcha验证码是现在很多登陆页面都会使用的一种验证机制,它是一种通过显示一张含有多个随机数字和字母的图片(也可以是音频)要求用户识别的方式,来甄别访问者是人还是机器的方式。很多网站使用的是比较简单的Captcha验证码,只对数字和字母做了颜色变化,但没有做变形处理,没有在图片上加噪声,更没有做数字和字母的虚化或叠加。前几天,我在做一个自动处理工具的时候,就遇到了这样的captcha验证码,很自然的想到用OCR的方法去突破Captcha验证,经过多次尝试之后,发现可以使用djpeg+gocr的方法很方便的实现突破。 首先介绍一下djpeg和gocr这两个工具,它们都是开源软件。 djpeg是一条用来解压jpeg图片 (decompress JPEG) 的Linux命令。任何Linux发行版上应该都有这条命令,如果要在windows下使用,可以去SourceForge下载安装GnuWin32,下载地址是http://sourceforge.net/project/showfiles.php?group_id=23617,如果只是想用djpeg,可以只下载jpeg那一个包,当前的版本是6b-4。 gocr是一个开源的OCR软件,gocr并不是一个功能特别强的开源ocr项目,至少它对有噪声的图片的识别就不太好。gocr也可以在SourceForge上找到,有windows和linux两个版本,目前的版本是0.4.6,下载地址是http://jocr.sourceforge.net/download.html。 通常在网页上看到的captcha验证图片大多是以jpeg格式出现的,而gocr却不支持jpeg文件作为输入,只能接受ppm,pnm等格式的图片,因此需要在使用gocr之前把下载的captcha图片转换成ppm的格式,然后再用gocr去做识别,用以下的命令就可以 djpeg.exe  -ppm -gray -outfile captcha.ppm captcha.jpg gocr046.exe captcha.ppm 我所处理的那个captcha验证图片没有经过变形处理,也没有噪声,djpeg+gocr的成功率几乎是100%。当然,这个方法只对简单的captcha图片有效,我试过处理taobao的captcha图片,还没有成功过。对于有噪声的图片,gocr无法识别pattern的时候,它会提示用户输入对应的字符串,等于是一个模式学习的过程,如果captcha图片的噪声是有规律的话,我想经过一定量的学习之后,djpeg+gocr也是可以处理一些复杂的captcha图片的,不过成功率就会的低很多。

IE “Operation Aborted” 错误以及解决方法

Sunday, February 3rd, 2008

这几天在升级到dojo 1.0.2的过程中遇到了"Operation Aborted"的错误。IE在打开网页的时候,突然弹出一个消息框,告诉你IE"已终止运行",但没有任何的错误信息或是错误代码。在点了确定之后,直接跳转到IE默认的出错页面。 在网上找了一下以后发现,这个问题是由于在IE完成html container载入之前用Javascript调用了innerHTML或者appendChild方法,详细的解释可以看Microsoft Support网站上的一份文档。 对于这个问题的处理,有一个比较简单的方法,就是使用prototype的Event.observe()来封装含有innerHTML或appendChild的代码,例如: Event.observe(window, 'load', function() { ... element.innerHTML = ...; });

OpenSocial: Google推出的社交网站API标准

Sunday, November 4th, 2007

Google在10月底推出了OpenSocial--一个社交网站的API标准集,包含了Profiles,Friends,Activities3类社交网站常用的组件。OpenSocial同时提供了client-side和server-side两种访问方式,在客户端使用JavascriptAPI访问,在server端使用RESTful API。 几天之内,MySpace,LinkedIn等几家知名社交网站都宣布支持OpenSocial。看来社交网站的竞争已经进入标准之争了,可能不久,其他公司会提出新的标准,可能是微软,可能是Facebook,或许是IBM。 IBM也有自己的社交网站产品,Lotus Connections,不过不是面向大众的,而是提供给企业用户的,OpenSocial中的API都能在Connections中找到对应的产品。Connections是选择支持OpenSocial,还是提出自己的标准?

使用TrimBreakpoint来调试Javascript

Thursday, August 23rd, 2007

同事介绍了一个调试Javascript的小工具TrimBreakpoint,是一段server端的Javascript脚本,只要在需要调试的JS里加上一行代码,就可以让网页在执行到那段JS的时候停下来,还能执行你输入的语句。 TrimBreakpoint是Google Code里的Trimpath项目里的一个小tool,可以从它的官方Wiki里找到使用指南。 目前最新的版本是1.0.24, 可以从Trimpath的下载列表中获取,文件名是trimpath-breakpoint-1.0.24.js,下载之后把它放进自己的项目中,然后在web page里把这个js文件引入 <script language="javascript" src="/path/to/trimpath-breakpoint.js"></script> 然后在需要加断点的地方加上如下一行代码,就可以了 breakpoint(function(expr){return eval(expr);}); 每次运行到breakpoint函数的时候,javascript都会弹出一个对话框,可以不断地查询变量或表达式的值,直到点cancel才会继续执行页面上剩下的javascript。

Windows下常用开源软件列表

Wednesday, August 22nd, 2007

浏览了一下,还是比较全的 http://osswin.sourceforge.net/

Connecting to SQL Server 2005 in Websphere Application Server v6.1 using Embedded Connect JDBC Driver

Thursday, July 19th, 2007

The Connect JDBC driver is a Type 4 JDBC driver for high-performance Java database connectivity to all of today's major databases. This article describes how to configure Connect JDBC driver in WAS v6.1 to work with SQL Server 2005. 1. Before you start Before you configure the data source, you need to ...

Connecting to SQL Server 2005 in Websphere Application Server using Microsoft JDBC Driver

Tuesday, July 17th, 2007

This article explains how to configure IBM Websphere Application Server v6.1 to work with Microsoft SQL Server 2005 database using Microsoft SQL Server 2005 JDBC Driver. It assumes that the readers have Websphere v6.1 and SQL Server 2005 installed. Create a Websphere Variable You can add a Websphere Variable which pointing to ...

Install Stored Procedures for JTA when using Websphere embeded DataDirect JDBC driver to connect SQL Server 2005

Thursday, July 12th, 2007

If you are using Websphere Application Server embeded DataDirect JDBC driver to connect to SQL Server 2005. You may need to manually install Stored Procedures for JTA jar file on sql server-side.  Document1: download page This document gives the download links to storage procedures for JTA files needed for using DataDirect JDBC ...

修改Locale参数,解决MissingResourceException

Tuesday, July 3rd, 2007

今天在Eclipse里调试程序的时候,报了 java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle,key <keyName>。跟踪了一下程序,最后发现是因为Locale的不同导致的错误。我的resource properties文件的名字是xxx_en.properties,而我当时是在中文的windows里,Locale.getDefault()得到的是zh_CN,locale的不同导致了这个错误。 解决这个问题的方法是在JVM启动的时候加上如下参数 -Duser.language=en -Duser.country=US 就可以了。

升级了Wordpress,从2.2到2.2.1

Friday, June 22nd, 2007

wordpress升级了一下小版本,fix了一些bug,据wordpress官方说法,在2.2中发现了一些安全隐患,而2.2.1修正了这些安全问题,所以是一个required的upgrade。 OK,那就升级一下。参照wordpress官方网站的指点开始upgrade wordpress 1. 首先备份wordpress数据库    因为我是在自己的机器上安装wordpress,直接用mysql客户端,没有cpanel或phpadmin,所以直接用mysql的命令备份了整个wordpress的db    mysqldump -u <wp_user> -p <wp_db_name> > <wp_backup>/db_<timestamp>.sql    这个命令把整个wordpress db导出到一个sql文件里,包括数据也一起被导出了 2. 备份整个wordpress目录     cp -R <wp_install_dir> <wp_backup>/ 3. Deactivate所有的plugin    登陆wordpress的管理界面,在plugin管理界面里deactivate所有的plugin 4. 下载wordpress 2.2.1 并解压到安装目录    tar zxvf wordpress-2.2.1.tar.gz 5. 复制原来的wp-config.php, .htaccess到新的wordpress目录 6. 登陆upgrade.php确认要升级的步骤,对2.2来说,没有什么要做的 7. 复制原来的plugins和themes到新的wordpress目录 8. 重新activate plugins并选择theme 9. 回到blog首页,逛一遍确认没有问题就OK了 如果发现任何问题,首先确认是否有权限的问题,要是搞不定的话,可以先用第一步里的备份恢复原来的blog,然后再找解决方案。