2011-09-04 6 views
8

を使用してデータを取得するC#を使用してchrome/firefoxローカルストレージからデータを取得することは可能ですか?ブラウザのローカルストレージからc#

+0

どのブラウザから:

だから、SQLクエリを送信するだけの簡単な作業だ値を読むには? Chrome、FireFox、IE、...?どのバージョンからですか? –

+0

私はchromeから、任意のバージョン(最新版は問題ありません)から好きです。しかし、firefox/chromeのどのバージョンからでも完璧です(chromeバージョンxで動作するかどうかは、xよりも高いバージョンであれば問題ありませんか?) – adi

答えて

9

免責事項:現時点ではGoogle Chrome 13.0.782.220を実行しているWindows 7 x64でこれをテストしました。ここで提供される情報は、私自身の研究の結果であり、この情報を取得するための公式な方法やAPIではありません。自己責任。また、Chromeがこの情報を保存する方法を変更した場合、今後のリリースでもここに示されている手法が壊れる可能性があります。


Google Chromeはローカルストレージデータを保存するためにSQLiteを使用しています。 System.Data.SQLite管理対象ドライバを使用して.NETアプリケーションから読み取ることができます。

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

このフォルダには、.localstorage拡張子を持つ複数のファイルが含まれます:あなたは、Windows 7上で実行している場合(それは私が持っている一つだとテストすることができるよう他の人のために知っていない)は、次のフォルダがあります。各ファイルは異なるサイト用です。たとえばStackOverflowの場合、私はhttp_stackoverflow.com_0.localstorageを持っていますが、もちろんこの名前は完全に任意で、あなたはそれに頼ることはできません。各ファイルはSQLiteデータベースを表します。

このデータベースには、keyvalueという2つの文字列を持つItemTableというテーブルが含まれていることに気付きました。

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

関連する問題