如何使用JavaScript实现Netflix互动电影选项自动点击
解决方案
针对Netflix互动选项点击拦截的问题,核心阻力是前端JS生成的事件isTrusted属性默认为false,Netflix的事件监听逻辑会过滤非用户真实操作的事件,以下是几个可落地的方案:
方案1:优先尝试无额外工具的键盘触发方案
你已经验证focus事件可以正常触发,可在focus之后触发回车键事件,大部分互动场景的键盘事件校验逻辑比鼠标事件宽松:
const targetBtn = document.getElementsByClassName("BranchingInteractiveScene--choice-selection")[0]; // 先触发已经验证可行的focus targetBtn.dispatchEvent(new Event('focus')); // 触发回车按下和抬起事件 targetBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', code: 'Enter', which: 13, keyCode: 13, bubbles: true, cancelable: true })); targetBtn.dispatchEvent(new KeyboardEvent('keyup', { key: 'Enter', code: 'Enter', which: 13, keyCode: 13, bubbles: true, cancelable: true }));
方案2:火狐扩展原生API方案
如果方案1无效,可通过火狐扩展的input权限API实现真实点击,该API生成的事件isTrusted属性为true,完全等价于用户手动点击,不需要额外的外部进程:
- 扩展manifest中申请
"input"权限 - 在脚本中调用官方API实现点击:
// 先计算目标元素的坐标 const bounding = targetBtn.getBoundingClientRect(); const x = Math.round(bounding.left + bounding.width / 2); const y = Math.round(bounding.top + bounding.height / 2); // 触发完整点击流程 browser.input.dispatchMouseEvent({ type: "mousedown", x: x, y: y, button: 0, clickCount: 1 }).then(() => { browser.input.dispatchMouseEvent({ type: "mouseup", x: x, y: y, button: 0, clickCount: 1 }); });
方案3:外部进程模拟点击优化
如果你更倾向于用外部进程的方案,可以替换Java实现为Python+pyautogui的方案,整体轻量化程度更高,不需要复杂的overlay逻辑,仅需启动一个简单的本地HTTP服务接收触发请求即可。
内容的提问来源于stack exchange,提问作者doej1367
相关产品推荐
相关产品推荐

