"""screenCaptureNoConfirm pywebview 通过js跳过确认直接获取屏幕媒体流 """ import webview import threading import time # -------------------------- 1. PyWebView配置 -------------------------- class ScreenCaptureAPI: def __init__(self): self.window = None def set_window(self, window): self.window = window def auto_trigger_capture(self): """后台自动触发屏幕采集(模拟用户点击)""" # 延迟1秒(等待页面加载完成) time.sleep(1) # 执行JS自动点击按钮,触发屏幕采集 self.window.evaluate_js("document.getElementById('autoCaptureBtn').click();") # -------------------------- 2. 前端HTML(核心:自动触发+无感采集) -------------------------- HTML_CONTENT = """ 自动获取屏幕流
状态:等待自动采集...
""" # -------------------------- 3. 主程序入口 -------------------------- if __name__ == "__main__": # 初始化API api = ScreenCaptureAPI() # 创建pywebview窗口(关键配置:WebView2引擎+权限豁免) window = webview.create_window( title="自动获取屏幕流", html=HTML_CONTENT, width=1400, height=900, resizable=True, # confirm_close=True, # 额外权限配置(WebView2) # webview_settings={ # "web_security": False, # 关闭跨域限制(本地运行需开启) # "allow_displaying_insecure_content": True, # "allow_running_insecure_content": True # }, js_api=api ) api.set_window(window) # 定义页面加载完成后的回调(自动触发采集) def on_page_loaded(): # 启动线程自动触发点击 trigger_thread = threading.Thread(target=api.auto_trigger_capture, daemon=True) trigger_thread.start() # 暴露API给前端 api.page_loaded = on_page_loaded # 启动pywebview try: webview.start( private_mode=False, # 关键:关闭私有模式,授予本地权限 debug=True, http_server=True ) except KeyboardInterrupt: print("程序已终止")