Pergunta

Eu tenho alguns scripts GreaseMonkey que escrevi em meu trabalho que me conectam automaticamente aos sites internos que temos aqui.Consegui escrever um script para quase cada um desses sites, exceto para nosso aplicativo de quadro de horários, que usa autenticação HTTP.

Existe uma maneira de usar o GreaseMonkey para fazer login neste site automaticamente?

Editar:Estou ciente da funcionalidade de armazenamento de senha nos navegadores, mas meus scripts vão além, verificando se estou logado no site quando ele carrega (atravessando o HTML) e, em seguida, enviando uma postagem para a página de login.Isso elimina a etapa de carregar o site, entrar na página de login, inserir minhas credenciais e clicar em enviar

Foi útil?

Solução

É possível fazer login usando autenticação HTTP definindo o cabeçalho HTTP "Autorização", com o valor deste cabeçalho definido como a string "nome de usuário básico: senha", mas com a parte "nome de usuário: senha" da string codificada em Base 64 .

http://frontier.userland.com/stories/storyReader$2159

Um pouco de pesquisa descobriu que GreaseMonkey tem uma função embutida onde você pode enviar solicitações GET/POST para o servidor chamado GM_xmlhttpRequest

http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html

Então, juntando tudo (e também obtendo esse código JavaScript para converter strings em base64, recebo o seguinte

http://www.webtoolkit.info/javascript-base64.html

var loggedInText = document.getElementById('metanav').firstChild.firstChild.innerHTML;
if (loggedInText != "logged in as jklp") {
    var username = 'jklp';
    var password = 'jklpPass';
    var base64string = Base64.encode(username + ":" + password);

    GM_xmlhttpRequest({
        method: 'GET',
        url: 'http://foo.com/trac/login',
        headers: {
            'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3',
            'Accept': 'application/atom+xml,application/xml,text/xml',
            'Authorization':'Basic ' + base64string,
        }
    });
}

Então, quando eu visito o site, ele atravessa o DOM e, se eu não estiver logado, ele me conecta automaticamente.

Outras dicas

As informações de autenticação HTTP são enviadas em todas as solicitações, não apenas para fazer login.O navegador armazenará em cache as informações de login da sessão após o primeiro login.Então, você realmente não salva nada tentando verificar se já está logado.

Você também pode esquecer completamente o Greasemonkey e apenas fornecer seu login no URL assim:

http://username:password@host/

É claro que salvar isso em um marcador pode ser um risco à segurança, mas não mais do que salvar sua senha no navegador.

Por que você não usa o Firefox (presumo que você esteja usando o Firefox) para lembrar suas credenciais usando o Gerenciador de senhas?

Encontrei este link: Autenticação HTTP com formulários HTML.Parece que você pode usar javascript para fazer autenticação HTTP.Eu não acho que você possa interromper o Greasemonkey quando estiver navegando pela primeira vez para um URL.Talvez seja necessário configurar algum tipo de ponto de inicialização que possa ser usado para que o Greasemonkey redirecione + faça login automaticamente.Por exemplo, você pode fazer com que a página local que leva o URL de destino na string de consulta faça com que o Greasemonkey faça automaticamente a autenticação + redirecionamento.O único problema é que você terá que agrupar os marcadores do site com a sua página de lançamento para os marcadores que você usa como pontos de entrada.

"http://nome de usuário:senha@host/"não funciona no IE, o FireFox funciona bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top