Когда я захожу на цитаты 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 ).
Результат безобразный + бесполезный, но я специально отметил, что эти значения НЕ появляются, хотя я ожидаю, что они:
Как я могу найти эти «скрытые» куки? Я пишу сценарий 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 или что-то происходит в любом случае. По крайней мере, это дает мне новое место для копания.
Я подозреваю, что Firefox не обновляет cookies.sqlite файл непосредственно по причинам производительности и целостности данных. Скорее это временные хранилища данные в cookies.sqlite-журнале (Firefox 3.x). Поскольку сеансовые куки часто изменяются, разумно, что cookie не присутствуют в cookies.sqlite файле. Когда Firefox закрывается, изменения в cookies.sqlite применяются.
Обходное решение является доступным использованием сценария Механика.
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.
jsessionid.user.js
файл в Firefox (или бросают его в Firefox). Вам предложат при установке его. Примите его.В 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 может быть вставлен в адресной панели непосредственно.
Вы можете найти свой идентификатор сессии в sessionstore.js в своем профиле. grep for:
{"host":"<your site>","value":"(.+)","path":"/","name":"JSESSIONID","httponly":true}
с соответствующим значением, как показано в окне управления файлами cookie FF.
Вполне возможно, что это работает, только если вы активировали механизм восстановления сеанса в свойствах.