Upload browser_captcha_personal.py
Browse files
src/services/browser_captcha_personal.py
CHANGED
|
@@ -3,10 +3,16 @@ import time
|
|
| 3 |
import re
|
| 4 |
import os
|
| 5 |
from typing import Optional, Dict
|
| 6 |
-
from playwright.async_api import async_playwright, BrowserContext, Page
|
| 7 |
|
| 8 |
from ..core.logger import debug_logger
|
| 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
# ... (保持原来的 parse_proxy_url 和 validate_browser_proxy_url 函数不变) ...
|
| 11 |
def parse_proxy_url(proxy_url: str) -> Optional[Dict[str, str]]:
|
| 12 |
"""解析代理URL,分离协议、主机、端口、认证信息"""
|
|
@@ -57,6 +63,11 @@ class BrowserCaptchaService:
|
|
| 57 |
return
|
| 58 |
|
| 59 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
proxy_url = None
|
| 61 |
if self.db:
|
| 62 |
captcha_config = await self.db.get_captcha_config()
|
|
|
|
| 3 |
import re
|
| 4 |
import os
|
| 5 |
from typing import Optional, Dict
|
|
|
|
| 6 |
|
| 7 |
from ..core.logger import debug_logger
|
| 8 |
|
| 9 |
+
# Conditionally import playwright
|
| 10 |
+
try:
|
| 11 |
+
from playwright.async_api import async_playwright, BrowserContext, Page
|
| 12 |
+
PLAYWRIGHT_AVAILABLE = True
|
| 13 |
+
except ImportError:
|
| 14 |
+
PLAYWRIGHT_AVAILABLE = False
|
| 15 |
+
|
| 16 |
# ... (保持原来的 parse_proxy_url 和 validate_browser_proxy_url 函数不变) ...
|
| 17 |
def parse_proxy_url(proxy_url: str) -> Optional[Dict[str, str]]:
|
| 18 |
"""解析代理URL,分离协议、主机、端口、认证信息"""
|
|
|
|
| 63 |
return
|
| 64 |
|
| 65 |
try:
|
| 66 |
+
# 检查 Playwright 是否可用
|
| 67 |
+
if not PLAYWRIGHT_AVAILABLE:
|
| 68 |
+
debug_logger.log_error("[BrowserCaptcha] ❌ Playwright 不可用,请使用 YesCaptcha 服务")
|
| 69 |
+
raise ImportError("Playwright 未安装,请使用 YesCaptcha 服务")
|
| 70 |
+
|
| 71 |
proxy_url = None
|
| 72 |
if self.db:
|
| 73 |
captcha_config = await self.db.get_captcha_config()
|