Сценарий GreaseMonkey к автоматическому входу в систему с помощью Аутентификации HTTP

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

6
задан Mihai Limbășan 28 December 2008 в 11:45
поделиться

4 ответа

Возможно войти в систему с помощью Аутентификации HTTP путем установки HTTP-заголовка "Авторизации", со значением этого набора заголовка к строке "основной username:password", но с "username:password" частью строковой Основы 64 закодированных.

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

Немного исследования нашло, что GreaseMonkey имеет функцию, встроенную в него, куда можно отправить, ДОБИРАЮТСЯ / 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 и если я не зарегистрирован, он автоволшебно регистрирует меня в.

6
ответ дан 10 December 2019 в 02:56
поделиться

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

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

1
ответ дан 10 December 2019 в 02:56
поделиться

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

Вы могли также забыть о механике в целом и просто дать свой вход в систему в на URL как так:

http://username:password@host/

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

2
ответ дан 10 December 2019 в 02:56
поделиться

« http: // username: пароль @ host / " не работает на IE, Firefox работает нормально.

0
ответ дан 10 December 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: