`
umbrellall1
  • 浏览: 146334 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

识别验证码并登录案例

 
阅读更多
该案例目的 利用代码模拟http请求达到登录成功实例;

1.通过获取网页验证码URL 识别验证码,目前使用到的技术为;tess4j

Maven

	<dependency>
		<groupId>net.java.dev.jna</groupId>
		<artifactId>jna</artifactId>
		<version>4.1.0</version>
	</dependency>
	
	<dependency>
		<groupId>net.sourceforge.tess4j</groupId>
			<artifactId>tess4j</artifactId>
			<version>2.0.1</version>
			<exclusions>
			<exclusion>
			<groupId>com.sun.jna</groupId>
			<artifactId>jna</artifactId>
			</exclusion>
		</exclusions>
	</dependency>



PS:尽量把这个库写在maven 最前面之前自己测试的时候老是报

java.lang.NoSuchFieldError: SIZE_T_SIZE

辗转分析良久 把这个库设置到前面就解决问题

首先获取解析验证码

这里要注意一下的是 session 和验证码绑定在一起的所以要想验证码通过得获取cookie

/**
	 * 解析图片验证码 并返回 cookie 和验证码
	 * */
	public  String[] orcImage(String url){
		String[] ary = new String[2];
		InputStream inputStream=null;
		try {  
			URL realUrl = new URL(url);
			// 打开和URL之间的连接
			HttpURLConnection  connection =  (HttpURLConnection) realUrl.openConnection();
			if (connection.getResponseCode()!=200){
				return null;
			}
			inputStream = connection.getInputStream();
			String str = connection.getHeaderField("Set-Cookie").split(";")[0];
			ary[0] = str;
//			downloadJPG(inputStream);
			BufferedImage bi = ImageIO.read(inputStream);  
			ITesseract instance = new Tesseract();  // JNA Interface Mapping  
			File tessDataFolder = LoadLibs.extractTessResources("tessdata");
			instance.setDatapath(tessDataFolder.getAbsolutePath());
			instance.setLanguage("eng");//英文库识别数字比较准确
            String result = instance.doOCR(bi); 
            ary[1] = result.trim();
            return ary;
         } catch (Exception e) { 
        	 log.error("解析验证码失败!{}",e);
        	 return null;
         } finally {
             try {
				inputStream.close();
			} catch (IOException e) {
			}
		}
	}


解析成功后在调用登录请求
/**
	 * 登录动作
	 * */
	public String login(String url,String codeUrl,String param){
		String[] rel = orcImage(codeUrl);
		param = param+"&inVerifyID="+rel[1];
		BufferedReader in = null;
		String cookie = null;
		try {
			String urlNameString = url + "?" + param;
			log.info("GET 请求:{}",urlNameString);
			URL realUrl = new URL(urlNameString);
			// 打开和URL之间的连接
			URLConnection  connection =  realUrl.openConnection();
			// 设置通用的请求属性
			connection.setRequestProperty("Accept", "*/*");
			connection.setRequestProperty("Accept-Encoding", "gzip,deflate");
			connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
			connection.setRequestProperty("Connection", "keep-alive");
			connection.setRequestProperty("Host", "www.scsqzx.com");
			connection.setRequestProperty("Cookie",rel[0]);
			connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0");
			// 建立实际的连接
			connection.connect();
			String encoding = connection.getContentEncoding();
//			  //因为返回的是gzip 的数据所以要解析出来
			String xmlStr = readStream(connection,encoding);
                       //因为解析出来的数据是XML 格式的所以解析xml
			String code = xml.getText("Result", xmlStr);
			if(code != null && code.equals("1054")){
				cookie = rel[0];
			}else{
				log.error("登录返回状态{},cookie:{}",xmlStr,rel[0]);
			}
		} catch (Exception e) {
			log.error("登录异常:",e);
		}
		finally {
			try {
				if (in != null) {
					in.close();
				}
			} catch (Exception e2) {
			}
		}
		
		return cookie;
		
	}


该实例流程完毕
分享到:
评论

相关推荐

    keras验证码识别完整案例

    在本文中,我们将深入探讨如何使用Keras库进行验证码识别,这是一个常见的计算机视觉任务,具有实际应用价值。验证码(CAPTCHA)是“全自动区分计算机和人类的图灵测试”的缩写,用于验证用户是否为真实的人,防止...

    验证码图片识别

    验证码图片识别技术是一种用于网络安全的身份验证机制,它通过让用户输入显示在图片中的随机字符来防止自动化的恶意...通过综合运用这些知识,可以构建一个能有效识别验证码图片的系统,提高用户体验并保障网络安全。

    识别验证码程序源代码

    在本案例中,提供的源代码包含了解析和识别验证码的算法,以及脚本化的运行机制,这使得用户能够直接运行并测试代码效果。以下是关于验证码识别程序的一些核心知识点: 1. **验证码的基本原理**:验证码是一种为了...

    DELPHI本地识别验证码 易语言 OCR DLL

    在本主题中,“DELPHI本地识别验证码 易语言 OCR DLL”涉及到的是使用Delphi编程语言和易语言,通过OCR(Optical Character Recognition,光学字符识别)技术来识别这些验证码。DLL(Dynamic Link Library)是...

    验证码识别程序+发票标号识别案例

    验证码识别程序和发票号码识别是计算机视觉领域中的两个重要应用,它们主要涉及到图像处理、模式识别和深度学习等技术。在此,我们将详细讨论这两个主题,以及如何通过编程实现它们。 首先,验证码识别程序的设计...

    java识别验证码 仅限字母数字 附带bmp图片

    总的来说,Java识别验证码是一个涉及多领域知识的挑战,需要综合运用图像处理、模式识别和机器学习等技术。通过不断迭代优化,可以提高验证码识别的准确性和效率,从而在实际项目中实现高效的安全防护。

    成功识别验证码脚本.zip

    本资源"成功识别验证码脚本.zip"提供了一个使用VBS(Visual Basic Script)编写的脚本,该脚本能够自动识别由数字和字母组成的图形验证码。 VBS是一种基于微软的Visual Basic编程语言的轻量级脚本语言,广泛应用于...

    验证码案例-从简单到复杂 可用于图像文字识别 Python验证码识别 MATLAB验证码识别均可用.rar

    这个压缩包包含了一系列验证码图片(1.png, 2.png, 3.png, 4.png),很可能是为了展示验证码识别的不同难度级别,以及如何用Python和MATLAB进行图像处理和文字识别。 首先,我们来看验证码识别的基本过程。它通常...

    (一)python爬虫验证码识别(去除干扰线)

    在Python爬虫领域,验证码识别是一项重要的技术,用于自动化数据抓取或模拟登录。这篇文章将探讨如何使用Python处理带有干扰线的验证码识别问题。首先,我们需要了解验证码识别的基本原理和涉及的技术。 验证码识别...

    验证码技术\c#识别简单的验证码(.net)

    在识别验证码前,我们需要对图像进行预处理,如灰度化、二值化、去噪等,以便提取出字符特征。 2. 特征提取:接下来是识别的关键步骤,通过边缘检测、连通成分分析等算法找到每个字符的轮廓。然后,根据字符的形状...

    OCR识别技术验证码识别程序

    在本案例中,“OCR识别技术验证码识别程序”是一个专门针对动网验证码的解决方案,它利用OCR技术来解析和识别动网论坛系统的验证码图片,从而实现自动化处理。 验证码的主要目的是防止自动化的机器人或恶意软件进行...

    Python基于TensorFlow深度学习卷积神经网络自动识别网站验证码设计源码案例设计.zip

    总的来说,这个案例为我们提供了一个实践深度学习和CNN的好机会,不仅可以增强对Python和TensorFlow的理解,也能让我们掌握验证码识别的关键技术和挑战。通过不断学习和优化,我们可以设计出更高效、更准确的验证码...

    易语言论坛验证码识别

    总的来说,“易语言论坛验证码识别”是一个涵盖网络请求、图像处理、数据转换等多个技术领域的实践项目,对于学习易语言和自动化处理的初学者来说,是一个很好的学习案例。通过深入研究提供的源码,我们可以了解到...

    python+Pyppeteer+SpringBoot验证码自动识别登录(文末附源码)

    在本文中,我们将深入探讨如何使用Python的Pyppeteer库和SpringBoot框架来实现一个自动识别验证码并完成登录的功能。Pyppeteer是基于Chromium的无头浏览器库,可以方便地进行网页自动化操作,而SpringBoot是Java开发...

    PHP动态验证码三个案例【数字字母,图片,汉字】

    在IT领域,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,如垃圾邮件发送、恶意登录尝试等。PHP作为流行的服务器端脚本语言,常常被用来实现这种功能。本教程将深入探讨如何使用PHP...

    vb识别网站验证码源码

    在这个特定的案例中,我们讨论的是如何使用VB(Visual Basic)编程语言来实现一个识别网站验证码的系统。这个系统的核心依赖于Pegasus公司的两个控件:SSICR和IMGPr6。 SSICR(Smart Simple Image OCR)是一个光学...

    C# 收集 自动识别验证码 代码

    标题 "C# 收集 自动识别验证码 代码" 指的是使用C#编程语言实现的一种自动识别验证码的技术。验证码自动识别通常涉及到图像处理和机器学习算法,目的是为了自动化解决那些设计用来防止机器人自动操作的人工识别挑战...

    易语言验证码识别源码

    易语言验证码识别源码是一种用易语言编程实现的...对于想要学习易语言或者验证码识别技术的开发者来说,这是一个很好的实践案例。通过阅读和理解源码,可以深入掌握相关知识,并可能进一步改进和优化算法,提高识别率。

    java 验证码识别 OCR

    java 验证码识别 OCR。

    C#网站模拟登录器|带验证码模拟登录源代码

    4. **验证码处理**:项目中提到的“带验证码模拟登录”意味着程序需要识别并输入验证码。验证码识别可能涉及到OCR(光学字符识别)技术,如Tesseract OCR库,它能将图像中的文字转换为可编辑文本。另外,如果验证码...

Global site tag (gtag.js) - Google Analytics