我知道这可能是可能的,并且对于知道自己在做什么的人来说可能很容易,但我提前为我的了解甚少而道歉。
我本质上是在寻找某种代码(脚本?同样,我不知道),它将把每个访问过的网站的页面名称和/或完整 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 。