Нужен скрипт или код для записи всех посещенных веб-страниц Safari в файл (Mac)

Нужен скрипт или код для записи всех посещенных веб-страниц Safari в файл (Mac)

Я знаю, что это, вероятно, возможно и, вероятно, легко для того, кто знает, что делает, но заранее извиняюсь за то, как мало я знаю.

По сути, я ищу какой-то код (скрипт? опять же, я не знаю), который будет записывать либо названия страниц, либо полные URL-адреса для каждого посещенного веб-сайта (даже при включенном режиме приватного просмотра) в "резервный" файл истории, который не будет стерт или изменен через стандартную панель инструментов Safari. Предпочтительно, чтобы это включало временные метки, хотя это не обязательно.

В качестве альтернативы, если возможно/легче оставить кнопку «Частный просмотр» включенной, но сделать так, чтобы она фактически ничего не ДЕЛАЛА, а затем записывать/создавать резервную копию изменений в файле plist истории Safari примерно каждые 60 секунд в «безопасное» и нередактируемое место, это тоже сработает.

Вот несколько вещей, которые мне не нужны:

  • Инструкции по включению родительского контроля или отключению функции приватного просмотра

  • Инструкции по использованию программы веб-мониторинга или шпионского программного обеспечения, которую необходимо загрузить и установить на компьютер

  • Инструкции по входу на уровне маршрутизатора (в настоящее время это невозможно) или использованию 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>

Затем загрузите plist, запустив его launchctl load ~/Library/LaunchAgents/some_label.plistили выйдя из системы и войдя снова.

Связанный контент