Программно acess история Google chrome


Я хочу проиндексировать все действия пользователей и веб-сайты в google chrome. я понимаю, что google chrome индексирует все данные в базе данных sqlLite. как я могу программно получить доступ к истории chrome web в моем собственном приложении

3 4

3 ответа:

Вам нужно загрузить соответствующую сборку со страницы SQLite downloads

Как только вы добавляете ссылку на сборку SQLite, она очень похожа на стандартную ADO.net

Вся история пользователей хранится в базе данных истории, расположенной по пути в строке подключения ниже

SQLiteConnection conn = new SQLiteConnection
    (@"Data Source=C:\Users\YourUserName\AppData\Local\Google\Chrome\User Data\Default\History");
conn.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = conn;
//  cmd.CommandText = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;";
//  Use the above query to get all the table names
cmd.CommandText = "Select * From urls";
SQLiteDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine(dr[1].ToString());
}

В приложении Windows form с инструментом Datagridview-кнопка click event

private void button1_Click(object sender, EventArgs e)
    {
        string google = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Google\Chrome\User Data\Default\History";
        string fileName = DateTime.Now.Ticks.ToString();
        File.Copy(google, Application.StartupPath + "\\" + fileName);
        using (SQLiteConnection con = new SQLiteConnection("DataSource = " + Application.StartupPath + "\\" + fileName + ";Versio=3;New=False;Compress=True;"))
        {
            con.Open();
            //SQLiteDataAdapter da = new SQLiteDataAdapter("select url,title,visit_count,last_visit_time from urls order by last_visit_time desc", con);
            SQLiteDataAdapter da = new SQLiteDataAdapter("select * from urls order by last_visit_time desc", con);
            DataSet ds = new DataSet();
            da.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
            con.Close();
        }
        try // File already open error is skipped
        {
          if (File.Exists(Application.StartupPath + "\\" + fileName))
             File.Delete(Application.StartupPath + "\\" + fileName);
        }
        catch (Exception)
        {
        }
    }

Ссылка Источник

Здесь я скопировал файл истории в путь запуска приложения, чтобы избежать ошибки SQLite "база данных заблокирована".

Используется ниже код, получающий "Windows/x86_64" в результате

   try 
   {
        Class.forName ("org.sqlite.JDBC");
        connection = DriverManager.getConnection ("jdbc:sqlite:/C:/Users/tarun.kakkar/AppData/Local/Google/Chrome/User Data/Default/History");

        statement = connection.createStatement ();
        resultSet = statement.executeQuery ("SELECT * FROM urls");

        while (resultSet.next ()) 
        {
            System.out.println ("URL [" + resultSet.getString ("url") + "]" + ", visit count [" + resultSet.getString ("visit_count") + "]");
        }
    } 

    catch (Exception e) 
    {
        e.printStackTrace ();
    }