「java爬取带验证码页面」java爬虫识别验证码
本篇文章给大家谈谈java爬取带验证码页面,以及java爬虫识别验证码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 模拟登陆带验证码的网页,就想知道怎么将验证码以图片的形式下载到本地。。。。。
- 2、java的Jsoup登录有验证码网页获取登录后的cookie
- 3、java怎么抓取到网页上的验证码,比如12306的验证码,怎么爬到验证码图片并下载到本地。
- 4、怎样用java实现验证码
java 模拟登陆带验证码的网页,就想知道怎么将验证码以图片的形式下载到本地。。。。。
首先你要在前台获取验证信息 这点应该会吧 前台传数据到后台
然后你要用swing 做一个图片
然后你把数据写进去
然后你保存到本地
是不是就等于下载了
java的Jsoup登录有验证码网页获取登录后的cookie
首先是jar仓库:
dependency
groupIdorg.seleniumhq.selenium/groupId
artifactIdselenium-java/artifactId
version[3.0.1,)/version//获取最新的版本库
/dependency
dependency
groupIdorg.jsoup/groupId
artifactIdjsoup/artifactId
version1.8.2/version
typejar/type
/dependency
代码:
public static void getIndex2() {
//之前运行程序发现生成了N多个chrome driver进程,搞不懂为什么会有那么多进程产生,网上查了下,说起这个service有用,拿来试下,效果未知
ChromeDriverService service = new
ChromeDriverService.Builder().usingDriverExecutable(new
File("./driver/chromedriver.exe")).usingAnyFreePort().build();
try {
service.start();
} catch (IOException ex) {
Logger.getLogger(kechengbiaoIndex.class.getName()).log(Level.SEVERE, null, ex);
}
//end
//正式开始
//先定义浏览器驱动,我用chrome浏览器,网上下载一个chromedriver.exe,启动时需要加载
System.getProperties().setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe");
java怎么抓取到网页上的验证码,比如12306的验证码,怎么爬到验证码图片并下载到本地。
利用http加载网页,解析验证码的地址,获取图片,下载到本地即可
怎样用java实现验证码
现在许多系统的注册 登录或者发布信息模块都添加的随机验证码功能 就是为了避免自动注册程序或者自动发布程序的使用
验证码实际上就是随机选择一些字符以图片的形式展现在页面上 如果进行提交操作的同时需要将图片上的字符同时提交 如果提交的字符与服务器session保存的不同 则认为提交信息无效 为了避免自动程序分析解析图片 通常会在图片上随机生成一些干扰线或者将字符进行扭曲 增加自动识别验证码的难度
在这里 我们使用java实现验证码
%@ page contentType= image/jpeg import= java awt * java awt image * java util * javax imageio * %
%!
Color getRandColor(int fc int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc ) fc= ;
if(bc ) bc= ;
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);
}
%
%
//设置页面不缓存
response setHeader( Pragma No cache );
response setHeader( Cache Control no cache );
response setDateHeader( Expires );
// 在内存中创建图象
int width= height= ;
BufferedImage image = new BufferedImage(width height BufferedImage TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g setColor(getRandColor( ));
g fillRect( width height);
//设定字体
g setFont(new Font( Times New Roman Font PLAIN ));
// 随机产生 条干扰线 使图象中的认证码不易被其它程序探测到
g setColor(getRandColor( ));
for (int i= ;i ;i++)
{
int x = random nextInt(width);
int y = random nextInt(height);
int xl = random nextInt( );
int yl = random nextInt( );
g drawLine(x y x+xl y+yl);
}
// 取随机产生的认证码( 位数字)
String codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ;
String sRand= ;
for (int i= ;i ;i++){
int a=random nextInt(codeList length() );
String rand=codeList substring(a a+ );
sRand+=rand;
// 将认证码显示到图象中
g setColor(new Color( +random nextInt( ) +random nextInt( ) +random nextInt( )));//调用函数出来的颜色相同 可能是因为种子太接近 所以只能直接生成
g drawString(rand *i+ );
}
// 将认证码存入SESSION
session setAttribute( rand sRand);
// 图象生效
g dispose();
// 输出图象到页面
ImageIO write(image JPEG response getOutputStream());
out clear();
out = pageContext pushBody();
lishixinzhi/Article/program/Java/hx/201311/25536
关于java爬取带验证码页面和java爬虫识别验证码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。