首页 > 其他分享 >使用 C 实现验证码识别与自动化登录

使用 C 实现验证码识别与自动化登录

时间:2024-10-19 10:45:15浏览次数:1  
标签:const 登录 image 验证码 char captcha easy curl 识别

  1. 安装所需依赖
    首先,你需要安装以下库:

libcurl:用于发送 HTTP 请求。
OpenCV:用于图像处理。
Tesseract:用于 OCR 识别。
在 Ubuntu 系统中,你可以使用以下命令安装这些依赖:

bash

sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libopencv-dev
sudo apt-get install tesseract-ocr libleptonica-dev
2. 下载验证码图片
使用 libcurl 下载验证码图片并保存到本地:

c

include <stdio.h>

include <stdlib.h>

include <curl/curl.h>

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written = fwrite(ptr, size, nmemb, stream);
return written;
}

void download_captcha(const char *url, const char *save_path) {
CURL *curl;
FILE *fp;
CURLcode res;

curl = curl_easy_init();
if (curl) {
    fp = fopen(save_path, "wb");
    curl_easy_setopt(curl, CURLOPT_URL, url);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    fclose(fp);
    if (res != CURLE_OK) {
        fprintf(stderr, "下载失败: %s\n", curl_easy_strerror(res));
    } else {
        printf("验证码图片已保存为 %s\n", save_path);
    }
}

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

c

include <opencv2/opencv.hpp>

include <tesseract/baseapi.h>

include <tesseract/ocrclass.h>

std::string recognize_captcha(const char *image_path) {
// 加载图像
cv::Mat image = cv::imread(image_path, cv::IMREAD_GRAYSCALE);
// 进行二值化处理
cv::threshold(image, image, 127, 255, cv::THRESH_BINARY);

// 保存处理后的图像(可选)
cv::imwrite("captcha_processed.png", image);

// 初始化 Tesseract
tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();
ocr->Init(NULL, "eng");
ocr->SetImage(image.data, image.cols, image.rows, 1, image.step[0]);
char *outText = ocr->GetUTF8Text();

std::string result(outText);
delete[] outText;
ocr->End();
return result;

}
4. 自动化登录
使用 libcurl 发送 POST 请求,模拟登录操作,并传递用户名、密码和识别出的验证码:

c

void login(const char *username, const char *password, const char *captcha) {
CURL *curl;
CURLcode res;

curl = curl_easy_init();
if (curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "https://captcha7.scrape.center/login");
    curl_easy_setopt(curl, CURLOPT_POST, 1L);

    // 准备 POST 数据
    char post_fields[256];
    snprintf(post_fields, sizeof(post_fields), "username=%s&password=%s&captcha=%s", username, password, captcha);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_fields);

    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);

    if (res != CURLE_OK) {
        fprintf(stderr, "登录失败: %s\n", curl_easy_strerror(res));
    } else {
        printf("登录成功\n");
    }
}

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

c

int main() {
const char *captcha_url = "https://captcha7.scrape.center/captcha.png";
const char *captcha_path = "captcha.png";

// 下载验证码
download_captcha(captcha_url, captcha_path);

// 识别验证码
std::string captcha_text = recognize_captcha(captcha_path.c_str());
printf("识别结果: %s\n", captcha_text.c_str());

// 登录
login("admin", "admin", captcha_text.c_str());

return 0;

}更多内容联系1436423940

标签:const,登录,image,验证码,char,captcha,easy,curl,识别
From: https://www.cnblogs.com/ocr1/p/18475575

相关文章

  • 使用 Java 实现验证码识别与自动化登录
    安装所需依赖首先,确保你已经安装了JDK。可以使用Maven来管理依赖。在pom.xml中添加以下依赖:xmlorg.apache.httpcomponentshttpclient4.5.13net.sourceforge.tess4jtess4j5.3.02.下载验证码图片使用ApacheHttpClient下载验证码图片并保存到本地:javaim......
  • 使用 Python 实现验证码识别与自动化登录
    安装所需依赖首先,确保你已经安装了Python。然后,可以使用pip安装所需的库:bashpipinstallrequestspillowpytesseract确保你也安装了TesseractOCR。可以从TesseractGitHub获取安装指南。下载验证码图片使用requests库下载验证码图片并保存到本地:pythonimpo......
  • java_day17_JDBC、登录注册修改案例
    一、JDBCJDBC编写六步走:1、注册驱动,告诉java程序我们要链接什么数据库【mysql为案例】5.1.x驱动包中的驱动类路径:【com.mysql.jdbc.Driver】8.x.x驱动包中的驱动类路径:【com.mysql.cj.jdbc.Driver】2、创建与数据库的链接对象......
  • 【Spring】Spring实现加法计算器和用户登录
    加法计算器准备工作创建SpringBoot项目:引入SpringWeb依赖,把前端的页面放入项目中**<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,init......
  • 认知觉醒,精神控制陷阱:帮你识别并破解亲密关系中的权利游戏
    01什么是精神控制精神控制一词最早出现于20世纪70年代的美国。指通过操纵、控制他人的精神,对情感、认知与行为施加持续性的影响和控制,逐步改变脑部神经系统条件反射,使心理活动与行为活动发生异变,让他人服从操控者的意愿。精神控制实质是通过剥夺感知和强迫思维的手段,阻碍......
  • python - 分享绕过验证码登录的方法
    一、通过webdriver启动浏览器:二、添加cookie:三、切换到目标地址: #ThisisasamplePythonscript.fromseleniumimportwebdriverimporttime#PressShift+F10toexecuteitorreplaceitwithyourcode.#PressDoubleShifttosearcheverywhereforclas......
  • TF卡不识别数据恢复
    当TF卡出现不识别的情况时,数据恢复成为了一个关键问题。以下是一些解决TF卡不识别问题以及进行数据恢复的方法:一、TF卡不识别的原因及解决方法没有插好:解决方法:将TF卡轻轻地拿出,清洁卡槽,再将TF卡重新插入,确保插入的方向正确。2.读卡器或设备故障:解决方法:尝试使用不同的读卡器......
  • 基于卷积神经网络的乳腺癌细胞识别系统,resnet50,mobilenet模型【pytorch框架+python源
     更多目标检测和图像分类识别项目可看我主页其他文章功能演示:卷积神经网络,乳腺癌细胞识别系统,resnet50,mobilenet【pytorch框架,python】_哔哩哔哩_bilibili(一)简介基于卷积神经网络的乳腺癌细胞识别系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模......
  • TPAMI 2024 | 具有识别机制的可扩展视频目标分割
    题目:ScalableVideoObjectSegmentationWithIdentificationMechanism具有识别机制的可扩展视频目标分割作者:ZongxinYang;JiaxuMiao;YunchaoWei;WenguanWang;XiaohanWang;YiYang摘要本文探讨了在半监督视频目标分割(VOS)中实现可扩展和有效的多目标建模所......
  • TH-OCR:强大的光学字符识别工具与车牌识别应用
    在当今数字化的时代,高效准确地识别文本和图像中的字符变得至关重要。TH-OCR(清华OCR)作为一款优秀的光学字符识别软件,以其卓越的性能和广泛的应用场景,受到了众多用户的青睐。其中,车牌识别功能更是在交通管理、智能停车等领域发挥着重要作用。一、TH-OCR简介TH-OCR是由清......