【问题标题】:Detect Safari Private Browsing in AppleScript在 AppleScript 中检测 Safari 隐私浏览
【发布时间】:2017-03-02 11:20:27
【问题描述】:

我正在尝试编写 AppleScript 来判断 Safari 的窗口是否处于隐私模式。这是在 Chrome 中执行此操作的 AppleScript:

tell application "Google Chrome"
    set incognitoIsRunning to the (count of (get every window whose mode is "incognito")) is greater than 0
end tell

if (incognitoIsRunning) then
    return "-- PRIVATE MODE --"
end tell

查看是否检查隐私浏览菜单选项的旧解决方案不再有效。

【问题讨论】:

    标签: cocoa browser safari applescript


    【解决方案1】:

    Safari 中有一个怪癖可以被利用来确定是否启用了私有模式:Safari 不允许 localStorage.setItem 在私有模式下使用(请参阅related StackOverflow post)。我们可以通过在 AppleScript 中使用 JavaScript 的 sn-p 来利用这一点。如果不支持 localStorage,JavaScript 会抛出一个错误(由 try/catch 块捕获),我们使用它来设置布尔值。

    tell application "Safari"
        set checkMode to "
             var isprivate = false;
              try {
                   window.localStorage.setItem('foobar', 1);
              } catch(e) {
                   isprivate = true;
              }
           isprivate;
    "
        set isPrivate to do JavaScript checkMode in current tab of first window
    end tell
    
    log isPrivate
    

    当然,您需要调整此 AppleScript 以在 Safari 中设置适当的目标窗口/选项卡。

    【讨论】:

    • 不幸的是,这不再适用于 Safari 13。(我相信一些早期版本也是如此。)
    • 不幸的是,这并不奇怪——使用特性/怪癖嗅探总是不稳定的,最终会在浏览器更新时失败。
    • 当然。特别是因为浏览器积极希望阻止检测到隐私浏览。
    猜你喜欢
    • 2018-01-25
    • 2016-04-12
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多