[VBA] Challenge: création d'un dork file reader [Historique Firefox]

Staple1600

XLDnaute Barbatruc
Bonsoir

Suite à la lecture de ce post
https://www.excel-downloads.com/threads/acces-minitel-avec-wanadoo.83694/

Uue idée saugrenue m'est venue à l'esprit.

Tenter de réaliser en VBA une macro permettant de transformer
le history.dat de Firefox en fichier texte exploitable et intelligible.


Je sais qu'il exitse un utilitaire qui effectue déjà la tache

mais je voudrais juste (pour le fun) tenter la chose en VBA

Avis aux amateurs

Le problème apparement est le format du fichier (dork file)

J'en suis à ce stade (trés laborieux)

Sub test_dork()
Code:
Dim cel As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For Each cel In Range(Cells(1, 1), Cells(1000, 1)) 'pour test
If cel.Text Like "*$00?$00*" Or cel.Text Like "*(^*" Or cel.Text Like "*)(*" Or Not cel.Text Like "*http://*" Then
cel.EntireRow.Delete
End If
Next
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Documentation:
philwilson.org: How to export Firefox's history to a text file
Je ne sais pas si on peu adpater le bookmarklet (javascript) en VBA?
ou s'en inspirer
 
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

bonjour cher Staple



Si le fichier est affiché dans la feuille de calcul:


Code:
Sub ExtraireURL1()
Dim Cell As Range
Dim Place As Integer, Fin As Integer, Debut As String
Dim i As Integer
 
On Error GoTo Fin
 
For Each Cell In Sheets("Feuil1").Range("A1:A" & _
    Sheets("Feuil1").Range("A65536").End(xlUp).Row)
    Debut = 1
 
    Do While InStr(Debut, Cell.Value, "http") <> 0
        Place = InStr(Debut, Cell.Value, "http")
        Fin = InStr(Place, Cell.Value, ")")
        i = i + 1
 
        'si l'url est la premiere chaine de la ligne
        If Place = 0 Then
            'place les Url dans la Feuil2
            Sheets("Feuil2").Cells(i, 1) = Left(Cell.Value, Fin)
            Else
            Sheets("Feuil2").Cells(i, 1) = Mid(Cell.Value, Place, Fin - Place)
        End If
 
    Debut = Fin
    Loop
 
Next Cell
 
Fin:
End Sub



un deuxième exemple en lisant directement dans le fichier .dat

Code:
Sub ExtraireURL2()
    Dim CibleLigne As String
    Dim Place As Integer, Fin As Integer, Debut As String
    Dim i As Integer
 
    On Error GoTo Fin
 
    Open "C:\Documents and Settings\...\Firefox\...\history.dat" For Input As #1
        Do While Not EOF(1)
 
            Line Input #1, CibleLigne
            Debut = 1
 
            Do While InStr(Debut, CibleLigne, "http") <> 0
                Place = InStr(Debut, CibleLigne, "http")
                Fin = InStr(Place, CibleLigne, ")")
                i = i + 1
 
                'si l'url est la premiere chaine de la ligne
                If Place = 0 Then
                    'place les Url dans la Feuil2
                    Sheets("Feuil2").Cells(i, 2) = _
                        Left(CibleLigne, Fin)
                    Else
                    Sheets("Feuil2").Cells(i, 2) = _
                        Mid(CibleLigne, Place, Fin - Place)
                End If
 
            Debut = Fin
            Loop
        Loop
    Close #1
 
Fin:
End Sub



ps
j'en suis resté à la version 1.5.0.4 de firefox, il est donc possible que le format du fichier histoty.dat ai changé depuis ...



Bon week end
MichelXld
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Bonjour MichelXLD


Quelle vitesse de réaction !!!! :eek:


Je vais tester ton code de ce pas.


Merci.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Re


Pour infos:

Voici le debut de history.dat

Comme vous pouvez le voir
Ce qui pose problème ce sont ces chaines de caractères en gras

Certaines representent des dates

Et c'est la que se trouve le challenge

Arriver à traduire par VBA

Ce qu'arrive à faire l'utilitaire Dork.exe



// <!-- <mdb:mork:z v="1.4"/> -->
< <(a=c)> // (f=iso-8859-1)
(8A=Typed)(8B=LastPageVisited)(8C=ByteOrder)
(80=ns:history:db:row:scope:history:all)
(81=ns:history:db:table:kind:history)(82=URL)(83=Referrer)
(84=LastVisitDate)(85=FirstVisitDate)(86=VisitCount)(87=Name)
(88=Hostname)(89=Hidden)>

<(80=LE)(81=http://www.google.fr/)(3D4D=1193079657990000)(82
=1192200121110000)(83=google.fr)(84=G$00o$00o$00g$00l$00e$00)(37E3=214)
(85
=http://www.google.fr/search?hl=fr&q=excel&btnG=Recherche+Google&meta=)
(3D4E=1193079663380000)(86=1192200129510000)(87
=e$00x$00c$00e$00l$00 $00-$00 $00R$00e$00c$00h$00e$00r$00c$00h$00e$00 $00G\
$00o$00o$00g$00l$00e$00)(2DCD=16)(88=http://www.excel-downloads.com/)
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Re


-> MichelXLD

ExtraireURL1()
sur un fichier de plus de 30000 lignes

a extrait que trois lignes en feuil2

Je retourne tester.

ExtraireURL2() meme résultat seulement 3 lignes extraites


Sans la gestion d'erreur

Erreur 1004 sur ces lignes

Sheets("Feuil2").Cells(i, 2) = _
Mid(CibleLigne, Place, Fin - Place)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Re

edit: j'essaye de comprendre ce qu'on trouve dans ce fichier txt

(et la ca se corse, help needed)

Mais le format est longuement décrit.

le premier lien celui de mon edit semble plus complet : des infos ici sur le format mork

File::Mork - a module to read Mozilla URL history files - search.cpan.org
(en anglais)

Malheureusement je ne connais pas le langage perl

Mais je suppose que VBA peut s'en tirer sur ce coup là non?
 
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

rebonsoir


j'ai effectivement été un peu vite.
une autre approche (pour les dates et le filtrage on verra plus tard)


Code:
    Dim CibleLigne As String
    Dim Fichier As String, Resultat As String
    Dim Valeur As Double
    Dim Place As Double, Fin As Double, Debut As Double
    Dim i As Integer
 
    Fichier = "C:\Documents and Settings\...\Firefox\...\history.dat"
 
    Open Fichier For Input As #1
        Valeur = FileLen(Fichier)
        CibleLigne = Input(Valeur, 1)
    Close 1
 
    Debut = 1
    Do While InStr(Debut, CibleLigne, "http") <> 0
        Place = InStr(Debut, CibleLigne, "http")
        Fin = InStr(Place, CibleLigne, ")")
        Resultat = Replace(Replace(Mid(CibleLigne, Place, Fin - Place), _
            vbCrLf, ""), "\", "")
 
        If InStr(1, Resultat, "pagead2.googlesyndication.com") = 0 Then
            i = i + 1
            'place les Url dans la Feuil2
            Worksheets("Feuil2").Cells(i, 2) = Resultat
        End If
    Debut = Fin
    Loop


Bonne soirée
MichelXld
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Rebonsoir


(et merci de ton interet et de ta participation)

Ta nouvelle mouture

génére : Erreur6 Dépacement de capacité


Le fichier *.dat combien plus de 40000 lignes

Je vais essayer avec un fichier plus petit.

avec 100 lignes OK pas de problèmes
 
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

rebonsoir


La suite...
par contre je n'ai pas encore compris les transformer en format compréhensible


Code:
    Dim CibleLigne As String
    Dim Fichier As String, Resultat As String
    Dim Valeur As Double
    Dim Place As Double, Fin As Double, Debut As Double
    Dim x As Double, y As Double
    Dim i As Integer
 
    Fichier = "C:\Documents and Settings\...\Firefox\...\history.dat"
    
    Open Fichier For Input As #1
        Valeur = FileLen(Fichier)
        CibleLigne = Input(Valeur, 1)
    Close 1
 
    Debut = 1
    Do While InStr(Debut, CibleLigne, "http") <> 0
        Place = InStr(Debut, CibleLigne, "http")
        Fin = InStr(Place, CibleLigne, ")")
        Resultat = Replace(Replace(Mid(CibleLigne, Place, Fin - Place), _
            vbCrLf, ""), "\", "")
        
        If InStr(1, Resultat, "pagead2.googlesyndication.com") = 0 Then
            i = i + 1
            'place les Url dans la Feuil2
            Worksheets("Feuil2").Cells(i, 1) = Resultat
            
            x = InStr(Fin, CibleLigne, "=")
            y = InStr(x, CibleLigne, ")")
            
            If IsNumeric(Mid(CibleLigne, x + 1, y - x - 1)) Then _
                Worksheets("Feuil2").Cells(i, 2) = _
                "'" & Mid(CibleLigne, x + 1, y - x - 1)
        End If
    Debut = Fin
    Loop
    
    Columns("A:B").AutoFit



Bonne soirée
MichelXld
 

Spitnolan08

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Bonsoir,

Un passage éclair car je n'ai toujours pas compris ce que tu cherches à faire Stapple...

Je n'ai aucune trace d'un fichier history.dat que ce soit avec le chemin :
C:\Documents and Settings\...\Firefox\...\history.dat
ou ailleurs!

Michel nous dit utiliser une vieille version, dont acte. Toi aussi Stapple ?
La mienne est la dernière en date.

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Désolé (m'étais endormi )

edit: d'atres infos ici
Mork Structure - MDC

je viens de me réveiler (j 'étais dans le fauteuil) :eek:


Version de Firefox -la dernière: 2.0.0.8

-> Spitnolan08: je veux faire en VBA ce que fait Dork.exe
(utilitaire cité dans mon premier message)


Ce que je veux faire:
Export en txt de history.dat avant effacement pour maintenance du PC

Le mien dernièrement faisait 2.79 Mo.

Donc en le transformant en fichier intelligible (avec les champs Dates décodées) , cela me permet ensuite d'effacer mon historique
(tout en préservant dans un fichier txt mes surfs)

Et c'est juste pour le plaisir de VBAyer et de vous lire que j'essaye
de réaliser ce VBA Mork File reader.

Et pour utiliser la puissance de VBA en "décodant" le format mork
puisque on a la strucrure du fichier (dasn les liens précédemment cités)

Mon History.dat est dans :
C:\WINDOWS\Application Data\Mozilla\Firefox\Profiles\6sfzzc05.default
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Re

Merci à toi Spitnolan08 de rejondre ce post

Merci à MichelXLD pour sa promptitude vbaistique


edit :->Michel>XLD: ta dernière version OK
(sur un Pentium 500Mhz, W98SE, XL2000, pourtaitrer un fichier
de + 40000 lignes , une vingtaine de secondes)


--> Quand je parle de format compréhensible, c'avoir le fichier txt avec cette structure:

DATE 1er accès | URL | DATE dernir accès

edit :le code de Michel XLD donne --> (sasn les guillemets)
| ""http://www.google.fr| 1193079657990000 |
""http://www.google.fr/search?hl=fr&q=excel&btnG=Recherche+Google&meta=|1193079663380000


Dans le fichier original :

<(80=LE)(81=http://www.google.fr/)(3D4D=1193079657990000)(82
=1192200121110000)(83=google.fr)(84=G$00o$00o$00g$00l$00e$00)(37E3=214)

En bleu: date (First Date visited) je crois)
En vert: date (Last Date visited

Vous serez d'accord pour dire que c'est pas intelligible.

Malheureusement je ne connais pas non plus le C++
http://www.scalingweb.com/downloads/MorkParser-1.0.zip (open source)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Re

DEBUT EDIT ce matin 6h19: ci joint une première version incluant le code de MichelXLD
(j'ai ajouté la selection/copie d'history.dat en test.txt dans c:\temp)
FIN EDIT


Pour être plus clair (voic le début de history.dat)
// <!-- <mdb:mork:z v="1.4"/> -->
< <(a=c)> // (f=iso-8859-1)
(8A=Typed)(8B=LastPageVisited)(8C=ByteOrder)
(80=ns:history:db:row:scope:history:all)
(81=ns:history:db:table:kind:history)(82=URL)(83=Referrer)
(84=LastVisitDate)(85=FirstVisitDate)(86=VisitCount)(87=Name)
(88=Hostname)(89=Hidden)>
<(80=LE)(81=http://www.google.fr/)(3D4D=1193079657990000)(82
=1192200121110000)(83=google.fr)(84=G$00o$00o$00g$00l$00e$00)(37E3=214)
(85
=http://www.google.fr/search?hl=fr&q=excel&btnG=Recherche+Google&meta=)
(3D4E=1193079663380000)(86=1192200129510000)(87
=e$00x$00c$00e$00l$00 $00-$00 $00R$00e$00c$00h$00e$00r$00c$00h$00e$00 $00G\
$00o$00o$00g$00l$00e$00)(2DCD=16)(88=http://www.excel-downloads.com/)
(89=1192200133300000)
Donc le but maintenant est de décoder ces chaines hexadécimales si j'ai bien compris toutes les docs précédentes.

(L'extraction des URL étant OK --> merci MichelXLD)
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Bonjour Stapple,

Je viens de regarder à nouveau mes dossiers et j'ai enfin trouvé ton fichier (Enfin le mien...) Je ne comprends pas pourquoi je l'ai trouvé aujourd'hui et pas hier... :confused: D'autant que maintenant mon PC me trouve une liste de fichiers ou dossiers history alors qu'hier nada!:cool:
chez moi :
C:\Documents and Settings\...\ApplicationData\Mozilla\Firefox\Profiles\default.tee

Mais quelle utilité de vouloir sauvegarder ce fichier sous une autre forme, si ce n'est le plaisir vbaistique ? (J'aime bien comprendre la finalité de ce que je fais...)

Bon week-end
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Challenge: création d'un dork file reader [Historique Firefox]

Bonjour Spitnolan

Le but comme dit plus bas dans le fil est de: ( ;) )
Lien supprimé

exporter dans un format texte exploitable
(cad lisible pour un cerveau humain)
le fichier history.dat de Firefox à l'aide d'Excel et VBA

et ceci afin de pouvoir régulièrement Effacer l'historique de Firefox
(quand ce fichier *.dat devient énorme)

L'utilitaire que je cite plus bas : dork.exe fait cela trés bien

Et effectivement c'est d'abord pour le plaisir d'utiliser VBA et mettre les sympatiques forumeurs à contribution.


A l'heure actuelle:

La macro de MichelXLD extrait mes URL
mais il reste à décoder les dates encodées selon les normes
du format mork

Ce format est explicité dans les différents liens que j'ai cités précédemment

Voir également pour message précédent (avec les jolies couleurs)

Merci en tout cas de ton intérêt
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal