From 09e05f8dfc48ea000a711fc285965e197d20ce17 Mon Sep 17 00:00:00 2001 From: Misaka Date: Wed, 29 Jul 2026 20:58:46 +0800 Subject: [PATCH] feat(runtime): disable microphone by default to suppress permission popup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 韵达等站点打开时会请求麦克风权限,触发浏览器系统级授权弹窗。在共享 context 上加 add_init_script,于每个页面/iframe 加载前覆盖 navigator.mediaDevices.getUserMedia (及 webkit/moz 旧版) 为直接 reject(NotAllowedError: Permission disabled):站点调用时 立即被拒、不再弹出系统授权窗,且麦克风被真正挡住(非授权给它)。物流工作台无需音视频 采集,故对所有网页站点统一生效。 Co-Authored-By: Claude --- inbound_verify/runtime.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/inbound_verify/runtime.py b/inbound_verify/runtime.py index e69b70d..6081d09 100644 --- a/inbound_verify/runtime.py +++ b/inbound_verify/runtime.py @@ -301,6 +301,15 @@ def launch_and_prepare(debug_mode=False, debug_target="", foreground=True): _launch_args = ["--remote-debugging-port=9223"] if debug_mode else [] browser = pw.chromium.launch(headless=False, args=_launch_args) context = browser.new_context(viewport={"width": 1920, "height": 1080}) + # 默认禁用麦克风/摄像头:在每个页面/iframe 加载前覆盖 getUserMedia 为“直接拒绝”, + # 这样站点(如韵达登录/工作台会请求麦克风)调用时立即 NotAllowedError,Chromium 不再 + # 弹出系统授权窗,且麦克风被真正挡住(不是授权给它)。物流工作台无需音视频采集。 + context.add_init_script( + "(()=>{const d=()=>Promise.reject(new DOMException('Permission disabled','NotAllowedError'));" + "if(navigator.mediaDevices)navigator.mediaDevices.getUserMedia=d;" + "for(const k of ['getUserMedia','webkitGetUserMedia','mozGetUserMedia']){" + "if(typeof navigator[k]==='function')navigator[k]=function(){return d();};}})();" + ) pages_map = {} print("\n====================================================")