Files
schedule_converter/captcha/recognize.go
2026-03-13 20:43:44 +08:00

73 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package captcha
import (
"fmt"
"io"
"net/http"
"os"
"strings"
"jwts/client"
"jwts/config"
"github.com/PuerkitoBio/goquery"
)
// 保存验证码图片
func SaveCaptchaImage(httpClient *http.Client) ([]byte, error) {
fmt.Println("[2] 获取验证码...")
req, err := http.NewRequest("GET", config.BaseURL+"/captchaImage", nil)
if err != nil {
return nil, err
}
req.Header = client.GetHeaders()
resp, err := httpClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
if err := os.WriteFile("captcha.png", body, 0644); err != nil {
fmt.Printf(" 警告: 无法保存验证码图片: %v\n", err)
} else {
fmt.Println(" 验证码已保存到: captcha.png")
}
return body, nil
}
// 识别验证码 - 使用固定验证码用于测试
func Recognize(imagePath string) (string, error) {
fmt.Println("[3] 使用固定验证码...")
// 固定验证码用于测试
return "....", nil
}
// 获取并识别验证码
func GetAndRecognize(client *http.Client) (string, error) {
_, err := SaveCaptchaImage(client)
if err != nil {
return "", err
}
captchaCode, err := Recognize("captcha.png")
if err != nil {
return "", err
}
fmt.Printf(" 识别结果: %s\n", captchaCode)
return captchaCode, nil
}
// 用于解析HTML登录页面
func ParseHTML(html string) (*goquery.Document, error) {
return goquery.NewDocumentFromReader(strings.NewReader(html))
}