首页 > 其他分享 >识别图形验证码 (Elixir 示例)

识别图形验证码 (Elixir 示例)

时间:2024-10-16 11:36:42浏览次数:6  
标签:do end 示例 验证码 HTTPoison captcha Elixir path

安装所需依赖
在你的 mix.exs 文件中添加以下依赖:

elixir

defp deps do
[
{:httpoison, "~> 1.8"},
{:mogrify, "~> 0.7"},
{:tesseract, "~> 0.1"}
]更多内容联系1436423940
end
然后运行 mix deps.get 来安装这些库。

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

elixir

defmodule CaptchaDownloader do
require Logger

def download_captcha(url, save_path) do
case HTTPoison.get(url) do
{:ok, %HTTPoison.Response{body: body}} ->
File.write!(save_path, body)
Logger.info("验证码图片已保存为 #{save_path}")

  {:error, %HTTPoison.Error{reason: reason}} ->
    Logger.error("下载验证码失败: #{reason}")
end

end
end

captcha_url = "https://captcha7.scrape.center/captcha.png"
save_path = "captcha.png"
CaptchaDownloader.download_captcha(captcha_url, save_path)
图像处理和 OCR 识别
使用 Mogrify 进行图像处理,并使用 Tesseract 进行验证码识别:

elixir

defmodule CaptchaProcessor do
def preprocess_image(input_path, output_path) do
input_path
|> Mogrify.open()
|> Mogrify.custom("colorspace", "Gray")
|> Mogrify.custom("threshold", "50%")
|> Mogrify.save(path: output_path)

IO.puts("处理后的验证码图片已保存为 #{output_path}")

end

def recognize_captcha(image_path) do
Tesseract.OCR.ocr(image_path)
end
end

processed_path = "captcha_processed.png"
CaptchaProcessor.preprocess_image(save_path, processed_path)
captcha_text = CaptchaProcessor.recognize_captcha(processed_path)
IO.puts("识别结果: #{captcha_text}")
自动化登录
使用 HTTPoison 发送登录请求,携带识别到的验证码进行自动化登录:

elixir

defmodule CaptchaLogin do
def login(username, password, captcha) do
body = %{
"username" => username,
"password" => password,
"captcha" => captcha
}

case HTTPoison.post("https://captcha7.scrape.center/login", Poison.encode!(body), [{"Content-Type", "application/json"}]) do
  {:ok, %HTTPoison.Response{status_code: 200}} ->
    IO.puts("登录成功")

  {:ok, %HTTPoison.Response{status_code: _}} ->
    IO.puts("登录失败")

  {:error, %HTTPoison.Error{reason: reason}} ->
    IO.puts("请求失败: #{reason}")
end

end
end

CaptchaLogin.login("admin", "admin", captcha_text)

标签:do,end,示例,验证码,HTTPoison,captcha,Elixir,path
From: https://www.cnblogs.com/ocr1/p/18469491

相关文章

  • 识别图形验证码 (Scala 示例)
    安装所需依赖在你的build.sbt文件中添加以下依赖:scalalibraryDependencies+="org.scalaj"%%"scalaj-http"%"2.4.2"下载并保存验证码图片使用scalaj-http下载验证码图片并保存到本地:scalaimportscalaj.http._importjava.nio.file.{Files,Paths}objectCaptch......
  • 识别图形验证码 (Julia 示例)
    安装所需依赖在JuliaREPL中使用以下命令安装所需的包:juliausingPkgPkg.add("HTTP")Pkg.add("Images")Pkg.add("Tesseract")下载并保存验证码图片使用HTTP下载验证码图片并保存到本地:juliausingHTTPusingFileIOfunctiondownload_captcha(url::String,save_pa......
  • python+eel入门示例
    安装eelpipinstalleelpyimporteelimportrandom#笑话列表jokes=["为什么电脑经常生病?因为窗户(Windows)总是开着!","为什么数学书看起来总是很悲伤?因为它里面有太多的问题(problems)","为什么海洋里没有电脑?因为它们总是遇到短路(seals)","为什么冰......
  • Vue3 + Openlayers10示例 台风轨迹和台风圈
    前言假装已经完成了vue3和Openlayers10开发环境的搭建,如果有需要,可搜索vue+Openlayers环境搭建的相关文章。本示例基于Vue3和Openlayers10的环境,实现台风轨迹和台风圈的效果。一、安装插件安装Element-plus插件,其实只在台风列表的地方用到了el-checkbox,可根据实际需......
  • 例2.3列表操作示例
    '''首先先定义一个列表,列表是写在[]里,用逗号隔开的,元素是可以改变的列表的截取语法结构是:变量[头下标:尾下标]'''L=['abc',12,3.45,'python',2.789]#输出完整列表print(L)#输出列表的第一个元素print(L[0])#将列表的第一个元素修改为‘a’L[0]='a'#将列表的第2个元素到第3个元素......
  • MinIO部署及示例
    docker部署dockerrun\-p9000:9000\-p9001:9001\-d\--nameminio\-v/Users/ivan/code/black/dockerData/minio:/data\-e"MINIO_ROOT_USER=ROOT"\-e"MINIO_ROOT_PASSWORD=MINIO123"\quay.io/minio/mi......
  • 获取淘宝商品详情API数据:代码示例
    前提条件在开始之前,你需要在开放平台注册账号,并创建一个应用以获取API密钥(AppKey和AppSecret)。此外,你还需要获取访问令牌(AccessToken),这通常需要通过OAuth2.0认证流程来实现。获取key和secretitem_get-获得商品详情taobao.item_get公共参数请求地址: 名称类型必须......
  • 第二百八十节 JPA教程 - JPA 查询Exists示例
    JPA教程-JPA查询Exists示例如果子查询返回任何行,则EXISTS条件返回true。以下代码显示如何在JPQL中使用带有子查询的EXISTS运算符。Listl=em.createQuery("SELECTeFROMProfessoreWHEREEXISTS"+"(SELECTpFROMPhonepWHEREp.employe......
  • 使用 Swift 实现图标点选验证码识别及分割
    Swift是一门现代化的编程语言,广泛应用于iOS和macOS开发中。借助第三方图像处理库,Swift也能够高效地完成验证码图像的识别和分割。本文将演示如何使用Swift语言实现图标点选验证码的识别与分割。环境准备在macOS系统中,使用Swift是非常方便的。我们可以通过CocoaPods......
  • Apache Kafka 使用示例
    Kafka快速入门指南微信公众号:阿俊的学习记录空间小红书:ArnoZhangwordpress:arnozhang1994博客园:arnozhangCSDN:ArnoZhang1994第一步:获取Kafka下载2.13-3.8.0版本的Kafka版本并解压:$tar-xzfkafka_2.13-3.8.0.tgz$cdkafka_2.13-3.8.0第二步:启动Kafka环境注意:你的......