Un fichier Excel qui espionne la navigation sur le Web (pour Internet Explorer)


C'est très vilain d'espionner...
Mais il peut quand même parfois être utile de savoir quelles pages Web ont été consultées depuis votre PC.
(je décline toute responsabilité sur les conséquences éventuelles de l'utilisation abusive de ce logiciel !!!)

Pour savoir quelles pages Web ont été consultées, il suffit de regarder l'historique du navigateur... mais l'historique peut facilement être effacé et la mémoire n'en est pas gardée indéfiniment.

Le petit programme proposé va utiliser Excel et le VBA (et les fonctions API) pour mémoriser les pages Web consultées (en fait Excel sert surtout de support au VBA-API, mais on aurait pu faire la même chose en VB).

L'opération n'est pas très simple : à intervalle de temps régulier (toutes les secondes ou toutes les deux secondes par exemple), la macro va parcourir tous les processus en cours (grace aux fonctions API) et retenir ceux qui sont relatifs à internet. Le titre des fenêtres correspondantes et la date et l'heure sont enregistrés dans un fichier Excel ou un fichier texte à chaque modification.

La macro ci-dessous donne le principe de base d'une version simple du logiciel.

Declare Function cherche_fenetre Lib "user32" Alias "FindWindowA" _
     (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Declare Function get_titre Lib "user32" Alias "GetWindowTextA" _
     (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
     (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Dim titre As String
Dim classe As String

Sub cherche_page_web()
'limiter le nombre de lignes à 30000 dans le fichier Excel
suppr = True
lin = Cells.Find("*", , , , , xlPrevious).Row
If lin > 30000 Then Rows(lin).EntireRow.Delete
Rows(3).Insert
Cells(3, 1) = Now
col = 1
poign = cherche_fenetre(0, 0)
Do While poign <> 0
titre = String(200, Chr$(0))
get_titre poign, titre, 200
titre = Left$(titre, InStr(titre, Chr$(0)) - 1)
titre = WorksheetFunction.Substitute(titre, " - Microsoft Internet Explorer", "")
Do While InStr(titre, "\") > 0 And InStr(titre, "\") < Len(titre)
titre = Right(titre, Len(titre) - InStr(titre, "\"))
Loop
classe = String(100, Chr$(0))
GetClassName poign, classe, 100
classe = Left$(classe, InStr(classe, Chr$(0)) - 1)
If classe = "IEFrame" Then
col = col + 1
Cells(3, col) = titre
End If
poign = GetWindow(poign, 2)
Loop
'si les deux lignes sont identiques, supprimer la dernière
For coll = 2 To Cells.Find("*", , , , xlByRows, xlPrevious).Column
If Cells(3, coll) <> Cells(4, coll) Then suppr = False
Next
If suppr Then Rows(3).EntireRow.Delete
Application.ScreenUpdating = True
Application.ScreenUpdating = False
End Sub

Sub lancer()
Cells.ClearContents
Cells(1) = "date"
Cells(1, 2) = "page web"
déb = Now
Application.Visible = False
Do While Now < déb + 20 / 60 / 24 'limite à 20 mn
cherche_page_web
Application.Wait Now + 2 / 3600 / 24 'lancement toutes les 2 secondes
Loop
Application Quit
End Sub


La première partie ajoute une ligne en tête de la page Excel et y inscrit la date et l'heure et la liste des pages Web affichées (la ligne est supprimée si elle est identique à la ligne suivante (celle qui a été enregistrée quelques secondes plus tôt).

La macro "lancer()" se charge de lancer la macro précédente toutes les deux secondes. L'instance d'Excel est masquée et ne sera fermée que lorsque la durée préprogrammée (20 mn) sera écoulée.

cliquez ici pour télécharger le fichier Excel (zippé)


On peut améliorer un peu le logiciel et laissant à l'utilisateur la possibilité de régler certains paramètres, en automatisant une procédure d'installation (et de désinstallation) du logiciel dans le répertoire de démarrage de Windows, en enregistrant la liste des pages dans des fichiers html (à raison d'un fichier par session Windows).
L'utilisation du programme devient très simple :
- ouvrir le fichier Excel espion_web2.xls
- régler éventuellement les paramètres
- cliquer sur "installer et lancer" (le fichier Excel peut alors être fermé)
- pour voir le résultat sur la session en cours, à partir du même classeur Excel, cliquer sur "voir le journal" (au format html).

cliquez ici pour télécharger le fichier Excel (zippé)