2011-09-04 29 views
8

È possibile recuperare i dati dalla memoria locale chrome/firefox utilizzando C#?Recupera i dati dalla memoria locale del browser utilizzando C#

+0

Da quale browser? Chrome, FireFox, IE, ...? Da quale versione? –

+0

Preferirei da chrome, da qualsiasi versione disponibile (l'ultima versione va bene). ma da qualsiasi versione di firefox/chrome sarebbe perfetto (suppongo che se funziona in versione cromo x funzionerebbe su qualsiasi versione superiore a x corretta?) – adi

risposta

9

Disclaimer: Ho provato questo sul mio Windows 7 x64 con Google Chrome 13.0.782.220 al momento. Le informazioni fornite qui sono il risultato della mia ricerca personale e non sono un modo ufficiale o API per recuperare queste informazioni. Utilizzare a proprio rischio. Anche la tecnica qui presentata potrebbe rompersi con qualsiasi versione futura se Chrome cambia il modo di memorizzare queste informazioni.


Quindi, Google Chrome utilizza SQLite per mantenere i dati di archiviazione locali. È possibile utilizzare il driver gestito System.Data.SQLite per leggerlo dall'applicazione .NET. Se si esegue su Windows 7 (non so per gli altri come questo è quello che ho e può provare), si avrà la seguente cartella:

c:\Users\SOMEUSERNAME\AppData\Local\Google\Chrome\User Data\Default\Local Storage\ 

Questa cartella conterrà più file con l'estensione .localstorage. Ogni file è per sito diverso. Ad esempio per StackOverflow ho http_stackoverflow.com_0.localstorage ma ovviamente questa denominazione è totalmente arbitraria e non puoi fare affidamento su di essa. Ogni file rappresenta un database SQLite.

Ho notato che questo database contiene una tabella denominata ItemTable con 2 colonne di stringa denominate key e value.

Quindi, per leggere i valori si tratta di una semplice questione di invio di una query SQL:

class Program 
{ 
    static void Main() 
    { 
     using (var conn = new SQLiteConnection("Data Source=http_stackoverflow.com_0.localstorage;Version=3;")) 
     using (var cmd = conn.CreateCommand()) 
     { 
      conn.Open(); 
      cmd.CommandText = "SELECT key, value FROM ItemTable"; 
      using (var reader = cmd.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        Console.WriteLine(
         "key: {0}, value: {1}", 
         reader.GetString(reader.GetOrdinal("key")), 
         reader.GetString(reader.GetOrdinal("value")) 
        ); 
       } 
      } 
     } 
    } 
} 
+0

Grazie mille! mi aiuti davvero – adi

Problemi correlati