2011-09-04 119 views
8

是否可以使用C#從chrome/firefox本地存儲檢索數據?使用C#從瀏覽器本地存儲中檢索數據

+0

從哪個瀏覽器? Chrome,FireFox,IE,...?從哪個版本? –

+0

我更喜歡從鉻版本,從任何版本可用(最新版本是好的)。但從任何版本的Firefox /鉻它將是完美的(我猜如果它在鉻版本X中工作,它可以在比X更高的任何版本上工作) – adi

回答

9

聲明:我已經在我運行Google Chrome 13.0.782.220的Windows 7 x64上進行了測試。這裏提供的信息是我自己研究的結果,並不是用於檢索這些信息的官方方式或API。使用風險自負。此外,如果Chrome更改存儲此信息的方式,此處介紹的技術可能會與以後的任何版本發生衝突。


因此,Google Chrome使用SQLite來保存本地存儲數據。您可以使用System.Data.SQLite受管驅動程序從您的.NET應用程序讀取它。如果您在Windows 7上運行(不知道別人因爲這是一個我和可測試),您將有以下文件夾:

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

此文件夾將包含與.localstorage擴展多個文件。每個文件都適用於不同的站點。例如對於StackOverflow我有http_stackoverflow.com_0.localstorage,但當然這個命名是完全武斷的,你不能依賴它。每個文件都代表一個SQLite數據庫。

我注意到這個數據庫包含一個名爲ItemTable的表,其中有兩個字符串列keyvalue

所以要讀出的值是發送一個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

非常感謝!你真的幫助我。 – adi

相關問題