Question

J'ai écrit pas mal de scripts GreaseMonkey au travail qui me connectent automatiquement aux sites internes que nous avons ici.J'ai réussi à écrire un script pour presque chacun de ces sites, à l'exception de notre application de feuille de temps, qui utilise l'authentification HTTP.

Existe-t-il un moyen d'utiliser GreaseMonkey pour me connecter automatiquement à ce site ?

Modifier:Je connais la fonctionnalité de mot de passe de magasin dans les navigateurs, mais mes scripts vont encore plus loin en vérifiant si je suis connecté au site lors de son chargement (en parcourant HTML), puis en soumettant une publication sur la page de connexion.Cela supprime l'étape consistant à charger le site, à accéder à la page de connexion, à saisir mes informations d'identification, puis à cliquer sur Soumettre.

Était-ce utile?

La solution

Il est possible de se connecter en utilisant l'authentification HTTP en définissant l'en-tête HTTP "Autorisation", avec la valeur de cet en-tête définie sur la chaîne "nom d'utilisateur de base: mot de passe", mais avec la partie "nom d'utilisateur: mot de passe" de la chaîne codée en Base 64. .

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

Quelques recherches ont révélé que GreaseMonkey possède une fonction intégrée qui vous permet d'envoyer des requêtes GET / POST au serveur appelé GM_xmlhttpRequest.

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

Donc, en mettant tout cela ensemble (et en obtenant également ce code JavaScript pour convertir les chaînes en base64, j'obtiens ce qui suit

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

Ainsi, lorsque je visite le site, il traverse le DOM et si je ne suis pas connecté, il me connecte automatiquement.

Autres conseils

Les informations d'authentification HTTP sont envoyées à chaque demande, pas seulement pour se connecter.Le navigateur mettra en cache les informations de connexion pour la session après votre première connexion.Ainsi, vous n’enregistrez vraiment rien en essayant de vérifier si vous êtes déjà connecté.

Vous pouvez également oublier complètement Greasemonkey et simplement indiquer votre identifiant sur l'URL comme ceci :

http://username:password@host/

Bien sûr, enregistrer cela dans un signet peut constituer un risque pour la sécurité, mais pas plus que sauvegarder votre mot de passe dans le navigateur.

Pourquoi n'utilisez-vous pas Firefox (je suppose que vous utilisez Firefox) pour mémoriser vos informations d'identification à l'aide du gestionnaire de mots de passe ?

J'ai trouvé ce lien : Authentification HTTP avec formulaires HTML.On dirait que vous pouvez utiliser javascript pour effectuer l'authentification HTTP.Je ne pense pas que Greasemonkey puisse vous interrompre lorsque vous accédez pour la première fois à une URL.Vous devrez peut-être configurer une sorte de point de lancement que vous pouvez utiliser pour que Greasemonkey redirige automatiquement + se connecte.Par exemple, vous pouvez demander à la page locale qui prend l'URL de destination dans la chaîne de requête de demander à Greasemonkey d'effectuer automatiquement l'authentification + la redirection.Le seul problème est que vous devrez envelopper les signets du site avec votre page de lancement pour les signets que vous utilisez comme points d'entrée.

"http://nom d'utilisateur:mot de passe@hôte/" ne fonctionne pas sur IE, FireFox fonctionne bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top