Страницы: 1
Just in case anybody will need it I have downloaded the latest sqlite jdbc 3.7.2 and now everything works fine.
Connection connection = null; ResultSet resultSet = null; Statement statement = null; HashMap<String, String> firefoxHashMap = new HashMap<String, String>(); try { Class.forName("org.sqlite.JDBC"); connection = DriverManager.getConnection("jdbc:sqlite:" + ffArrIndex[i]); statement = connection.createStatement(); resultSet = statement.executeQuery("SELECT * FROM moz_cookies"); while (resultSet.next()) { key = resultSet.getString("baseDomain"); if (firefoxHashMap.isEmpty()) { firefoxHashMap.put(key + firefoxLinkColor, "Id: " + resultSet.getString("id") + "\n"); } } } catch(Exception e) {}
А откуда тогда идет запуск этого кода? В среде браузера как расширение?
Теперь я внес изменение:
заменил
Components.utils.import("resource://gre/modules/Services.jsm");
на
Components.utils["import"]("resource://gre/modules/Services.jsm");
Новый ексепшин:
sun.org.mozilla.javascript.internal.EvaluatorException: identifier is a reserved word
в строчке
const { classes: Cc, interfaces: Ci } = Components;
Получаю другой ексепшин при модификации: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Components" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
[code]Components.utils["import"]("resource://gre/modules/Services.jsm");
var dbFile=Services.dirsvc.get("ProfD", Components.interfaces.nsIFile);
dbFile.append("cookies.sqlite");
var ssvc=Components.classes["@mozilla.org/storage/service;1"].getService(Components.interfaces.mozIStorageService);
var mDBConn = ssvc.openDatabase(dbFile);
var stmt=mDBConn.createStatement("select distinct host from moz_cookies order by 1");
var hosts=[];
while (stmt.step()) hosts.push(stmt.ro
Спасибо, добавил. Теперь дает ексепшин sun.org.mozilla.javascript.internal.EvaluatorException: missing name after . operator
Components.utils.import("resource://gre/modules/Services.jsm"); const { classes: Cc, interfaces: Ci } = Components; var dbFile=Services.dirsvc.get("ProfD", Ci.nsIFile); dbFile.append("cookies.sqlite"); var ssvc=Cc["@mozilla.org/storage/service;1"].getService(Ci.mozIStorageService); var mDBConn = ssvc.openDatabase(dbFile); var stmt=mDBConn.createStatement("select distinct host from moz_cookies order by 1"); var hosts=[]; while (stmt.step()) hosts.push(stmt.row.host); stmt.finalize(); mDBConn.close(); Services.console.logStringMessage(hosts.join("\n"));
Я могу запустить скрипт следующим образом с Java приложения? :
ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); engine.eval(new FileReader("script.js")); System.out.println(engine.get("hosts[1]"));
(дает ексепшин sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Services" is not defined.)
CodeGust пишетВод мои модификации, что неверно?
То, что вы пытаетесь приведенный мною код использовать в скрипте html-страницы - система безопасности не позволит вам этого сделать, т.к. это код для trusted content (для расширения, например). И Services.dirsvc.get не принимает в качестве параметра пути, этот метод принимает ключи, указывающие на спец. папки; ключ ProfD в моем примере - это и есть ключ для папки профиля. Если нужен абсолютный путь, придется действовать [url=https://developer.mozilla.org/en/Code_s
…
Спасибо! Выглядит эффективно, но я немогу заставить этот код работать.
Вод мои модификации, что неверно? Начальный код также не работает.
[code]
function readFF()
{
var dbFile=Services.dirsvc.get("C:\\Users\\MyUserName\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\q6xxxxxx.default\\", Ci.nsIFile);
dbFile.append("cookies.sqlite");
var ssvc=Cc["@mozilla.org/storage/service;1"].getService(Ci.mozIStorageService);
var mDBConn = ssvc.openDatabase(dbFile);
var stmt=mDBConn.createStatement("select distinct host from moz_cookies order by 1");
var stmt2=mDBConn.createStatement("select distinct name from moz_cookies order by 1");
var stmt3=mDBConn.createStatement("select distinct expiry from moz_cookies order by 1");
var hosts=[];
var names=[];
var expiries=[];
while (stmt.step()) {
hosts.push(stmt.row.host);
Я пишу java апплут который читает кики (cookies) FireFoxа. Как (получить доступ, если необходимо и) читать файл (базу данных) cookies.sqlite (используя Java)?
Я попробовал с драйвером org.sqlite.JDBC но безуспешно. Получил следующий ексепшен: file is encrypted or is not a database.
Также пробовал SqlJetDb и получил ексепшин "org.tmatesoft.sqljet.core.SqlJetException: NOTADB: error code is NOTADB"
Есть ли необходимым расшифровка файла куки и нужно ли получать какой либо вид доступа к нему?
Спасибо.
Страницы: 1