需要腳本或程式碼將所有造訪過的 Safari 網頁寫入檔案 (mac)

需要腳本或程式碼將所有造訪過的 Safari 網頁寫入檔案 (mac)

我知道這可能是可能的,而且對於知道自己在做什麼的人來說可能很容易,但我提前為我知之甚少表示歉意。

我本質上是在尋找某種程式碼(腳本?再說一遍,我不知道),它將每個訪問過的網站(即使啟用了隱私瀏覽)的頁面名稱和/或完整 URL 寫入「備份」歷史記錄不會透過標準Safari 工具列刪除或修改的檔案。最好包括時間戳,但這不是必需的。

或者,如果可以/更輕鬆地啟用「隱私瀏覽」按鈕,但使其實際上不執行任何操作,則每隔60 秒左右將更改寫入/備份到Safari 歷史記錄plist 到「安全性」且不可編輯的位置,那也行。

有幾件事我不要:

  • 有關如何啟用家長控製或刪除隱私瀏覽選項的說明

  • 必須下載並安裝到電腦上的網路監控或間諜軟體程式的說明

  • 有關如何在路由器層級登入(目前不可能)或使用開放 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 。

相關內容