edgeの履歴が取りたい
※ファイルをインストールしないで、無理くりデータを読み出す方法です。
もともとedgeの履歴を取りたかったのですが、
C:\Users\●ユーザー名●\AppData\Local\Microsoft\Edge\User Data\Default\History
履歴が保存されているHistoryファイルは メモ帳で開くと冒頭に
SQLite format 3 ...
と記載されており、SQLiteなので、しかるべきODBCドライバーもしくは.dllファイルをインストールして見ることができます。
ttps://tryhackme.com/r/room/iosanalysishttps://tryhackme.com/P
私が試したのは、会社の制限でこれらができないときに、文字化けと戦いながら閲覧履歴の一部を見る方法です。
なお、手動でとりあえず中身が見たいなら、Wordのファイル修復コンバーターでも同じような結果が得られます。
マクロで読み出す場合
Sub history()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim textStream As Object
Set textStream = fso.OpenTextFile("C:\Users\●ユーザー名●\AppData\Local\Microsoft\Edge\User Data\Default\History",1,False)
Dim s_i As Byte
For s_i = 0 To 200
textStream.SkipLine
Next s_i
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "https?://[\w!?/+\-_~=;.,*&@#$%()'[\]]+"
regEx.IgnoreCase = True
regEx.Global = True
Dim textLine As String
Dim matches As Object
Dim match As Object
Do Until textStream.AtEndOfStream
textLine = ""
textLine = textStream.readLine
If InStr(textLine, "test.com") > 0 Then
Set matches = regEx.Execute(textLine)
For Each match In matches
Debug.Print textStream.Line
Debug.Print match
Next match
End If
If textStream.Line = 500 Then Exit Do
Loop
textStream.Close
End Sub
詳細
私はパソコンではあまり検索しないのに6年使ったPCで1万行ありましたので、199行しか出力できないイミディエイトウインドウには荷の重い仕事です。最初、固まったのかと思いました。
履歴ファイルは行が多いのでinstrで該当サイトだけ出力しましょう。どうも、最後に開いたサイトは223か224行目辺りに来ることが多く、100行目辺りまではフォーマットがそれ以降と異なりエラーが頻出したので、201行目スタートにしています。例では500行までにしていますが、行も区切った方がよいと思います。
どうやら、SQLiteはUTF-8という話なので、CreateObject("ADODB.Stream")
でCharsetをUTF-8にすればいけると思ったのですが、全くとりだせませんでした。
なぜtextstreamなら部分的に文字化けしながらも取り出せるのかは謎です。
誤ってwriteしてHistoryファイルを壊さないよう、最初はHistoryファイルをデスクトップなどにコピーしてコードを作るのがよいと思います。