Определите, сохраняются ли учетные данные для входа в браузер в расширении Chrome - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь заставить расширение Chrome автоматически регистрировать веб-сайт (отправляя форму входа в систему), только в том случае, если у пользователя сохранены учетные данные для входа в браузер.

И поскольку учетные данные для входа (адрес электронной почты / пароль) заполняются в форме после загрузки веб-страницы, я использую JavaScript interval после загрузки страницы, как предлагается здесь

Итак, мой код выглядит следующим образом:

//use 10 seconds interval waiting for the form to populate by the saved credentials:
var waitSeconds = 0;
var interval = setInterval(function () {

var inputEmail = document.getElementById('email');
var inputPass = document.getElementById('password');

console.log(
        'inputEmail:', inputEmail, '\n',
        'inputPass:', inputPass, '\n',
        'inputEmail.value:', inputEmail.value, '\n',
        'inputPass.value:', inputPass.value, '\n',
        'inputEmail.defaultValue:', inputEmail.defaultValue, '\n',
        'inputPass.defaultValue:', inputPass.defaultValue, '\n',
        );

    if (inputPass.defaultValue || inputPass.value) {
        console.log('login credentials are saved at the browser!');
        clearInterval(interval);
        //click the form submit button here;

    } else {
        console.log('waiting...');
        if (waitSeconds < 10) {
            waitSeconds++;
        } else {
            clearInterval(interval);
            console.log('10 seconds passed, timeout!');
        }
    }
}, 1000);

Я получаю в console следующее:

inputEmail: <input autocomplete="email" type="email" id="email" value="myemail@example.com">
inputPass: <input autocomplete="password" type="password" id="password" value="myPasswordIsVisibleHere">

Но для inputEmail.value, inputPass.value, inputEmail.defaultValue, inputPass.defaultValue, иногда я получаю данные, а иногда ничего не получаю! просто пустые значения!

Я не могу знать, что иногда это происходит, а иногда нет, но, основываясь на некоторых наблюдениях, я заметил, что всякий раз, когда я выполняю ручное взаимодействие со страницей, он всегда заполняет значения вприставка!

Ручное взаимодействие с человеком может быть чем-то вроде (нажатие в любом месте страницы, ручная фокусировка ввода, нажатие F12, чтобы открыть инструменты разработчика, в течение 10 секунд interval и т. Д.)

Isэто ручное взаимодействие является требованием Chrome в качестве меры безопасности, чтобы предотвратить кражу сохраненных учетных данных пользователей? Я не знаю!

Я пытался смоделировать человеческое взаимодействие программно, например:

$(inputEmail).keydown().keypress().keyup().blur().focus();

Также думал об использовании document.execCommand('paste'), чтобы вставить пробел или что-то после значения,из отчаянного подхода!

Что я могу сделать ВСЕГДА, чтобы получить учетные данные и иметь согласованные функции входа в систему?

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

1 Ответ

0 голосов
/ 31 октября 2019

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

Если я правильно понял, страница все равно не будет автоматически входить до расширенияКнопка, по крайней мере, нажата один раз, чтобы запустить любые сценарии. Если это так, попросите popup.js выполнить запуск и автоматический вход в систему с помощью window.open, например,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...