mirror of
https://github.com/henry4682/linebot_finance.git
synced 2026-05-16 04:41:52 +00:00
change browser
This commit is contained in:
@@ -4,7 +4,7 @@ import os
|
||||
import time
|
||||
import asyncio
|
||||
import requests
|
||||
import anthropic
|
||||
from groq import Groq
|
||||
import urllib3
|
||||
import threading
|
||||
import captcha_state
|
||||
@@ -28,7 +28,7 @@ load_dotenv("../.env")
|
||||
|
||||
EINVOICE_USER = os.getenv("EINVOICE_USER")
|
||||
EINVOICE_PASS = os.getenv("EINVOICE_PASS")
|
||||
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
|
||||
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
|
||||
MY_USER_ID = os.getenv("LINE_USER_ID")
|
||||
|
||||
cloudinary.config(
|
||||
@@ -53,19 +53,20 @@ Base = declarative_base()
|
||||
# created_at = Column(DateTime, default=datetime.now)
|
||||
|
||||
def solve_captcha(img_b64: str) -> str:
|
||||
client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)
|
||||
msg = client.messages.create(
|
||||
model="claude-haiku-4-5-20251001",
|
||||
|
||||
# client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)
|
||||
# 改用groq
|
||||
client = Groq(api_key=GROQ_API_KEY)
|
||||
msg = client.chat.completions.create(
|
||||
model="llama-3.2-11b-vision-preview",
|
||||
max_tokens=10,
|
||||
messages=[{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{
|
||||
"type": "image",
|
||||
"source": {
|
||||
"type": "base64",
|
||||
"media_type": "image/png",
|
||||
"data": img_b64
|
||||
"type": "image_url",
|
||||
"image_url": {
|
||||
"url": f"data:image/png;base64,{img_b64}"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -75,7 +76,7 @@ def solve_captcha(img_b64: str) -> str:
|
||||
]
|
||||
}]
|
||||
)
|
||||
return msg.content[0].text.strip()
|
||||
return msg.choices[0].message.content.strip()
|
||||
|
||||
async def solve_captcha_manual(img_b64: str):
|
||||
# 1. 解碼圖片並轉成白底
|
||||
@@ -137,7 +138,7 @@ async def login_and_get_token() -> str | None:
|
||||
try:
|
||||
async with async_playwright() as p:
|
||||
# 載入登入頁拿 login_challenge
|
||||
browser = await p.chromium.launch(headless=False)
|
||||
browser = await p.firefox.launch(headless=True)
|
||||
page = await browser.new_page()
|
||||
await page.goto("https://www.einvoice.nat.gov.tw/accounts/login/mw")
|
||||
await page.wait_for_timeout(8000)
|
||||
@@ -160,7 +161,9 @@ async def login_and_get_token() -> str | None:
|
||||
|
||||
# 將拿到的圖片存成檔案穰後轉給linebot處理
|
||||
# ✅ 透過 LINE Bot 取得驗證碼
|
||||
captcha_text = await solve_captcha_manual(captcha_data["image"])
|
||||
# captcha_text = await solve_captcha_manual(captcha_data["image"])
|
||||
captcha_text = await solve_captcha(captcha_data["image"])
|
||||
|
||||
print(f"驗證碼: {captcha_text}")
|
||||
|
||||
# 登入
|
||||
|
||||
Reference in New Issue
Block a user