使用 Selenium 和 OpenCV 识别验证码(使用 Java)

验证码的自动识别对于爬虫来说是一个常见的挑战。在这篇文章中,我们将展示如何使用 Selenium 和 OpenCV,结合 Java,来自动化识别网站上的验证码。

配置 Maven 依赖

首先,我们需要在 Maven 项目中添加 Selenium 和 OpenCV 的依赖。

xml

Copy code

<dependencies>

<!-- Selenium -->

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>3.141.59</version>

</dependency>

<!-- OpenCV -->

<dependency>

<groupId>org.openpnp</groupId>

<artifactId>opencv</artifactId>

<version>4.5.1-1</version>

</dependency>

</dependencies>

获取验证码图片

使用 Selenium 打开目标网站,找到验证码图片的元素,并将其截图保存到本地。

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

public class CaptchaSolver {

public static void main(String[] args) {

WebDriver driver = new ChromeDriver();

driver.get("https://example.com");

WebElement captchaElement = driver.findElement(By.id("captcha"));

captchaElement.getScreenshotAs(OutputType.FILE);

// 在此处保存截图到本地

// 例如:FileUtils.copyFile(captchaFile, new File("captcha.png"));

driver.quit();

}

}

识别验证码

使用 OpenCV 读取保存的验证码图片,并使用图像处理技术识别其中的文本。

import org.opencv.core.Core;

import org.opencv.core.Mat;

import org.opencv.core.MatOfByte;

import org.opencv.highgui.HighGui;

import org.opencv.imgcodecs.Imgcodecs;

import org.opencv.imgproc.Imgproc;

public class CaptchaSolver {

public static void main(String[] args) {

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

Mat image = Imgcodecs.imread("captcha.png", Imgcodecs.IMREAD_GRAYSCALE);

// 在此处加入验证码识别的代码,例如使用 OCR 技术

}

}

自动填充验证码

最后,我们可以将识别出的验证码文本自动填充到网站上的相应输入框中,完成验证码的自动识别。

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

public class CaptchaSolver {

public static void main(String[] args) {

WebDriver driver = new ChromeDriver();

driver.get("https://example.com");

WebElement captchaInput = driver.findElement(By.id("captchaInput"));

// 在此处填充识别出的验证码文本

// 例如:captchaInput.sendKeys("识别出的验证码文本");

// 在此处继续你的自动化操作,例如提交表单或点击按钮

driver.quit();

}

}

如果上述代码遇到问题或已更新无法使用等情况可以联系Q:1436423940或直接访问www.ttocr.com测试对接(免费得哈)

相关推荐
碳基硅坊36 分钟前
Mac Studio M3 Ultra 运行大模型实测:Qwen3.6 vs 6款主流模型工具调用对比
人工智能·qwen·qwen3.6
TeDi TIVE7 小时前
开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)
人工智能·spring·开源
MY_TEUCK7 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
三毛的二哥7 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
j_xxx404_7 小时前
大语言模型 (LLM) 零基础入门:核心原理、训练机制与能力全解
人工智能·ai·transformer
飞哥数智坊8 小时前
全新 SOLO 在日常办公中的实际体验
人工智能·solo
<-->8 小时前
Megatron(全称 Megatron-LM,由 NVIDIA 开发)和 DeepSpeed(由 Microsoft 开发)
人工智能·pytorch·python·深度学习·transformer
朝新_8 小时前
【Spring AI 】图像与语音模型实战
java·人工智能·spring
Yuanxl9038 小时前
神经网络-Sequential 应用与实战
人工智能·深度学习·神经网络
火山引擎开发者社区9 小时前
Seedance 2.0 1080P 生成能力正式上线
人工智能