- 專案概述
這個專案的目標是實現一個自動化登入過程,其中包括:
使用 Nim 編寫自動化指令碼來控制瀏覽器。
透過 Selenium 完成自動化操作。
使用外部 Python 指令碼處理驗證碼的識別。
2. 環境準備
Nim 程式語言:用於編寫主指令碼來自動化登入操作。
Selenium (Python):用 Python 編寫驗證碼識別的程式碼。
Pillow (Python):處理截圖和影像裁剪。
Tesseract OCR (Python):識別驗證碼中的文字。
3. Nim 自動化控制
我們將使用 Nim 來啟動一個外部的 Python 指令碼並與瀏覽器進行互動。
Nim 程式碼:啟動 Python 指令碼進行驗證碼處理
nim
更多內容訪問ttocr.com或聯絡1436423940
import os
import subprocess
Nim 函式用來啟動 Python 指令碼處理驗證碼
proc runPythonScript(scriptPath: cstring) {.importjs: "var cmd = require('child_process'); cmd.execFile(scriptPath, function(err, stdout, stderr) { if (err) { console.log(stderr); } else { console.log(stdout); } });" .}
proc loginAutomation() =
開啟瀏覽器,訪問登入頁面,提交使用者資訊,處理驗證碼
echo "Starting the login automation process..."
這裡你可以用 Selenium WebDriver 和 Nim 的 Webdriver 庫來控制瀏覽器,示例如下:
假設你有一個 Webdriver 庫(可以使用 Nim 的 bindings 庫或外部庫)
假設你已經透過某種方式開啟了網頁並執行了登入操作
一旦驗證碼出現,就呼叫 Python 指令碼處理
echo "Captcha detected, invoking Python script to handle it..."
呼叫 Python 指令碼來處理驗證碼識別
runPythonScript("/path/to/your/python_script.py")
echo "Captcha processing complete."
主程式入口
when isMainModule:
loginAutomation()
4. Python 程式碼:驗證碼處理與識別
Python 部分的程式碼負責截圖、裁剪驗證碼區域並使用 OCR 識別驗證碼內容。
python
import time
import pytesseract
from selenium import webdriver
from PIL import Image
啟動瀏覽器並開啟登入頁面
driver = webdriver.Chrome()
driver.get("http://example.com/login")
輸入使用者名稱和密碼
driver.find_element_by_id("username").send_keys("testuser")
driver.find_element_by_id("password").send_keys("password123")
time.sleep(2)
擷取驗證碼圖片並儲存
captcha_element = driver.find_element_by_id("captcha_img")
location = captcha_element.location
size = captcha_element.size
獲取頁面截圖並裁剪驗證碼區域
driver.save_screenshot("fullpage.png")
image = Image.open("fullpage.png")
計算驗證碼區域
left = location['x']
top = location['y']
right = left + size['width']
bottom = top + size['height']
裁剪出驗證碼圖片
captcha_image = image.crop((left, top, right, bottom))
captcha_image.save("captcha.png")
使用 Tesseract 識別驗證碼內容
captcha_text = pytesseract.image_to_string(captcha_image)
print("識別出的驗證碼是:", captcha_text)
將識別結果輸入到驗證碼輸入框
driver.find_element_by_id("captcha_input").send_keys(captcha_text)
driver.find_element_by_id("login_button").click()
關閉瀏覽器
driver.quit()
5. 程式碼說明
Nim 指令碼:
使用 subprocess 模組呼叫 Python 指令碼來處理驗證碼。
自動執行一系列操作,比如啟動瀏覽器並透過 Selenium 完成登入操作。
檢測到驗證碼後,呼叫 Python 處理驗證碼的指令碼。
Python 指令碼:
Selenium 控制瀏覽器開啟登入頁面,輸入使用者名稱、密碼。
透過截圖獲取驗證碼圖片,並利用 Tesseract OCR 庫識別驗證碼的內容。
將識別出的驗證碼填入輸入框並提交。