需要脚本或代码将所有访问过的 Safari 网页写入文件(mac)

需要脚本或代码将所有访问过的 Safari 网页写入文件(mac)

我知道这可能是可能的,并且对于知道自己在做什么的人来说可能很容易,但我提前为我的了解甚少而道歉。

我本质上是在寻找某种代码(脚本?同样,我不知道),它将把每个访问过的网站的页面名称和/或完整 URL(即使启用了隐私浏览)写入“备份”历史文件,该文件不会被标准 Safari 工具栏删除或修改。最好包括时间戳,但这不是必需的。

或者,如果可以/更容易地保持“隐私浏览”按钮处于启用状态,但使其实际上不执行任何操作,然后每 60 秒左右将更改写入/备份到 Safari 历史记录 plist 中到“安全”且不可编辑的位置,那么也可以。

我不想要以下几件事:

  • 有关如何启用家长控制或删除私人浏览选项的说明

  • 必须下载并安装到计算机上的网络监控或间谍软件程序的说明

  • 有关如何在路由器级别登录(目前不可能)或使用 Open DNS(仅显示域,但不显示粒度级别的所有网页)的说明

  • 伦理或道德讨论(我知道我在问什么以及为什么要问;请相信我)

我知道有些监控程序可以做我想做的事情(甚至更多,其中大部分都是不必要的),所以我认为可以在某个地方编写一些代码来完成同样的任务。我还需要(说实话)一些关于如何/在哪里输入此代码并使其运行的非常详细的说明。我愿意(如果有必要)付钱雇人来做这件事,但即使不知道我到底想要什么,我也很难在任何雇佣自由职业程序员的网站上发布职位。

如能得到任何帮助/指导/协助/澄清/等等,都将不胜感激。

答案1

.scpt在 AppleScript 编辑器中的默认格式中将这样的脚本保存到某处:

repeat
    try
        tell application "System Events"
            if name of (process 1 where frontmost is true) is not "Safari" then error
        end tell
        tell document 1 of application "Safari"
            set u to URL
            set n to name
        end tell
        do shell script "f=/path/to/log_file
u=" & quoted form of u & "
n=" & quoted form of n & "
[[ $(tail -n1 $f | cut -d' ' -f2) = $u ]] && exit
printf '%s\\n' \"$(date +%FT%H:%M) $u $n\" >> $f"
    end try
    delay 10
end repeat

该脚本每 10 秒仅运行一次,因此可能会错过一些页面。不过,您可以根据需要减少延迟。

您可以在登录时启动脚本,并在退出时通过保存属性列表重新启动它,如下所示~/Library/LaunchAgents/some_label.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>EnableGlobbing</key>
  <true/>
  <key>Label</key>
  <string>some_label</string>
  <key>ProgramArguments</key>
  <array>
    <string>osascript</string>
    <string>/path/to/script.scpt</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <true/>
</dict>
</plist>

launchctl load ~/Library/LaunchAgents/some_label.plist然后通过运行或注销并重新登录来加载 plist 。

相关内容