Сайт: https://httpbin.org/basic-auth/user/passwd
Когда мы посещаем сайт, метод onAuthRequired
запускается в background.js
. Согласно mdn docs https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired мы можем передать поле имени пользователя и пароля, используя extraInfoSpec
as blocking
.
Протестированный подход: background.js
const myCredentials = {
username: "me@company.com",
password: "zDR$ERHGDFy"
}
function provideCredentialsSync(requestDetails) {
// If we have seen this request before, then
// assume our credentials were bad, and give up.
if (pendingRequests.indexOf(requestDetails.requestId) != -1) {
console.log(`bad credentials for: ${requestDetails.requestId}`);
return { cancel: true };
}
pendingRequests.push(requestDetails.requestId);
console.log(`providing credentials for: ${requestDetails.requestId}`);
return { authCredentials: myCredentials };
}
browser.webRequest.onAuthRequired.addListener(
provideCredentialsSync,
{ urls: [target] },
["blocking"]
);
Для справки см. Код github: https://github.com/mdn/webextensions-examples/tree/master/stored-credentials
В соответствии с описанным выше подходом он пытается аутентифицироваться с использованием заданных учетных данных. И если правильные учетные данные будут перенаправлены на соответствующую страницу.
Вопросы
- Как заполнить только учетные данные и не нажать на запрос? Пользователь нажмет кнопку
Sign In
вручную. - Как заполнить или передать учетные данные с помощью собственного хоста? Собственный хост отправит учетные данные, и эти учетные данные будут переданы в вышеуказанный подход для аутентификации.