Skip to content

Commit 260483d

Browse files
genz27warp-agent
andcommitted
refactor: 将有头浏览器打码从 patchright 改为 playwright
- browser_captcha.py: 所有 patchright 引用改为 playwright - flow_client.py: 更新错误提示信息 - requirements.txt: patchright 改为 playwright Co-Authored-By: Warp <[email protected]>
1 parent 5817830 commit 260483d

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ tomli==2.2.1
77
bcrypt==4.2.1
88
python-multipart==0.0.20
99
python-dateutil==2.8.2
10-
patchright>=0.10.0
10+
playwright>=1.40.0
1111
nodriver>=0.48.0

src/services/browser_captcha.py

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import os
66
import sys
77
import subprocess
8-
# 修复 Windows 上 patchright 的 asyncio 兼容性问题
8+
# 修复 Windows 上 playwright 的 asyncio 兼容性问题
99
os.environ.setdefault("PLAYWRIGHT_BROWSERS_PATH", "0")
1010

1111
import asyncio
@@ -43,7 +43,7 @@ def _is_running_in_docker() -> bool:
4343
IS_DOCKER = _is_running_in_docker()
4444

4545

46-
# ==================== patchright 自动安装 ====================
46+
# ==================== playwright 自动安装 ====================
4747
def _run_pip_install(package: str, use_mirror: bool = False) -> bool:
4848
"""运行 pip install 命令"""
4949
cmd = [sys.executable, '-m', 'pip', 'install', package]
@@ -67,8 +67,8 @@ def _run_pip_install(package: str, use_mirror: bool = False) -> bool:
6767

6868

6969
def _run_playwright_install(use_mirror: bool = False) -> bool:
70-
"""安装 patchright chromium 浏览器"""
71-
cmd = [sys.executable, '-m', 'patchright', 'install', 'chromium']
70+
"""安装 playwright chromium 浏览器"""
71+
cmd = [sys.executable, '-m', 'playwright', 'install', 'chromium']
7272
env = os.environ.copy()
7373

7474
if use_mirror:
@@ -91,37 +91,37 @@ def _run_playwright_install(use_mirror: bool = False) -> bool:
9191
return False
9292

9393

94-
def _ensure_patchright_installed() -> bool:
95-
"""确保 patchright 已安装"""
94+
def _ensure_playwright_installed() -> bool:
95+
"""确保 playwright 已安装"""
9696
try:
97-
import patchright
98-
debug_logger.log_info("[BrowserCaptcha] patchright 已安装")
97+
import playwright
98+
debug_logger.log_info("[BrowserCaptcha] playwright 已安装")
9999
return True
100100
except ImportError:
101101
pass
102102

103-
debug_logger.log_info("[BrowserCaptcha] patchright 未安装,开始自动安装...")
104-
print("[BrowserCaptcha] patchright 未安装,开始自动安装...")
103+
debug_logger.log_info("[BrowserCaptcha] playwright 未安装,开始自动安装...")
104+
print("[BrowserCaptcha] playwright 未安装,开始自动安装...")
105105

106106
# 先尝试官方源
107-
if _run_pip_install('patchright', use_mirror=False):
107+
if _run_pip_install('playwright', use_mirror=False):
108108
return True
109109

110110
# 官方源失败,尝试国内镜像
111111
debug_logger.log_info("[BrowserCaptcha] 官方源安装失败,尝试国内镜像...")
112112
print("[BrowserCaptcha] 官方源安装失败,尝试国内镜像...")
113-
if _run_pip_install('patchright', use_mirror=True):
113+
if _run_pip_install('playwright', use_mirror=True):
114114
return True
115115

116-
debug_logger.log_error("[BrowserCaptcha] ❌ patchright 自动安装失败,请手动安装: pip install patchright")
117-
print("[BrowserCaptcha] ❌ patchright 自动安装失败,请手动安装: pip install patchright")
116+
debug_logger.log_error("[BrowserCaptcha] ❌ playwright 自动安装失败,请手动安装: pip install playwright")
117+
print("[BrowserCaptcha] ❌ playwright 自动安装失败,请手动安装: pip install playwright")
118118
return False
119119

120120

121121
def _ensure_browser_installed() -> bool:
122122
"""确保 chromium 浏览器已安装"""
123123
try:
124-
from patchright.sync_api import sync_playwright
124+
from playwright.sync_api import sync_playwright
125125
with sync_playwright() as p:
126126
# 尝试获取浏览器路径,如果失败说明未安装
127127
browser_path = p.chromium.executable_path
@@ -144,31 +144,31 @@ def _ensure_browser_installed() -> bool:
144144
if _run_playwright_install(use_mirror=True):
145145
return True
146146

147-
debug_logger.log_error("[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m patchright install chromium")
148-
print("[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m patchright install chromium")
147+
debug_logger.log_error("[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m playwright install chromium")
148+
print("[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m playwright install chromium")
149149
return False
150150

151151

152-
# 尝试导入 patchright
152+
# 尝试导入 playwright
153153
async_playwright = None
154154
Route = None
155155
BrowserContext = None
156-
PATCHRIGHT_AVAILABLE = False
156+
PLAYWRIGHT_AVAILABLE = False
157157

158158
if IS_DOCKER:
159159
debug_logger.log_warning("[BrowserCaptcha] 检测到 Docker 环境,有头浏览器打码不可用,请使用第三方打码服务")
160160
print("[BrowserCaptcha] ⚠️ 检测到 Docker 环境,有头浏览器打码不可用")
161161
print("[BrowserCaptcha] 请使用第三方打码服务: yescaptcha, capmonster, ezcaptcha, capsolver")
162162
else:
163-
if _ensure_patchright_installed():
163+
if _ensure_playwright_installed():
164164
try:
165-
from patchright.async_api import async_playwright, Route, BrowserContext
166-
PATCHRIGHT_AVAILABLE = True
165+
from playwright.async_api import async_playwright, Route, BrowserContext
166+
PLAYWRIGHT_AVAILABLE = True
167167
# 检查并安装浏览器
168168
_ensure_browser_installed()
169169
except ImportError as e:
170-
debug_logger.log_error(f"[BrowserCaptcha] patchright 导入失败: {e}")
171-
print(f"[BrowserCaptcha] ❌ patchright 导入失败: {e}")
170+
debug_logger.log_error(f"[BrowserCaptcha] playwright 导入失败: {e}")
171+
print(f"[BrowserCaptcha] ❌ playwright 导入失败: {e}")
172172

173173

174174
# 配置
@@ -563,10 +563,10 @@ def _check_available(self):
563563
"有头浏览器打码在 Docker 环境中不可用。"
564564
"请使用第三方打码服务: yescaptcha, capmonster, ezcaptcha, capsolver"
565565
)
566-
if not PATCHRIGHT_AVAILABLE or async_playwright is None:
566+
if not PLAYWRIGHT_AVAILABLE or async_playwright is None:
567567
raise RuntimeError(
568-
"patchright 未安装或不可用。"
569-
"请手动安装: pip install patchright && python -m patchright install chromium"
568+
"playwright 未安装或不可用。"
569+
"请手动安装: pip install playwright && python -m playwright install chromium"
570570
)
571571

572572
async def _load_browser_count(self):

src/services/flow_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,7 +1183,7 @@ async def _get_recaptcha_token(self, project_id: str, action: str = "IMAGE_GENER
11831183
except Exception as e:
11841184
debug_logger.log_error(f"[reCAPTCHA Personal] 错误: {str(e)}")
11851185
return None, None
1186-
# 有头浏览器打码 (patchright/playwright)
1186+
# 有头浏览器打码 (playwright)
11871187
elif captcha_method == "browser":
11881188
try:
11891189
from .browser_captcha import BrowserCaptchaService
@@ -1197,7 +1197,7 @@ async def _get_recaptcha_token(self, project_id: str, action: str = "IMAGE_GENER
11971197
return None, None
11981198
except ImportError as e:
11991199
debug_logger.log_error(f"[reCAPTCHA Browser] 导入失败: {str(e)}")
1200-
print(f"[reCAPTCHA] ❌ patchright 未安装,请运行: pip install patchright && python -m patchright install chromium")
1200+
print(f"[reCAPTCHA] ❌ playwright 未安装,请运行: pip install playwright && python -m playwright install chromium")
12011201
return None, None
12021202
except Exception as e:
12031203
debug_logger.log_error(f"[reCAPTCHA Browser] 错误: {str(e)}")

0 commit comments

Comments
 (0)