Cookies ocultos do Firefox não estão em cookies.sql?

2

Quando acesso as cotações do nadex.com, o Firebug informa que eu envio esses cookies (mas na verdade é tudo uma linha):

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 

e "Editar / Preferências / Privacidade / remover cookies individuais" do Firefox parece concordar.

No entanto, quando olho cookies.sql, alguns cookies acima não aparecem:

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

(note que devo "cp", uma vez que o banco de dados original está bloqueado pelo Firefox).

O resultado é feio + inútil, mas observei especificamente esses valores NÃO aparece, embora eu espere que eles:

  • JSESSIONID (provavelmente o mais importante)
  • homeURL
  • showDmaHelp
  • possivelmente outros

Como posso encontrar esses cookies "ocultos"? Estou escrevendo um script perl / curl para baixar dados, mas não funciona sem o cookie JSESSIONID (e fazer cópias no Firebug não é automático o suficiente, além de JSESSIONID muda frequentemente)

EDIT (muito longo / pesado para um comentário): @Lekensteyn Obrigado pelo script GM! Ele não atualiza o webappsstore.sqlite quando eu visito o nadex.com e o login, mas ele atualiza o sessionstore.js, que contém:

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

tudo em uma linha (na verdade, o arquivo inteiro é uma única linha).

No entanto, eu ainda não verifiquei se isso tem alguma coisa a ver com o script GM, ou se é algo que acontece de qualquer maneira. No mínimo, isso me dá um novo lugar para cavar.

    
por barrycarter 15.04.2011 / 22:05

2 respostas

2

Eu suspeito que o Firefox não atualiza o arquivo cookies.sqlite diretamente por razões de integridade de dados e desempenho. Em vez disso, armazena temporariamente os dados em cookies.sqlite-journal (Firefox 3.x). Como os cookies de sessão são alterados com frequência, é razoável que os cookies não estejam presentes no arquivo cookies.sqlite. Quando o Firefox é fechado, as alterações para cookies.sqlite são aplicadas.

Uma solução alternativa está disponível usando um script Greasemonkey.

  1. Instale o complemento Greasemonkey .
  2. Reinicie o Firefox. Enquanto isso, salve o próximo texto como "jsessionid.user.js".

    // ==UserScript==
    // @name           JSESSIONID to localStorage
    // @namespace      [email protected]
    // @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];
        }
    })();
    

    Isso deve recuperar o cookie da sessão logo após o login e o armazenamento usando o Armazenamento HTML5 se o ID da sessão for diferente do que o salvo anteriormente. Se você precisar fazer com que o script salve o ID da sessão anteriormente, será necessário modificar a linha @include para algo como https://demo.nadex.com/* . Percebi que nenhuma ID de sessão é enviada via HTTP, apenas HTTPS.

  3. Abra o arquivo jsessionid.user.js no Firefox (ou solte-o no Firefox). Você será solicitado a instalá-lo. Aceite isso.
  4. No Bash, use algo como:

    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. é uma parte do domínio em ordem inversa.

Para depuração, você pode usar o próximo bookmarklet:

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

Ele exibirá null se não houver tal ID encontrado. Observe que é importante executá-lo em https://demo.nadex.com ou http://demo.nadex.com . Esse bookmarklet pode ser colado diretamente na barra de localização.

    
por Lekensteyn 15.04.2011 / 22:14
0

você pode encontrar seu ID de sessão no sessionstore.js em seu perfil. grep para:

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

com o valor apropriado para conforme mostrado na janela de gerenciamento de cookies FF.

Pode ser que isso funcione somente se você tiver ativado o mecanismo de restauração de sessão nas propriedades.

    
por Cpt. Senkfuss 16.12.2013 / 23:26

Tags