
正文
java验证码代码下载 验证码javaweb
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java怎么抓取到网页上的验证码,比如12306的验证码,怎么爬到验证码图片并下载到本地。
利用http加载网页,解析验证码的地址,获取图片,下载到本地即可
相关问答
Q1: JAVA验证码
这个你可以把这段代码存在一个JSP页面中
然后这样引进来
a href="#"img src="img.jsp" onclick=this.src=this.src//a
这样就可以点击图版进行刷新java验证码代码下载了
至于后退失效或刷新,这样好像不能解决
因为后退访问的是历史记录,是下载到客户端的
页面,所以图片也是固定的java验证码代码下载了,要主动刷新的
不过在程序设计的时候,一般是用Servlet来做
验证码的,这样在提交的时候就进入到一个不同
servlet,这样就不能退后了,间接的解决了你的问题
还有这样也可以用框架来做,这样就更不容易后退了
Q2: 用java随机生成四位验证码,只求编程代码
我自己做的系统里面用作验证码的JSP的
%@page contentType="image/jpeg;charset=utf-8"%
%@page import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" %
%@ page import="java.io.OutputStream" %
html
body
%!
Color getRandColor(int fc,int bc)
{
Random rd=new Random();
if(fc255) fc=255;
if(bc255) bc=255;
int red=fc+rd.nextInt(bc-fc);
int green=fc+rd.nextInt(bc-fc);
int blue=fc+rd.nextInt(bc-fc);
return new Color(red,green,blue);
}
%
%
Random r=new Random();
response.addHeader("Pragma","No-cache");
response.addHeader("Cache-Control","no-cache");
response.addDateHeader("expires",0);
int width=90;
int height=23;
BufferedImage pic=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics gc=pic.getGraphics();
gc.setColor(getRandColor(200,250));
gc.fillRect(0,0,width,height);
String[] rNum ={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f",
"g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w",
"x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N",
"O","P","Q","R","S","T","U","V","W","X","Y","Z"};
int[] style = {Font.PLAIN,Font.BOLD,Font.ITALIC,Font.PLAIN+Font.BOLD,
Font.BOLD+Font.ITALIC,Font.PLAIN+Font.ITALIC,Font.PLAIN+Font.BOLD+Font.ITALIC};
gc.setColor(Color.WHITE);
gc.drawLine(0,30,90,10);
gc.setColor(getRandColor(160,200));
for (int i=0;i50;i++)
{
int x = r.nextInt(width);
int y = r.nextInt(height);
int xl = r.nextInt(10);
int yl = r.nextInt(10);
gc.drawLine(x,y,x+xl,y+yl);
}
gc.setColor(getRandColor(60,150));
String rt = "";
for(int i=0;i4;i++){
String temp = rNum[r.nextInt(62)];
rt = rt+temp;
gc.setFont(new Font("Times New Roman",style[r.nextInt(7)],15));
gc.drawString(temp,5+i*15+r.nextInt(10),10+r.nextInt(10));
}
gc.dispose();
session.setAttribute("randNum",rt);
OutputStream os=response.getOutputStream();
ImageIO.write(pic,"JPEG",os);
System.out.println("当前验证码为:"+session.getAttribute("randNum"));
os.flush();
os.close();
os=null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
%
/body
/html
Q3: 求一个Java语言编写的gif动态验证码 就是百度注册用户的那种
你好,
Servlet类:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/gif");//设置相应类型,告诉浏览器输出的内容为图片
response.setHeader("Pragma", "No-cache");//设置响应头信息,告诉浏览器不要缓存此内容
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);
RandomValidateCode randomValidateCode = new RandomValidateCode();
try {
randomValidateCode.getRandcode(request, response);//输出图片方法
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
生成图片的类:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class RandomValidateCode {
public static final String RANDOMCODEKEY = "RANDOMVALIDATECODEKEY";//放到session中的key
private Random random = new Random();
private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//随机产生的字符串
private int width = 80;//图片宽
private int height = 26;//图片高
private int lineSize = 25;//干扰线数量
private int stringNum = 4;//随机产生字符数量
/**
* 生成随机图片
*/
public void getRandcode(HttpServletRequest request,
HttpServletResponse response) {
HttpSession session = request.getSession();
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics g = image.getGraphics();
g.fillRect(0, 0, width, height);
g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18));
g.setColor(getRandColor(180, 233));
//绘制干扰线
for(int i=0;i=lineSize;i++){
drowLine(g);
}
//绘制随机字符
String randomString = "";
for(int i=1;i=stringNum;i++){
randomString=drowString(g,randomString,i);
}
session.removeAttribute(RANDOMCODEKEY);
session.setAttribute(RANDOMCODEKEY, randomString);
g.dispose();
try {
ImageIO.write(image, "JPEG", response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
// ------------- private methods -------------
/*
* 获得字体
*/
private Font getFont(){
return new Font("Fixedsys",Font.CENTER_BASELINE,18);
}
/*
* 获得颜色
*/
private Color getRandColor(int fc,int bc){
if(fc 255)
fc = 255;
if(bc 255)
bc = 255;
int r = fc + random.nextInt(bc-fc-16);
int g = fc + random.nextInt(bc-fc-14);
int b = fc + random.nextInt(bc-fc-18);
return new Color(r,g,b);
}
/*
* 绘制字符串
*/
private String drowString(Graphics g,String randomString,int i){
g.setFont(getFont());
g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));
String rand = String.valueOf(getRandomString(random.nextInt(randString.length())));
randomString +=rand;
g.translate(random.nextInt(3), random.nextInt(3));
g.drawString(rand, 13*i, 16);
return randomString;
}
/*
* 绘制干扰线
*/
private void drowLine(Graphics g){
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(13);
int yl = random.nextInt(15);
g.drawLine(x, y, x+xl, y+yl);
}
/*
* 获取随机的字符
*/
private String getRandomString(int num){
return String.valueOf(randString.charAt(num));
}
}
Q4: 求JAVA 程序破解该类验证码的源码??有没有大神~~~~~~~~~~~
您好java验证码代码下载,提问者java验证码代码下载:
1、首先以前java验证码代码下载的系统,没有验证码,只有用户名、密码。
2、知道用户名,可以根据密码包(网上有下载),进行代码破解。
3、现在为了系统的安全性,弄的验证码、三次密码输入错误限制登陆、手机短信验证码等。
PS:像你这种情况,是不好破解的,因为数字、字母都有,另外是6位数验证码。
Q5: 验证码 代码
你在java发这个问题!我就把java 的验证码源码给你。
tr
tdfont color="#FFFFFF"验证码:/font/td
td width="22%"input type="text" name="randomcode" class='input' size='4' maxlength="8" style="width:50px;height:18px" onKeyDown="if (event.keyCode==13)submitLogin();"
/td
td width="48%"img src="./showradomcode.jsp"/td
/tr
文件二:showradomcode.jsp
%@ page contentType="image/jpeg" import="java.awt.image.*,javax.imageio.*" %jsp:useBean id="rc" class="com.hanweb.sso.ldap.util.RandomChar" scope="page"/%
//设置页面不缓存
//response.reset();
response.setContentType("image/jpeg");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//在内存中创建图象宽60 高18 4个字符 0条干扰线
BufferedImage image = rc.getRandomImage(58, 18, 4, 1);
//设置其session值
session.setAttribute("jcmsrandomchar", rc.getRandomString());
session.setMaxInactiveInterval(100000000);
ImageIO.write(image, "JPEG", response.getOutputStream());
%
文件三:RandomChar.java
package com.hanweb.sso.ldap.util;
/**
* Title: 随机码图形生成程序的处理 Description:
* 为了加强网络安全,防止黑课工具对系统的攻击,现在通用随机码来解决这个问题,因为每一次产生的随机码是随机的,所以使用穷举法破解密码的工具就无能为力了
* Copyright: Copyright (c) 2004-2010 Company: SDLDAP
*
* @author LiChanglai
* @version 1.0
*/
import java.util.*;
import java.awt.*;
import java.awt.image.*;
public class RandomChar {
/**
* 给定范围获得随机颜色
*
* @param fc
* int 参数1
* @param bc
* int 参数2
* @return Color 返回的color对象
*/
private String strRandomString; // 生成的随机数
/**
* 取其生成的随机数
*
* @return String
*/
public String getRandomString() {
return strRandomString;
}
/**
* 设置其生成的随数
*
* @param randomString
* String
*/
public void setRandomString(String randomString) {
this.strRandomString = randomString;
}
/**
* 取其某一范围的color
*
* @param fc
* int 范围参数1
* @param bc
* int 范围参数2
* @return Color
*/
private Color getRandColor(int fc, int bc) {
// 取其随机颜色
Random random = new Random();
if (fc 255) {
fc = 255;
}
if (bc 255) {
bc = 255;
}
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
/**
* 用于生成其随机数
*
* @param randomCount
* int 随机数总长度
* @return String 返回的随机数
*/
private String getRandomString(int nRandomCount) {
/*
* String[] a = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
* "B", "C", "D", "E", "F", "G", "H", "I", "G", "K", "L", "M", "N", "O",
* "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c",
* "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
* "r", "s", "t", "u", "v", "w", "x", "y", "z" };
*/
String[] a = { "a", "b", "c", "d", "e", "f", "g", "h", "g", "k", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
String strRand = "";
int nRand;
// 取其随机数的总数
int LengthOfRandom = a.length;
// 生成随机类
Random random = new Random();
// 循环取随机取其整数,并将其整数所对应的结果进行累加
for (int i = 0; i nRandomCount; i++) {
nRand = random.nextInt(LengthOfRandom);
strRand += a[nRand];
}
// 返回累加后的结果
return strRand;
}
/**
* 生成其随机的图形
*
* @param width
* int 生成图形的宽度
* @param height
* int 生成图形的高度
* @param nLengthOfRandom
* int 随机码的个数
* @param nDisturbLineCount
* int 干扰线的条数
* @return BufferedImage
*/
public BufferedImage getRandomImage(int nWidth, int nHeight,
int nLengthOfRandom, int nDisturbLineCount)
{
// 在内存中创建图象
BufferedImage image = new BufferedImage(nWidth, nHeight,
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
String strRand = "";
nLengthOfRandom = (nLengthOfRandom = 0) ? 6 : nLengthOfRandom;
nDisturbLineCount = (nDisturbLineCount = 0) ? 0 : nDisturbLineCount;
// 生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, nWidth, nHeight);
// 设定字体
g.setFont(new Font("Times New Roman", Font.PLAIN, 16));
// 画边框
g.setColor(new Color(255, 255, 255));
g.drawRect(0, 0, nWidth - 1, nHeight - 1);
// 随机产生nDisturbLineCount条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160, 200));
for (int i = 0; i nDisturbLineCount; i++) {
int x = random.nextInt(nWidth);
int y = random.nextInt(nHeight);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}
// 取随机产生的认证码(6位)
strRand = this.getRandomString(nLengthOfRandom);
// 设置其属性randomString的值
this.strRandomString = strRand;
for (int i = 0; i nLengthOfRandom; i++) {
// 将认证码显示到图象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));
// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(strRand.substring(i, i + 1), 13 * i + 5, 14);
}
// 图象生效
g.dispose();
return image;
}
}
java验证码代码下载的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于验证码javaweb、java验证码代码下载的信息别忘了在本站进行查找喔。







