Мне нужно перечислить сохраненные логины веб-сайтов из расширения Firefox (без паролей), для меня самый простой способ сделать это - найти путь к каталогу профиля пользователя Firefox и проанализировать logins.json
. Кажется, расширение API не содержит этого свойства. Только одна ссылка , которую я нашел, говорит о том, что я могу сделать это, связываясь с Native App через Native Messaging .
Код для выполнения на нативной стороне
case 'firefox': {
// get the profile dir
const extId = browser.extId = process.argv[5];
if (process.env.MOZ_CRASHREPORTER_EVENTS_DIRECTORY) {
browser.profileDir = Path.resolve(process.env.MOZ_CRASHREPORTER_EVENTS_DIRECTORY, '../..');
}
else {
throw new Error(`MOZ_CRASHREPORTER_EVENTS_DIRECTORY environment variable not set by Firefox`);
// either -P / -p "profile_name" or -profile "profile_path" (precedence?) default: FS.readFileSync('%AppData%\Mozilla\Firefox\profiles.ini').trim().split(/(?:\r\n?\n){2}/g).find(_=>_.includes('Default=1')).match(/Path=(.*))[1]
}
// find the extension
const extPath = Path.join(browser.profileDir, 'extensions', extId);
const [ extLink, extDir, extFile, ] = (await Promise.all([
readFile(extPath, 'utf-8').catch(() => null),
realpath(extPath).catch(() => null),
realpath(extPath +'.xpi').catch(() => null),
]));
if (extLink) { try {
const extDir = normalizeTextPath(extLink);
... и передать его на расширение.
Существуют ли другие способы получения учетных данных для входа в расширение?