运行 AppleScript 在 Safari 中出现 Automator 权限错误 – 替代方案和安全风险?

Automator permissions error when running AppleScript in Safari – Alternatives and security risks?

我想使用 Automator 和 AppleScript 在 Safari 中填写表格。我有一个看起来像这个玩具示例的功能脚本:

on run {}
    tell application "System Events" to keystroke "Hello"
    tell application "System Events" to keystroke tab
    tell application "System Events" to keystroke "World"
end run

我希望在浏览器中的特定位置使用键盘快捷键执行它。但是,当我这样做时,我 运行 遇到权限问题:

The action "Run AppleSCript" encountered an error: 
"System Events got an error: Automator Workflow Runner 
(WorkflowServiceRunner, my_script_name) is not allowed to send keystrokes"

System Prefrences -> Security & Privacy -> Privacy -> Accessibility 中,我允许 AutomatorAppleScript Utility,在 Automation 选项卡下,我允许 System Events 用于 Safari。

如果我在 Accessibility 中也允许使用 Safari,我可以让它工作,至少是暂时的,但这似乎 过于激烈并且存在安全风险 让 Safari 始终完全控制 运行 脚本。

我应该如何处理这个问题?我希望脚本易于使用,并且不想每次都进入设置以临时允许 Safari。或者这也可以自动化吗?是否有与 Automator 和 AppleScript 完全不同的方法可以让我以更加用户友好和安全的方式执行此操作?基本上,我想做一些类似于 AutoHotKey 在 Windows.

中能够做的事情

我猜你所做的是设置一个快速操作,然后在系统偏好设置的“键盘:快捷方式”中的“服务”下为该快速操作指定一个快捷方式。通过这样做,我能够重现问题:尝试 运行 脚本要求 Safari 本身有权访问“控制您的计算机”。如果那 不是 您所做的,此解决方案应该仍然有效,但您可能还想更新您的问题,以防有更好的解决方案可用。

你能做的就是使用重定向。创建一个可以被授予控制您计算机的权限的应用程序,然后创建一个将启动该应用程序的服务。

  1. 使用 Automator(或脚本编辑器)通过上述步骤创建一个应用程序,作为第一步添加 tell application "Safari" to activate。您需要执行该步骤,因为打开应用程序会将焦点从 Safari 上移开。

  1. 保存此应用程序。 (如果使用 Automator,您在开始创建脚本时告诉 Automator 它是一个应用程序;如果使用脚本编辑器,您在保存脚本时告诉脚本编辑器它是一个应用程序。)

  2. 使用 Automator 创建快速操作。给它一个动作“启动应用程序”并告诉它启动你刚刚创建的应用程序。

  1. 将您在第 2 步中创建的应用程序拖到系统偏好设置的“安全和隐私”设置中的“辅助功能”列表中。 (您可能必须解锁这些设置才能允许更改。)当您将其拖入时应该会自动选中它,但如果没有,您可以选中它。

  1. 在系统偏好设置的“键盘:快捷方式”设置的“服务”列表中,应该会列出您在第 3 步中创建的快捷操作。给它一个键盘快捷键。

此时,您应该可以使用键盘快捷方式运行该应用程序,只有该应用程序需要有控制您计算机的权限。