Разрешить сохранение пароля на сайтах с autocomplete="off"

Быстрые ссылки
Почему некоторые сайты не разрешают сохранение пароля?
Исправление: простой JavaScript-функция
Исходный код JavaScript
Введение
Если вы используете встроенный менеджер паролей в браузере (или думаете об этом после недавних случаев с облачными менеджерами), вы наверняка встречали сайты, которые не дают браузеру сохранить пароль. Причина — в том, что атрибут HTML autocomplete установлен в “off” для форм или полей ввода. Ниже объяснено, как это исправить локально, без передачи паролей в облако.
Важное: если вы используете сторонние менеджеры паролей (например, облачные сервисы), у них часто есть встроенные способы обхода подобных ограничений. Эта инструкция для тех, кто предпочитает хранить пароли в браузере и управлять ими локально.
Почему некоторые сайты не позволяют сохранить пароль?
Короткий ответ: атрибут autocomplete=”off” у элементов form или input. История: этот атрибут появился ещё в Internet Explorer 5 и используется для отключения автозаполнения для конкретного поля или формы. В результате браузеры игнорируют такие поля при сохранении паролей.
Ниже пример с реального сайта, где поле пароля имеет отключённый autocomplete, поэтому браузер не включит это поле в базу автозаполнения.

Краткое определение: autocomplete — атрибут HTML, задающий, должен ли браузер предлагать автозаполнение для поля ввода.
Исправление: простая JavaScript-функция
Идея простая: с помощью JavaScript получить все формы и их элементы на странице, найти атрибуты autocomplete и поменять их значение на “on”. Это можно выполнить как bookmarklet (закладку с JavaScript), чтобы одним кликом изменить поведение страницы прямо в браузере.
Ниже встраиваемый объект (раньше — ссылка/закладка). Вы можете перетащить ссылку в панель закладок или создать закладку вручную с указанным URL-источником.
| Разрешить сохранение пароля |
Если предыдущая ссылка не работает, создайте закладку и используйте следующий URL как источник:
| javascript:(function(){var%20ac,c,f,fa,fe,fea,x,y,z;ac=”autocomplete”;c=0;f=document.forms;for(x=0;x Примечание: URL в таблице — закодированная версия JavaScript, которую браузер выполняет при клике по закладке. Не удаляйте и не изменяйте код, если не уверены в последствиях. Браузер строит DOM (Document Object Model) страницы. Скрипт перебирает document.forms и их элементов, проверяет атрибут name для каждого атрибута и сравнивает с “autocomplete”. Когда находит соответствие, он присваивает value=”on”. После обработки всплывает уведомление с пометкой, на скольких объектах сменён атрибут. Плюсы метода: локальный, быстрый, не требует прав администратора и не передаёт ваши данные третьим сторонам. Минусы и ограничения — зависят от поведения конкретного браузера и целевого сайта (см. раздел Совместимость). Firefox: метод работает и в современных версиях ведёт себя предсказуемо. После применения скрипта при следующем логине браузер предложит сохранить пароль; автозаполнение пароля может сработать только после перевода фокуса на поле имени пользователя. Internet Explorer (IE9 и старые): требуется повторный запуск скрипта при следующем посещении страницы; поведение схожее с Firefox по этапу фокусировки. Chrome: в наших тестах скрипт мог изменить атрибуты (и показывал сообщение об успехе), но фактическое автосохранение/автозаполнение пароля не всегда срабатывало — поведение зависит от версии Chrome и внутренних алгоритмов безопасности. Сайты с дополнительными скриптами защиты: некоторые сайты используют динамическую генерацию полей, шифрование на клиенте или иные приёмы (например, нестандартные обработчики ввода). В таких случаях простая замена атрибута может не помочь. Контрпример: если поле пароля генерируется динамически после загрузки страницы (через JS), нужно запускать bookmarklet уже после появления поля или прогона скрипта снова. Совет: если поле не появляется сразу, обновите страницу и запустите скрипт после завершения загрузки всех динамических элементов. Никогда не вставляйте сторонний непроверенный JavaScript в закладки или консоль на страницах, которым вы не доверяете. Скрипты могут похитить вводимые данные. Этот метод локально меняет атрибуты страницы и не отправляет данные на внешние сервера. Тем не менее, запуск скрипта на зловредном сайте может привести к непредсказуемым результатам. Для корпоративного использования рассмотрите централизованные менеджеры паролей и политики, рекомендованные отделом безопасности. Обучите сотрудников не сохранять важные корпоративные пароли на личных устройствах. Использовать сторонний менеджер паролей (LastPass, 1Password, Bitwarden и т.д.), многие из которых имеют расширения, умеющие вставлять пароли, несмотря на autocomplete=”off”. Если вы владеете сайтом или являетесь разработчиком: не отключайте autocomplete для стандартных полей логина/пароля. Современные браузеры и менеджеры паролей безопасно работают с ними. Для разработчиков: применяйте стандарты HTML (например, autocomplete=”username” и autocomplete=”current-password”), чтобы помочь менеджерам паролей корректно распознавать поля. Пользователь (конечный): Администратор безопасности: Веб-разработчик: Важно: если у вас сомнения в безопасности конкретного сайта, лучше использовать проверенный менеджер паролей и не выполнять скрипты вручную. Ключевые шаги: создать закладку с кодом, запустить на странице входа, ввести данные, принять предложение браузера сохранить пароль.Как это работает: коротко о механике
Совместимость и ограничения
Использование: пошагово
Для Firefox
Для Internet Explorer
JavaScript: красиво форматированный исходный код
function() {
var ac, c, f, fa, fe, fea, x, y, z;
// ac = autocomplete constant (attribute to search for)
// c = count of the number of times the autocomplete constant was found
// f = all forms on the current page
// fa = attributes in the current form
// fe = elements in the current form
// fea = attributes in the current form element
// x,y,z = loop variables
ac = "autocomplete";
c = 0;
f = document.forms;
// cycle through each form
for(x = 0; x < f.length; x++) {
fa = f[x].attributes;
// cycle through each attribute in the form
for(y = 0; y < fa.length; y++) {
// check for autocomplete in the form attribute
if(fa[y].name.toLowerCase() == ac) {
fa[y].value = "on";
c++;
}
}
fe = f[x].elements;
// cycle through each element in the form
for(y = 0; y < fe.length; y++) {
fea = fe[y].attributes;
// cycle through each attribute in the element
for(z = 0; z < fea.length; z++) {
// check for autocomplete in the element attribute
if(fea[z].name.toLowerCase() == ac) {
fea[z].value = "on";
c++;
}
}
}
}
alert("Enabled '" + ac + "' on " + c + " objects.");
}Безопасность и приватность
Альтернативные подходы
Роль-ориентированные контрольные списки
Критерии приёмки
Тесты / случаи использования
Когда этот способ не сработает
Краткое резюме



Похожие материалы
Как удалить Facebook и не потерять людей
Ошибка 0x80072EFD в Windows 10 — как исправить
Включить блокировщик рекламы в Edge на Android
Minecraft Launcher не запускается в Windows 11 — как исправить
Исправить подёргивание мыши в Valorant