IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[Mozilla Firefox] Atteindre les fichiers du cache


Sujet :

VB.NET

  1. #1
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut [Mozilla Firefox] Atteindre les fichiers du cache
    Bonjour,

    je voudrais savoir si il est possible d'obtenir l'url du cache (mozilla) de facon dynamique comme pour IE. pour IE j'utilise la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private DossierIE As String = Environment.GetFolderPath(SpecialFolder.InternetCache)
    Merci

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    j'ai bien trouvé des infos concernant le cache Firefox, mais je ne pense pas que je puisse m'en servir dynamiquement. par exemple mon répertoire de cache c'est :

    C:\Documents and Settings\user\Local Settings\Application Data\Mozilla\Firefox\Profiles\f9r3rjqv.default\Cache
    les caractère gras sont aléatoire il me semble. De plus les fichiers qui sont dans le répertoire cache ne sont pas exploitables car ils n'ont pas d'extention. il doit avoir un moyen d'y accéder autrement ou de déchiffrer ces fichiers car lorsque l'on tape about:cache?device=disk dans la barre d'adresse de firfox on obtiens toutes les informations sur les fichiers du caches.

    Est ce que quelqu'un a déjà bidouillé un truc comme ca ??

    Merci

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    hum, j'avais eu un jour à obtenir le dossier de cache de firefox et j'avais fait comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    try
                {
                    string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
                    + @"\Mozilla\Firefox\Profiles";
     
                    if (!Directory.Exists(dir))
                    {
                        Console.WriteLine("Dossier de Firefox introuvable");
                    }
     
                    string s_profile;
                    foreach (string dir_ in Directory.GetDirectories(dir))
                    {
                        s_profile = dir_;
     
                        if (!File.Exists(s_profile + "\\prefs.js"))
                        {
                            Console.WriteLine("Préférences introuvable pour le profile " + dir_);
                        }
                        else
                        {
                            string js = File.ReadAllText(s_profile + "\\prefs.js", Encoding.Default);
                            int idx = js.IndexOf("browser.cache.disk.parent_directory");
                            if (idx < 0)
                            {
                                Console.WriteLine("Cache non définis pour " + dir_);
                            }
                            else
                            {
                                idx = idx + "browser.cache.disk.parent_directory".Length + 1;
                                string val = null;
                                while (js.Length > idx)
                                {
                                    if (val == null)
                                    {
                                        if (js[idx] == '\"')
                                            val = "";
                                    }
                                    else if (js[idx] == '\"')
                                    {
                                        if (val.Length > 0 && val[val.Length - 1] == '\\')
                                            val += "\"";
                                        else
                                            break;
                                    }
                                    else if (js[idx] == '\\')
                                    {
                                        if (js[idx + 1] == '\\')
                                        {
                                            val += "\\";
                                            idx++;
                                        }
                                        else
                                            throw new InvalidOperationException("Profile : " + dir_ + ", chemin non supporté");
     
                                    }
                                    else
                                        val += js[idx];
     
                                    idx++;
                                }
     
                                Console.WriteLine(String.Format("Profile {0}, dossier : {1}",
                                    dir_, val));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Ce qui donne en VB.NET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Try 
        Dim dir As String = (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\Mozilla\Firefox\Profiles")
        If Not Directory.Exists(dir) Then
            Console.WriteLine("Dossier de Firefox introuvable")
        End If
        Dim s_profile As String
        For Each dir_ As String In Directory.GetDirectories(dir)
            s_profile = dir_
            If Not File.Exists((s_profile + "\\prefs.js")) Then
                Console.WriteLine(("Pr�f�rences introuvable pour le profile " + dir_))
            Else
                Dim js As String = File.ReadAllText((s_profile + "\\prefs.js"), Encoding.Default)
                Dim idx As Integer = js.IndexOf("browser.cache.disk.parent_directory")
                If (idx < 0) Then
                    Console.WriteLine(("Cache non d�finis pour " + dir_))
                Else
                    idx = (idx  _
                                + ("browser.cache.disk.parent_directory".Length + 1))
                    Dim val As String = Nothing
     
                    While (js.Length > idx)
                        If (val = Nothing) Then
                            If (js(idx) = Microsoft.VisualBasic.ChrW(92)) Then
                                val = ""
                            End If
                        ElseIf (js(idx) = Microsoft.VisualBasic.ChrW(92)) Then
                            If ((val.Length > 0)  _
                                        AndAlso (val((val.Length - 1)) = Microsoft.VisualBasic.ChrW(92))) Then
                                val = (val + "\""")
                            Else
                                'TODO: Warning!!! break;Else
                            End If
                        ElseIf (js(idx) = Microsoft.VisualBasic.ChrW(92)) Then
                            If (js((idx + 1)) = Microsoft.VisualBasic.ChrW(92)) Then
                                val = (val + "\\")
                                idx = (idx + 1)
                            Else
                                Throw New InvalidOperationException(("Profile : "  _
                                                + (dir_ + ", chemin non support�")))
                            End If
                        Else
                            val = (val + js(idx))
                        End If
                        idx = (idx + 1)
     
                    End While
                    Console.WriteLine(String.Format("Profile {0}, dossier : {1}", dir_, val))
                End If
            End If
        Next
    Catch ex As Exception
        Console.WriteLine(ex.ToString)
    End Try
    Tu auras sans doute quelques modifs à faire car c'est un traducteur et il faut pas faire confiance

  5. #5
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    ok, merci Aspic pour la convertion en VB .NET je venais juste de la finir quand j'ai vu que tu avais posté.

    Sinon ca fonctionne pas encore super bien. d'autant plus que par défaut il n'y a pas d'entrée browser.cache.disk.parent_directory dans le fichier prefs.js.

    Bref je peux me débrouilller je pense avec cela, mais un autre gros problème s'annonce... en effet le cache Firefox est comme qui dirait crypté. Enfin en tout cas il en a tout l'air. j'ai fait pas mal de recherche sur le sujet mais j'avoue que je n'ai pas trouvé grand chose d'intéressant. il existe pourtant un plugin Firefox appeler cacheViewer, mais je ne sais pas comment il fonctionne.

    J'émets une hypothèse qui est la suivante : lors du démarage de Firefox, le cache est chargé en mémoire afin d'accélérer l'accès. le programme cacheViewer regarde dans la mémoire de firefox pour voir ce qu'il y trouve. je remet très fortement mon hypothèse en question à savoir qu'il est difficile d'imaginer par expemple le chargement de 500 Mo de cache en mémoire.

    je vais télécharger les source FireFox pour voir comment est gérer le about:cache. ce n'est pas gagné je préfère prévenir.

    J'ai également vu pas mal d'article parlant de XUL Cache, je ne sais pas trop à quoi cela correspond. Il y a très peu d'information sur la gestion du cache firefox sur internet.

    Merci de partager avec moi les informations que vous avez... si vous en avez.

    Maxwell

  6. #6
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    j'ai téléchargé les sources, j'ai commencé à regarder un peu partout. j'ai vu que FF utilisait SQLite pour stocker des informations. je ne sais pas encore quoi. j'aurrais bien voulu me connecter a cette base, mais je n'arrive pas à trouvé ou est située la connection :

    dans le fichier mozSqlConnectionSqlite.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mozSqlConnectionSqlite::Init(const nsAString& aHost,
                                 PRInt32 aPort,
                                 const nsAString& aDatabase,
                                 const nsAString& aUsername,
                                 const nsAString& aPassword)
    Ce serait vraiment super si yavait déjà quelqu'un qui s'était penché sur le problème et serait m'expliquer comment est géré le cache mozilla. merci

    PS : un lien intéressant

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    au fait, normallement il y a 2 caches sur firefox, un en mémoire ( qui doit faire 16 Mo ) et l'autre sur le disque ( et il n'est pas normal qu'il ne soit pas présent, ou alors ça ralentit considérablement le réaffichage des pages ) qui lui fait par défaut 50 Mo je crois ...

  8. #8
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Citation Envoyé par smyley
    au fait, normallement il y a 2 caches sur firefox, un en mémoire ( qui doit faire 16 Mo ) et l'autre sur le disque ( et il n'est pas normal qu'il ne soit pas présent, ou alors ça ralentit considérablement le réaffichage des pages ) qui lui fait par défaut 50 Mo je crois ...
    En effet ... après de longue heures de lecture je suis parvenu à obtenir quelques informations... cependant les informations concernant la gestion du cache reste très très flous.

    Je poursuis mes recherches. je me penche sur une autre théorie : firefox utilise un fichier js (javascript) pour parser les fichiers du cache.

    reste a voir... à chaque fois c'est des supositions...

  9. #9
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut

    le cache est décrit par les fichiers
    _CACHE_MAP_
    _CACHE_001_
    _CACHE_002_
    _CACHE_003_
    j'en suis sur à 99,5 %, par contre pour le format ça j'en n'ai aucune idée. Peut être que si tu cherches ces noms de fichiers dans le code source de firefox tu trouvera quelque chose ...

  10. #10
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Citation Envoyé par smyley

    le cache est décrit par les fichiers
    _CACHE_MAP_
    _CACHE_001_
    _CACHE_002_
    _CACHE_003_
    j'en suis sur à 99,5 %, par contre pour le format ça j'en n'ai aucune idée. Peut être que si tu cherches ces noms de fichiers dans le code source de firefox tu trouvera quelque chose ...
    De ce que j'ai pu lire ... le cache est priotérement en mémoire. Dès qu'il dépasse la taille mémoire imparti par FF il est archivé sur le disque ... d'où les :

    CACHE_001
    CACHE_002
    ...

    puis dès que les fichiers icrémenté atteingne une certaine taille ils sont stockés dans un autre fichier. je voudrais vraiment avoir de la doc sur ca ... le truc c'est que pour ouvrir exploiter les sources de FF 2.0.0.5 il faut installer VC6 et j'ai la fleme .... lol

    je vais continuer à scruter les sources.

  11. #11
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    je pense avoir trouvé dans quel fichier c'est gérer ... faut que j'analyse tout ca.

    pour info voici le fichier concerné : pragma.c

    je vous tiens au courant ... si vous avez des éléments d'info n'hésitez pas

Discussions similaires

  1. Les images ne s'affiche plus dans Mozilla Firefox
    Par sondo dans le forum Windows XP
    Réponses: 17
    Dernier message: 19/11/2008, 22h46
  2. Réponses: 0
    Dernier message: 06/05/2008, 13h39
  3. Réponses: 8
    Dernier message: 06/12/2007, 19h55
  4. Comment visualiser les plugins sous Mozilla Firefox 2.0
    Par Olivier Regnier dans le forum Firefox
    Réponses: 1
    Dernier message: 10/11/2006, 00h17
  5. Afficher les fichiers cachés avec apache ?
    Par Michaël dans le forum Apache
    Réponses: 2
    Dernier message: 20/12/2004, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo