使用 Ruby 識別英文數字驗證碼

啊飒飒大苏打發表於2024-10-21
  1. 環境準備
    在開始之前,確保安裝以下 gem:

bash

gem install rmagick httparty tesseract-ocr
你還需要確保已經安裝了 Tesseract OCR 引擎,並配置好其路徑。

  1. 下載驗證碼圖片
    使用 HTTParty 下載驗證碼圖片並儲存到本地:

ruby

require 'httparty'

class CaptchaDownloader
def self.download_captcha(url, save_path)
response = HTTParty.get(url)
if response.success?
File.open(save_path, 'wb') do |file|
file.write(response.body)
end
puts "驗證碼圖片已儲存為 #{save_path}"
else
puts "下載失敗: #{response.code}"
end
end
end
3. 影像處理與 OCR 識別
使用 RMagick 和 tesseract-ocr 進行 OCR 識別:

ruby

require 'rmagick'
require 'tesseract-ocr'

class CaptchaRecognizer
def self.recognize_captcha(image_path)
image = Magick::Image.read(image_path).first
text = Tesseract::Engine.new.do_ocr(image)

puts "識別結果: #{text.strip}"
text.strip

end
end
4. 自動化登入
使用 HTTParty 傳送 POST 請求,模擬登入操作:

ruby
更多內容聯絡1436423940
class Login
def self.login(username, password, captcha)
url = 'https://captcha7.scrape.center/login'
response = HTTParty.post(url, body: { username: username, password: password, captcha: captcha })

if response.success?
  puts "登入成功"
else
  puts "登入失敗: #{response.code}"
end

end
end
5. 主程式
整合上述程式碼,建立主程式:

ruby

class Program
def self.run
captcha_url = 'https://captcha7.scrape.center/captcha.png'
captcha_path = 'captcha.png'

# 下載驗證碼圖片
CaptchaDownloader.download_captcha(captcha_url, captcha_path)

# 識別驗證碼
captcha_text = CaptchaRecognizer.recognize_captcha(captcha_path)

# 模擬登入
unless captcha_text.nil?
  Login.login('admin', 'admin', captcha_text)
end

end
end

Program.run

相關文章