首页 > 编程语言 >使用 C# 识别英文数字验证码

使用 C# 识别英文数字验证码

时间:2024-10-21 12:20:32浏览次数:6  
标签:string C# 验证码 public var new 识别 response

  1. 环境准备
    在开始之前,请确保你的项目中引用了以下 NuGet 包:

Tesseract
RestSharp
在 Visual Studio 中,你可以通过 NuGet 包管理器安装它们:

bash

Install-Package Tesseract
Install-Package RestSharp
确保你已安装 Tesseract OCR 引擎,并将其路径配置在系统环境变量中。

  1. 下载验证码图片
    使用 RestSharp 下载验证码图片并保存到本地:

csharp

using RestSharp;
using System.IO;

public class CaptchaDownloader
{
public static void DownloadCaptcha(string url, string savePath)
{
var client = new RestClient(url);
var request = new RestRequest(Method.GET);
var response = client.Execute(request);

    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        File.WriteAllBytes(savePath, response.RawBytes);
        Console.WriteLine($"验证码图片已保存为 {savePath}");
    }
    else
    {
        Console.WriteLine($"下载失败: {response.StatusCode}");
    }
}

}
3. 图像处理与 OCR 识别
使用 Tesseract 进行 OCR 识别:

csharp
更多内容联系1436423940
using Tesseract;

public class CaptchaRecognizer
{
public static string RecognizeCaptcha(string imagePath)
{
using (var engine = new TesseractEngine(@"./tessdata", "eng", EngineMode.Default))
{
using (var img = Pix.LoadFromFile(imagePath))
{
var result = engine.Process(img);
Console.WriteLine($"识别结果: {result.GetText().Trim()}");
return result.GetText().Trim();
}
}
}
}
4. 自动化登录
使用 RestSharp 发送 POST 请求,模拟登录操作:

csharp

public class Login
{
public static void LoginToWebsite(string username, string password, string captcha)
{
var client = new RestClient("https://captcha7.scrape.center/login");
var request = new RestRequest(Method.POST);
request.AddJsonBody(new { username, password, captcha });

    var response = client.Execute(request);

    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        Console.WriteLine("登录成功");
    }
    else
    {
        Console.WriteLine($"登录失败: {response.StatusCode}");
    }
}

}
5. 主程序
整合上述代码,创建主程序:

csharp

class Program
{
static void Main(string[] args)
{
string captchaUrl = "https://captcha7.scrape.center/captcha.png";
string captchaPath = "captcha.png";

    // 下载验证码图片
    CaptchaDownloader.DownloadCaptcha(captchaUrl, captchaPath);

    // 识别验证码
    string captchaText = CaptchaRecognizer.RecognizeCaptcha(captchaPath);

    // 模拟登录
    if (!string.IsNullOrEmpty(captchaText))
    {
        Login.LoginToWebsite("admin", "admin", captchaText);
    }
}

}

标签:string,C#,验证码,public,var,new,识别,response
From: https://www.cnblogs.com/ocr1/p/18489188

相关文章

  • K8s-Service详解
    Service介绍在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。为了解决这个问题,kubernetes提供了Service资源,Service会对提供同一个服务的多个pod进行聚合,并且提供一个统一的......
  • 什么是 SAP ABAP Debugger Script
    SAPABAPDebuggerScript是SAP提供的一种工具,允许开发人员在调试ABAP程序时编写脚本来自动化调试过程。这些脚本可以帮助简化复杂的调试任务,例如批量数据断点设置、变量监控、内存分析等。Debugging本身是开发流程中非常重要的环节,而SAPABAPDebuggerScript的目......
  • go:极简上手使用 stretchr/testify 进行mock测试
    库安装首先,安装Mock类生成工具Mockery:goinstallgithub.com/vektra/mockery/[email protected]实际上,你也可以手动创建Mock类。生成Mock类假设你在internal/metrics包下有如下定义的接口:packagemetricstypeGetter[Tany]interface{Get()(T,error)}在项......
  • PHP cli模式和fpm模式有什么区别
    PHP的CLI模式与FPM模式主要的区别包括:它们的运行环境不同、使用场景不同、性能表现不同、配置方式不同。在深入了解两者之间的区别之前,我们首先必须了解CLI(命令行界面)和FPM(FastCGI进程管理器)的基本概念。CLI模式是专门为命令行脚本执行设计的,并在不与Web服务器集成的情况下运行......
  • CTF学习( 3):Misc(二维码)
    1.见到二维码图片,查看详细信息是否藏有flag(无果),使用QRResearch查看二维码中是否藏有隐藏信息(发现)2.使用010editor打开后文本搜索flag,key等关键字无果->发现在文件尾藏了数据(笔记:PNG文件由文件头"89504E47"和数据块"chuk"组成,504B0304是zip文件的文件头)3.......
  • Ubuntu20.04LTS aarch64 操作系统连接联通4G网卡
    步骤1:更新系统并安装必要的软件包sudoapt-getupdatesudoapt-getinstallusb-modeswitchmodemmanagernetwork-managerusb-modeswitch:用于将某些USB设备从存储模式切换到调制解调器模式。ModemManager:用于管理移动宽带调制解调器。NetworkManager:用于管理网络连接。......
  • 如何在C语言中使用外部库
    在C语言中使用外部库,首先,你需要找到你需要的库,这可以在网上或者在本地机器上,并获取库的路径。其次,你需要用预处理指令#include<库名.h>将库包含到你的程序中。最后,你需要在链接阶段,用-l库名将库链接到你的程序中。使用外部库可以方便地使用库中预定义的函数、变量和数据类型,这对......
  • 流量抓包和网络问题排查,网工不要只会Wireshark,用好TCPdump才是大神!
    你好,这里是网络技术联盟站,我是瑞哥。在网络工程师的日常工作中,流量抓包和网络问题的排查是不可或缺的一环。Wireshark作为图形界面强大的流量分析工具,深受众多网络工程师的喜爱。然而,仅仅依赖Wireshark并不足以成为一个真正的网络排查高手。真正的网络大神往往能熟练运......
  • 高效并行计算:使用C++中的std::thread实现多线程编程
    解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界在现代计算中,随着多核处理器的普及,如何充分利用硬件资源以提升程序性能成为关键问题之一。C++标准库提供了丰富的多线程支持,其中std::thread是用于实现并发计算的核心工具之一。通过合理的多线程设计,程序可以实现......
  • 企业信息管理系统/企业管理软件/信息管理系统/ERP系统/CRM系统/企业信息化/办公自动化
    博主介绍......