前不久遇到一个需求,需要破解验证码程序(4位数字的),原理则是先存入各种样式的1-9数字在本地文件夹中,然后当提交的表单有需要验证码的时候,先把验证码图片下载到本地文件夹中,然后再把他和本身的1-9数字进行像素比对,当发现有相同时则返回该数字,以致得出这4位验证码程序。
下面看如何下载图片的代码:
首先先从该表单的源代码中找到image中src属性所对应的URL地址。
URL url = new URL(http://shop.10010.com/login/getNumberCheckCode.action); //返回的是4位验证码的图片
File outFile = new File("D:\\image\\a.jpg");
OutputStream os = new FileOutputStream(outFile);
BufferedReader bf = new BufferedReader(new InputStreamReader(url.openStream()));
InputStream is = url.openStream();
byte[] buff = new byte[1024];
while(true) { //要注意这种写法
int readed = is.read(buff);
if(readed == -1) {
break;
}
byte[] temp = new byte[readed];
System.arraycopy(buff, 0, temp, 0, readed); // 这句是关键
os.write(temp);
}
is.close();
os.close();