var imJS = {
get Ci() {
return Components.interfaces;
},
get Cu() {
return Components.utils;
},
setCookie: function setCookie(cookies) {
this.Cu.import(«resource://gre/modules/Services.jsm»);
for (var i = 0; i < cookies.length; i++) {
Services.cookies.add(cookies[i].host, cookies[i].path,
cookies[i].name, cookies[i].value, cookies[i].isSecure,
cookies[i].isHttpOnly, cookies[i].isSession, cookies[i].expiry);
};
},
getCookie: function(domain) {
this.Cu.import(«resource://gre/modules/Services.jsm»)
var services = Services.cookies.getCookiesFromHost(domain);
var listCookies = [];
while (services.hasMoreElements()) {
var cookie = services.getNext().QueryInterface(this.Ci.nsICookie2);
listCookies.push(cookie);
};
return listCookies;
},
}
// Использвоние
imJS.getCookie('vk.com'); // Получаем куки и сохраняем в json файл или как удобно на диск
// В следущем заходе берем куки с диска, переводите в массив JSON.parse()
imJS.setCookie(cookies /* Передаем массив кукис */ )
Структура этого кода мне не понятна, это не совсем яваскрипт, но можно переделать под обычные функции. По сути идет работа с менеджером куки через компоненты мозиллы и в цикле перебираются все куки по очереди. Используя getCookiesFromHost(domain); получают список всех кук конкретного домена — сайта. То есть можно даже удалять куки отдельного сайта, если это необходимо. С кодом нужно немного поковыряться, поправить, дописать и сделать для себя то что нужно.
Так же полезное можно получить из mozilla.org, правда все на английском, но кое что можно извлечь для себя.
Components.utils.import("resource://gre/modules/Services.jsm");
var cookieService = Services.cookies;
К примеру, может помочь метод удаления кукvoid remove(in AUTF8String aHost, in ACString aName, in AUTF8String aPath
, in boolean aBlocked,
in jsval aOriginAttributes);
void removeAll();
А в самом верху страницы еще есть пара строчек:
This interface is intended to be used as a service. It is implemented by the @mozilla.org/cookiemanager;1
component, but should generally be accessed via Services.cookies
Только нужно правильно его применить, видимо. Из выше указанного кода можно переделать функции, которые будут сохранять куки на диск, а при следующем заходе подгружать их. Код в таком виде как он есть, естественно работать не будет.
Полезная ссылочка nsICookieManager2
nsICookieManager
Конец.
Автор: New PC