feat(runtime): disable microphone by default to suppress permission popup
韵达等站点打开时会请求麦克风权限,触发浏览器系统级授权弹窗。在共享 context 上加 add_init_script,于每个页面/iframe 加载前覆盖 navigator.mediaDevices.getUserMedia (及 webkit/moz 旧版) 为直接 reject(NotAllowedError: Permission disabled):站点调用时 立即被拒、不再弹出系统授权窗,且麦克风被真正挡住(非授权给它)。物流工作台无需音视频 采集,故对所有网页站点统一生效。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -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 []
|
_launch_args = ["--remote-debugging-port=9223"] if debug_mode else []
|
||||||
browser = pw.chromium.launch(headless=False, args=_launch_args)
|
browser = pw.chromium.launch(headless=False, args=_launch_args)
|
||||||
context = browser.new_context(viewport={"width": 1920, "height": 1080})
|
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 = {}
|
pages_map = {}
|
||||||
print("\n====================================================")
|
print("\n====================================================")
|
||||||
|
|||||||
Reference in New Issue
Block a user