change browser

This commit is contained in:
2026-03-14 22:16:40 +08:00
parent aa6225406e
commit a13db655e8
4 changed files with 38 additions and 15 deletions

View File

@@ -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}")
# 登入