BOM发料对比
This commit is contained in:
@@ -98,17 +98,32 @@ def patch_drission_ws_handshake() -> None:
|
||||
break
|
||||
raise last_err
|
||||
|
||||
if is_linux_env():
|
||||
# 如果是老版的 create_connection,替换它
|
||||
# 重新补回 WS 握手补丁,这两个补丁都需要
|
||||
if is_linux_env() and not getattr(dp_driver_module, "_DTSK_WS_PATCHED", False):
|
||||
dp_driver_module.create_connection = resilient_create_connection
|
||||
# 覆盖 websocket-client 原生的 create_connection 避免某些模块直接引用
|
||||
import websocket
|
||||
websocket.create_connection = resilient_create_connection
|
||||
# 还有可能是通过导入的方式,比如 from websocket import create_connection
|
||||
# 我们需要在 driver.py 中覆盖它
|
||||
import DrissionPage._base.driver as driver_mod
|
||||
driver_mod.create_connection = resilient_create_connection
|
||||
dp_driver_module._DTSK_WS_PATCHED = True
|
||||
# 之前加在 ChromiumPage(opt) 前面其实没用,因为 run_browser 是在 ChromiumPage 实例化时才触发启动。
|
||||
# 真正的解决办法是拦截原生库里去请求 /json/version 的那段代码。
|
||||
if is_linux_env() and not getattr(dp_driver_module, "_DTSK_UUID_PATCHED", False):
|
||||
import DrissionPage._functions.browser as dp_browser_module
|
||||
|
||||
# 保存原生的 run_browser 函数
|
||||
original_run_browser = dp_browser_module._run_browser
|
||||
|
||||
def resilient_run_browser(port, path, args):
|
||||
log("INFO", "[DEBUG] 拦截到 _run_browser 启动 Chrome,强制等待 2 秒以防 UUID 跳变...")
|
||||
res = original_run_browser(port, path, args)
|
||||
time.sleep(2)
|
||||
return res
|
||||
|
||||
# 替换它
|
||||
dp_browser_module._run_browser = resilient_run_browser
|
||||
dp_driver_module._DTSK_UUID_PATCHED = True
|
||||
# ==============================================================
|
||||
|
||||
|
||||
patch_drission_ws_handshake()
|
||||
@@ -368,6 +383,9 @@ def get_page(headless: bool = False, port: int = 9222) -> ChromiumPage:
|
||||
if browser_path:
|
||||
new_co.set_browser_path(browser_path)
|
||||
|
||||
log("INFO", "[DEBUG] 等待 2 秒,让清理后重启的 Chrome 彻底准备好 UUID...")
|
||||
time.sleep(2)
|
||||
|
||||
page = ChromiumPage(new_co)
|
||||
log("OK", "[DEBUG] 清理后重试实例化 ChromiumPage 成功!")
|
||||
return page
|
||||
|
||||
Reference in New Issue
Block a user