Tôi muốn viết một chương trình đơn giản cho thấy hoạt động internet của tôi trong một khoảng thời gian (trang web mà tôi đã truy cập, bao nhiêu lần vv). Tôi chủ yếu sử dụng trình duyệt Google Chrome. Tôi phát hiện Chrome lưu trữ lịch sử trình duyệt tại vị trí này - C: \ Documents and Settings \ Cài đặt cục bộ \ Dữ liệu ứng dụng \ Google \ Chrome \ Dữ liệu người dùng \ Mặc định (vui lòng sửa tôi nếu tôi sai). Làm thế nào tôi có thể mở các tập tin lịch sử? Họ không có bất kỳ phần mở rộng tập tin. Tôi không thể mở bằng notepad, trình duyệt SQLite. Làm cách nào để truy cập dữ liệu này theo chương trình? Tôi muốn biết đó là định dạng tập tin và làm thế nào để đọc nó bằng cách sử dụng một ngôn ngữ lập trình như C#.Cách truy cập lịch sử trình duyệt Google Chrome theo lập trình trên máy cục bộ
Trả lời
Nó chỉ là một cơ sở dữ liệu SQlite 3, tôi đã có thể mở nó thành công (mặc dù tất nhiên bạn không thể mở một cơ sở dữ liệu bị khóa của một trình duyệt đang chạy).
Tôi biết Safari sử dụng Binary PLists cho lịch sử của nó (và SQLite cho bộ nhớ cache của nó). Có thể Chrome cũng đang làm như vậy không?
Để xem cơ sở dữ liệu sqlite (là chỉ số lịch sử Chromium), tôi đã ưu tiên sqlitebrowser. Nó hoàn toàn miễn phí và hoạt động trên Windows, Mac và Linux. An fave tất cả thời gian cho tôi.
Đây là lớp tôi đã tạo để đọc dữ liệu duyệt web từ Google chrome. Hầu hết mã tôi nhận được từ here nhưng tôi đã chỉnh sửa nó để thêm hỗ trợ cho Google Chrome. Bạn cũng có thể muốn tải xuống SQLite cho .Net từ here và thêm tham chiếu vào System.Data.Sqlite.
class GoogleChrome
{
public List<URL> URLs = new List<URL>();
public IEnumerable<URL> GetHistory()
{
// Get Current Users App Data
string documentsFolder = Environment.GetFolderPath
(Environment.SpecialFolder.ApplicationData);
string[] tempstr = documentsFolder.Split('\\');
string tempstr1 = "";
documentsFolder += "\\Google\\Chrome\\User Data\\Default";
if (tempstr[tempstr.Length - 1] != "Local")
{
for (int i = 0; i < tempstr.Length - 1; i++)
{
tempstr1 += tempstr[i] + "\\";
}
documentsFolder = tempstr1 + "Local\\Google\\Chrome\\User Data\\Default";
}
// Check if directory exists
if (Directory.Exists(documentsFolder))
{
return ExtractUserHistory(documentsFolder);
}
return null;
}
IEnumerable<URL> ExtractUserHistory(string folder)
{
// Get User history info
DataTable historyDT = ExtractFromTable("urls", folder);
// Get visit Time/Data info
DataTable visitsDT = ExtractFromTable("visits",
folder);
// Loop each history entry
foreach (DataRow row in historyDT.Rows)
{
// Obtain URL and Title strings
string url = row["url"].ToString();
string title = row["title"].ToString();
// Create new Entry
URL u = new URL(url.Replace('\'', ' '),
title.Replace('\'', ' '),
"Google Chrome");
// Add entry to list
URLs.Add(u);
}
// Clear URL History
DeleteFromTable("urls", folder);
DeleteFromTable("visits", folder);
return URLs;
}
void DeleteFromTable(string table, string folder)
{
SQLiteConnection sql_con;
SQLiteCommand sql_cmd;
// FireFox database file
string dbPath = folder + "\\History";
// If file exists
if (File.Exists(dbPath))
{
// Data connection
sql_con = new SQLiteConnection("Data Source=" + dbPath +
";Version=3;New=False;Compress=True;");
// Open the Conn
sql_con.Open();
// Delete Query
string CommandText = "delete from " + table;
// Create command
sql_cmd = new SQLiteCommand(CommandText, sql_con);
sql_cmd.ExecuteNonQuery();
// Clean up
sql_con.Close();
}
}
DataTable ExtractFromTable(string table, string folder)
{
SQLiteConnection sql_con;
SQLiteCommand sql_cmd;
SQLiteDataAdapter DB;
DataTable DT = new DataTable();
// FireFox database file
string dbPath = folder + "\\History";
// If file exists
if (File.Exists(dbPath))
{
// Data connection
sql_con = new SQLiteConnection("Data Source=" + dbPath +
";Version=3;New=False;Compress=True;");
// Open the Connection
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
// Select Query
string CommandText = "select * from " + table;
// Populate Data Table
DB = new SQLiteDataAdapter(CommandText, sql_con);
DB.Fill(DT);
// Clean up
sql_con.Close();
}
return DT;
}
}
Lớp cho URL:
class URL
{
string url;
string title;
string browser;
public URL(string url, string title, string browser)
{
this.url = url;
this.title = title;
this.browser = browser;
}
public string getData()
{
return browser + " - " + title + " - " + url;
}
}
Nó làm việc như một nét duyên dáng cho tôi. Hy vọng nó sẽ giúp
Vì áp phích ban đầu được yêu cầu cho một chương trình đơn giản, ở đây nó được. Chương trình được điều chỉnh từ trang web không gian làm việc java (như được ghi trong mã). Bạn sẽ cần phải thay đổi đối số cho getConnection()
để trỏ đến nơi tệp lịch sử cư trú trên máy của bạn. Chương trình biên dịch và chạy trên môi trường Linux 2.6.39 của tôi:
/**
Adapted from http://www.javaworkspace.com/connectdatabase/connectSQLite.do
Date: 09/25/2012
Download sqlite-jdbc-<>.jar from http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC, and
compile: javac GetChromiumHistory.java
run: java -classpath ".:sqlite-jdbc-3.7.2.jar" GetChromiumHistory
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* @author www.javaworkspace.com
*
*/
public class GetChromiumHistory
{
public static void main (String[] args)
{
Connection connection = null;
ResultSet resultSet = null;
Statement statement = null;
try
{
Class.forName ("org.sqlite.JDBC");
connection = DriverManager
.getConnection ("jdbc:sqlite:/home/username/.config/chromium/Default/History");
statement = connection.createStatement();
resultSet = statement
.executeQuery ("SELECT * FROM urls where visit_count > 100");
while (resultSet.next())
{
System.out.println ("URL [" + resultSet.getString ("url") + "]" +
", visit count [" + resultSet.getString ("visit_count") + "]");
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
resultSet.close();
statement.close();
connection.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
Có một chương trình mã nguồn mở được gọi là Hindsight (https://github.com/obsidianforensics/hindsight) để phân tích lịch sử duyệt web trong Chrome. Trong khi chương trình khá lớn và phức tạp, nó truy cập các tệp SQLite khác nhau bằng cách sử dụng các truy vấn SQL, có thể rút ra và sử dụng độc lập, hoặc trong trình duyệt SQLite hoặc chương trình khác.
Một ví dụ về một cho v30 Chrome + cơ sở dữ liệu lịch sử là:
SELECT urls.id, urls.url, urls.title, urls.visit_count, urls.typed_count, urls.last_visit_time, urls.hidden, urls.favicon_id, visits.visit_time, visits.from_visit, visits.visit_duration, visits.transition, visit_source.source
FROM urls JOIN visits ON urls.id = visits.url
LEFT JOIN visit_source ON visits.id = visit_source.id
Có rất nhiều nhiều truy vấn SQL cho cơ sở dữ liệu Chrome khác nhau, cũng như các phiên bản khác nhau của Chrome.
- 1. Truy cập API Google Analytics mà không có trình duyệt cục bộ trong python
- 2. Tôi làm cách nào để truy cập Lịch sử Tệp Windows 8 theo cách lập trình?
- 3. Truy cập theo lập trình các dấu trang của Google Chrome
- 4. Tôi làm cách nào để xem trang web chạy trên máy chủ cục bộ trên máy trong trình duyệt chrome?
- 5. Làm cách nào để đọc bộ nhớ cache của Chrome và Firefox theo lập trình trên máy Mac?
- 6. Làm cách nào để xóa bộ nhớ cache của trình duyệt theo lập trình trên iPhone?
- 7. Cách truy cập hệ thống tệp cục bộ từ trình duyệt WebKit bằng JavaScript?
- 8. cách truy cập IFA từ trình duyệt trên iOS6
- 9. Dấu trang trình duyệt Chrome trên android
- 10. Cách truy cập trang web theo lập trình trong java
- 11. Truy xuất dữ liệu từ bộ nhớ cục bộ của trình duyệt bằng cách sử dụng C#
- 12. Dừng các trình duyệt lưu trữ lịch sử của một lần truy cập
- 13. Xóa lịch sử trình duyệt bằng cách sử dụng jQuery
- 14. Cách tạo điểm truy cập lập trình
- 15. Dấu vết trên bảng điều khiển Chrome/Trình duyệt
- 16. Truy cập iSight theo chương trình?
- 17. Tiến trình lưu trữ theo lịch trình trên máy chủ SQL
- 18. Android đọc lịch sử trình duyệt
- 19. Truy cập đường dẫn đến app.config theo lập trình
- 20. Truy cập tên tài nguyên theo lập trình
- 21. Cập nhật Android OS theo lập trình
- 22. Truy cập các tệp cục bộ thông qua tiện ích mở rộng của Google chrome?
- 23. Truy cập máy tính xách tay Bộ điều khiển quạt nhúng có lập trình?
- 24. Làm cách nào để truy cập bộ nhớ sử dụng theo chương trình qua JMX?
- 25. Truy cập các Biến cục bộ Bên trong Trình tạo Máy chủ Python
- 26. cách tải lịch sử trình duyệt trong Android?
- 27. Amazon S3 Lập trình Truy cập Dữ liệu Sử dụng
- 28. Chạy trình duyệt selen trên máy chủ (Flask/Python/Heroku)
- 29. Lưu trữ cục bộ google chrome ở đâu?
- 30. Chuyển tiếp trang jQuery và lịch sử trình duyệt
Bạn đã sử dụng điều gì để mở thành công? – Arjang
@Arjang Một khách hàng sqlite3, rõ ràng là – wRAR
Cảm ơn bạn đã trả lời – Arjang