Domanda

Ho parecchi script GreaseMonkey che ho scritto sul mio lavoro che mi accedono automaticamente ai siti interni che abbiamo qui.Sono riuscito a scrivere uno script per quasi ognuno di questi siti ad eccezione della nostra applicazione per il foglio presenze, che utilizza l'autenticazione HTTP.

C'è un modo per utilizzare GreaseMonkey per accedere automaticamente a questo sito?

Modificare:Sono a conoscenza della funzionalità della password del negozio nei browser, ma i miei script fanno un ulteriore passo avanti controllando se ho effettuato l'accesso al sito quando viene caricato (attraversando l'HTML) e quindi inviando un post alla pagina di accesso.Ciò elimina la necessità di caricare il sito, accedere alla pagina di accesso, inserire le mie credenziali e quindi premere Invio

È stato utile?

Soluzione

È possibile accedere utilizzando l'autenticazione HTTP impostando l'intestazione HTTP "Autorizzazione", con il valore di questa intestazione impostato sulla stringa "nomeutente base:password", ma con la parte "nomeutente:password" della stringa codificata Base 64 .

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

Un po' di ricerca ha scoperto che GreaseMonkey ha una funzione incorporata con cui è possibile inviare richieste GET/POST al server chiamato GM_xmlhttpRequest

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

Quindi mettendo tutto insieme (e anche ottenendo questo codice JavaScript per convertire le stringhe in base64 ottengo quanto segue

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,
        }
    });
}

Quindi, quando ora visito il sito, attraversa il DOM e se non ho effettuato l'accesso, mi accede automaticamente.

Altri suggerimenti

Le informazioni di autenticazione HTTP vengono inviate a ogni richiesta, non solo per l'accesso.Il browser memorizzerà nella cache le informazioni di accesso per la sessione dopo il primo accesso.Quindi, non salvi davvero nulla provando a verificare se hai già effettuato l'accesso.

Potresti anche dimenticarti del tutto di GreaseMonkey e inserire semplicemente il tuo login nell'URL in questo modo:

http://username:password@host/

Naturalmente, salvarlo in un segnalibro può rappresentare un rischio per la sicurezza, ma non più del salvataggio della password nel browser.

Perché non usi Firefox (presumo che tu stia utilizzando Firefox) per ricordare le tue credenziali utilizzando Password Manager?

Ho trovato questo collegamento: Autenticazione HTTP con moduli HTML.Sembra che tu possa usare JavaScript per eseguire l'autenticazione HTTP.Tuttavia, non penso che tu possa interrompere Greasemonkey quando navighi per la prima volta verso un URL.Potrebbe essere necessario impostare una sorta di punto di avvio che è possibile utilizzare per fare in modo che GreaseMonkey reindirizzi automaticamente + acceda.Ad esempio, puoi avere la pagina locale che accetta l'URL di destinazione nella stringa di query, fare in modo che Greasemonkey esegua automaticamente l'autenticazione + il reindirizzamento.L'unico problema è che dovrai racchiudere i segnalibri del sito nella pagina di avvio per i segnalibri che utilizzi come punti di ingresso.

"http://nomeutente:password@host/" non funziona su IE, FireFox funziona bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top