Скрипт GreaseMonkey для автоматического входа с использованием HTTP-аутентификации - PullRequest
6 голосов
/ 08 сентября 2008

У меня есть довольно много скриптов GreaseMonkey, которые я написал на своей работе, которые автоматически регистрируют меня на внутренних сайтах, которые у нас есть. Мне удалось написать сценарий почти для каждого из этих сайтов, за исключением нашего приложения, которое использует HTTP-аутентификацию.

Можно ли использовать GreaseMonkey для автоматического входа на этот сайт?

Редактировать: я знаю о функциональности паролей магазина в браузерах, но мои сценарии идут дальше, проверяя, захожу ли я на сайт, когда он загружается (просматривая HTML), а затем отправляя сообщение на страницу входа , Это устраняет необходимость загружать сайт, заходить на страницу входа, вводить мои учетные данные, а затем нажимать кнопку отправить

.

Ответы [ 4 ]

6 голосов
/ 11 сентября 2008

Для входа в систему можно использовать HTTP-аутентификацию, установив заголовок HTTP «Авторизация», в котором значение этого заголовка установлено в строку «basic username: password», но с частью «username: password» строки База 64 закодирована.

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

Небольшое исследование показало, что в GreaseMonkey встроена функция, позволяющая отправлять запросы GET / POST на сервер GM_xmlhttpRequest

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

Итак, собрав все вместе (а также получив этот код JavaScript для преобразования строк в base64, я получаю следующее

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

Поэтому, когда я сейчас захожу на сайт, он пересекает DOM, и если я не вошел в систему, он автоматически регистрирует меня.

2 голосов
/ 08 сентября 2008

Информация аутентификации HTTP отправляется при каждом запросе, а не только для входа в систему. Браузер будет кэшировать информацию для входа в систему для сеанса после первого входа в систему. Таким образом, вы ничего не сохраняете, пытаясь проверить, вошли ли вы уже в систему.

Вы также можете полностью забыть о greasemonkey и просто ввести свой логин в URL, например:

http://username:password@host/

Конечно, сохранение этого в закладке может быть угрозой безопасности, но не более, чем сохранение пароля в браузере.

1 голос
/ 08 сентября 2008

Почему бы вам не использовать Firefox (я полагаю, вы используете Firefox) для запоминания своих учетных данных с помощью Менеджера паролей?

Я нашел эту ссылку: HTTP-аутентификация с HTML-формами . Похоже, вы можете использовать JavaScript для проверки подлинности HTTP. Я не думаю, что у вас может быть прерывание Greasemonkey, когда вы впервые переходите по URL. Возможно, вам придется настроить какую-то точку запуска, которую вы можете использовать для автоматического перенаправления greasemonkey + логин. Например, у вас может быть локальная страница, которая принимает целевой URL в строке запроса, чтобы Greasemonkey автоматически делал аутентификацию + перенаправление. Единственная проблема заключается в том, что вам придется обернуть закладки сайта своей стартовой страницей для закладок, которые вы используете в качестве точек входа.

0 голосов
/ 15 января 2010

"http://username:password@host/" не работает в IE, FireFox работает нормально.

...