Firefox скрытые куки не в cookies.sql?

Когда я захожу на цитаты nadex.com, Firebug говорит мне, что я отправляю эти куки (но на самом деле все они в одну строку):

JSESSIONID=Qk3lNyhpQCpGpfx4bghpJLd2ML90tNx3lKvpvPLcvdmJyGRGztH5!1308128606!-757\
827124; bhCookieSess=1; bhCookiePerm=1; IGFOREXCOOKIE=; LS__LSEngine_S=exist_13\
02897154477; LS__LSEngine_K=SHARE_SESSION; LS__https://demo-mdp.nadex.com=1; LS\
__LSEngine=73; iconStateSetting=/dealing/pd/cfd/login/loginUser.htm?iconsEnable\
d=true; homeUrl=https://demo.nadex.com/content/sites/ndx/en_US/; showDmaHelp=fa\
lse 

и Firefox выдает «Редактировать / Настройки / Конфиденциальность / Удалить отдельные куки» Соглашаться.

Однако, когда я смотрю на cookies.sql, некоторые файлы cookie выше не отображаются:

cp ~/.mozilla/firefox/xxxxxxxx.default/cookies.sqlite /tmp && \
echo "SELECT name FROM moz_cookies;" | sqlite3 /tmp/cookies.sqlite |\
sort | uniq 

(обратите внимание, что я должен «cp», так как исходный дБ заблокирован Firefox ).

Результат безобразный + бесполезный, но я специально отметил, что эти значения НЕ появляются, хотя я ожидаю, что они:

  • JSESSIONID (возможно, самый важный)
  • homeURL
  • showDmaHelp
  • возможно другие

Как я могу найти эти «скрытые» куки? Я пишу сценарий perl / curl для загрузки данных, но он не работает без cookie-файла JSESSIONID (а ручное копирование из Firebug недостаточно автоматическое, плюс JSESSIONID часто меняется)

EDIT (слишком длинный / громоздкий для комментария): @Lekensteyn Спасибо за сценарий GM! Он не обновляет webappsstore.sqlite, когда я захожу на nadex.com и захожу, но он ДЕЙСТВИТЕЛЬНО обновляет sessionstore.js, который содержит:

{"host":"www.nadex.com","value":"3x0LNpvGDHQq\
xls7FxbqtJ2pFlL0gSyk9YvBkPs09r4yvQyZDMWs!-1593496027!1301994507","path":"/price\
stream","name":"JSESSIONID"}

все в одной строке (фактически, весь файл является одна строка).

Однако, я еще не проверил, имеет ли это отношение к сценарию GM или что-то происходит в любом случае. По крайней мере, это дает мне новое место для копания.

2
задан 17 April 2011 в 02:22

2 ответа

Я подозреваю, что Firefox не обновляет cookies.sqlite файл непосредственно по причинам производительности и целостности данных. Скорее это временные хранилища данные в cookies.sqlite-журнале (Firefox 3.x). Поскольку сеансовые куки часто изменяются, разумно, что cookie не присутствуют в cookies.sqlite файле. Когда Firefox закрывается, изменения в cookies.sqlite применяются.


Обходное решение является доступным использованием сценария Механика.

  1. Установите дополнение Механика.
  2. Firefox перезапуска. Между тем сохраните следующий текст как "jsessionid.user.js".

    // ==UserScript==
    // @name           JSESSIONID to localStorage
    // @namespace      lekensteyn@gmail.com
    // @description    Saves the JSESSIONID cookie in localStorage
    // @include        https://demo.nadex.com/dealing/pd/cfd/security*
    // ==/UserScript==
    (function() {
        var sessid = document.cookie.match(/JSESSIONID=([^;]+)/);
        if (sessid) {
            var oldSID = localStorage.JSESSIONID;
            if (sessid != oldSID) localStorage.JSESSIONID = sessid[1];
        }
    })();
    

    Это должно получить сеансовые куки прямо после входа в систему и хранилища с помощью устройства хранения данных HTML5, если идентификатор сессии отличается, чем ранее сохраненный. Если необходимо заставить сценарий сохранить идентификатор сессии ранее, необходимо изменить @include строка к чему-то как https://demo.nadex.com/*. Я заметил, что никакой идентификатор сессии не отправляется по HTTP, просто HTTPS.

  3. Откройтесь jsessionid.user.js файл в Firefox (или бросают его в Firefox). Вам предложат при установке его. Примите его.
  4. В Bash используйте что-то как:

    sessid=$(sqlite3 ~/.mozilla/firefox/xxx.xxx/webappsstore.sqlite "SELECT \
     value FROM webappsstore2 WHERE key='JSESSIONID' AND secure='1' \
     AND host LIKE 'moc.xedan.%' LIMIT 1;")
    

    moc.xedan. часть домена в обратном порядке.

Для отладки можно использовать следующий bookmarklet:

javascript:alert("JSESSIONID=" + localStorage.JSESSIONID);

Это отобразится null если нет такого найденного идентификатора. Обратите внимание, что имеет значение, выполняете ли Вы его на https://demo.nadex.com или http://demo.nadex.com. Этот bookmarklet может быть вставлен в адресной панели непосредственно.

2
ответ дан 17 April 2011 в 02:22

Вы можете найти свой идентификатор сессии в sessionstore.js в своем профиле. grep for:

{"host":"<your site>","value":"(.+)","path":"/","name":"JSESSIONID","httponly":true}

с соответствующим значением, как показано в окне управления файлами cookie FF.

Вполне возможно, что это работает, только если вы активировали механизм восстановления сеанса в свойствах.

0
ответ дан 17 April 2011 в 02:22

Другие вопросы по тегам:

Похожие вопросы: