訪問したすべての Safari Web ページをファイルに書き込むためのスクリプトまたはコードが必要です (mac)

訪問したすべての Safari Web ページをファイルに書き込むためのスクリプトまたはコードが必要です (mac)

これはおそらく可能であり、何をしているのかわかっている人にとってはおそらく簡単なことだとわかっていますが、私の知識が乏しいことをあらかじめお詫びします。

基本的に、訪問したすべての Web サイト (プライベート ブラウジングが有効になっている場合も含む) のページ名と完全な URL のいずれかを、標準の Safari ツールバーで消去または変更されない「バックアップ」履歴ファイルに書き込む何らかのコード (スクリプト? これもわかりません) を探しています。タイムスタンプが含まれていることが望ましいですが、必須ではありません。

あるいは、プライベート ブラウジング ボタンを有効にしたまま、実際には何も実行しないようにして、Safari 履歴 plist への変更を 60 秒ごとに「安全」で編集できない場所に書き込む/バックアップする方が簡単であれば、それも機能します。

私が望んでいないことがいくつかあります:

  • ペアレンタルコントロールを有効にする方法、またはプライベートブラウジングオプションを削除する方法の説明

  • コンピュータにダウンロードしてインストールする必要があるウェブ監視またはスパイソフトウェアプログラムへの指示

  • ルーター レベルでログを記録する方法 (現在は不可能)、または Open DNS を使用する方法 (ドメインのみを表示しますが、すべての Web ページを詳細なレベルで表示するわけではありません) の説明

  • 倫理的または道徳的な議論(私は何を尋ねているのか、なぜそれを尋ねているのかを知っています。この点については私を信頼してください)

私が望むこと(そして、ほとんどは不必要なこと)を実行する監視プログラムがあることは知っています。ですから、どこかで同じタスクを実行するコードを書けるのではないかと思います。また、(正直に言うと)このコードを入力して実行する方法についてのかなり詳細な指示も必要です。これを実行してくれる人を雇うために(必要なら)お金を払うつもりですが、自分が何を求めているのかさえ正確にわからないので、フリーランスのコーダーを雇うサイトで求人広告を作成するのに苦労しています。

あらゆる助け、ガイダンス、支援、説明などをいただければ幸いです。

答え1

.scptAppleScript エディタで、次のようなスクリプトをデフォルトの形式でどこかに保存します。

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 をロードします。

関連情報