Вопрос или проблема
Запрос
Я ищу файл (предположительно JSON), который включает список всех установленных дополнений. Firefox наверняка хранит его.
В идеале, я хочу, чтобы он содержал исключительно названия установленных дополнений, но не ожидаю, что это будет доступно по умолчанию.
Обоснование
Я хочу иметь возможность экспортировать этот список, чтобы, когда я сообщаю о проблемах (не)совместимости веб-приложений и/или расширений, я мог легко продемонстрировать, какие комбинации дополнений вызывают какие эффекты.
Это должно заменить мой текущий метод достижения этой цели:
- Вызвать
firefox 'about:addons'
. - Сохранить страницу, используя встроенную функцию Firefox. ^Цитата
- Открыть полученный HTML-файл в родительском каталоге с соответствующим рядом файлов (где его ресурсы хранятся отдельно).
- Сохранить эту страницу как один HTML-файл с помощью SingleFile.
К сожалению, простой список названий дополнений не предоставляется самим Firefox. Тем не менее, скрипт PowerShell для каждого профиля, использующий файл addons.json
, упомянутый в комментарии, работает:
#!/usr/bin/env -S pwsh
#Requires -PSEdition Core
#Requires -Version 7.4
If ([OperatingSystem]::IsLinux() -EQ $True) {
$FirefoxProfile = Read-Host # `fimaebr1.default-release-1720105233406`, как пример.
$AddOnsJSON = Get-Content -LiteralPath "$HOME/.mozilla/firefox/$FirefoxProfile/addons.json"
$AddOnsHashTable = $AddOnsJSON | ConvertFrom-JSON
$HashedAddOns = @()
ForEach ($AddOn in $AddOnsHashTable.addons) {
$AddOnDetails = [ordered]@{
SourceURI = $AddOn.sourceURI
Type = $AddOn.type
}
$HashedAddOns += [PSCustomObject]$AddOnDetails
}
$HashedAddOns | Format-Table -AutoSize
}
Если вам нужно преобразовать это в таблицу Markdown (как и мне), вы можете рассмотреть упомянутое ниже полезное тоже:
Function ConvertTo-MarkDownTable { [CmdletBinding()] param( [Parameter(Position = 0, ValueFromPipeLine = $True)] $InputObject ) Begin { $Index = 0 } Process { if ( !$Index++ ) { '|' + ($_.PSObject.Properties.Name -Join '|') + '|' '|' + ($_.PSObject.Properties.ForEach({ '-' }) -Join '|') + '|' } '|' + ($_.PSObject.Properties.Value -Join '|') + '|' } } $HashedAddOns | ConvertTo-MarkDownTable
К сожалению, не кажется возможным определить, включены они или нет, что имеет значение.
Ответ или решение
Чтобы извлечь список URI источников (или названий) дополнений профиля Firefox, вам потребуется доступ к файлу addons.json
, который хранится в профиле вашего браузера. Этот файл содержит информацию обо всех установленных дополнениях, включая их настройки и состояние. Процесс можно автоматизировать с помощью PowerShell, особенно если вы используете операционные системы на базе Linux или Windows.
Шаги для извлечения списка дополнений Firefox
-
Определите путь к профилю Firefox:
Профили Firefox хранятся в следующем формате:- Для Windows:
C:\Users\<Имя пользователя>\AppData\Roaming\Mozilla\Firefox\Profiles\<Имя профиля>
- Для Linux:
~/.mozilla/firefox/<Имя профиля>
Например, имя профиля может быть
fimaebr1.default-release
. - Для Windows:
-
Убедитесь, что установлен PowerShell:
Убедитесь, что на вашей системе установлен PowerShell версии 7.4 или выше (для Linux также необходима версия Core). -
Использование скрипта на PowerShell:
Вы можете использовать следующий скрипт для извлечения информации об установленных дополнениях:#!/usr/bin/env -S pwsh #Requires -PSEdition Core #Requires -Version 7.4 If ([OperatingSystem]::IsLinux() -EQ $True) { $FirefoxProfile = Read-Host "Введите имя профиля Firefox" # Например: fimaebr1.default-release $AddOnsJSON = Get-Content -LiteralPath "$HOME/.mozilla/firefox/$FirefoxProfile/addons.json" $AddOnsHashTable = $AddOnsJSON | ConvertFrom-JSON $HashedAddOns = @() ForEach ($AddOn in $AddOnsHashTable.addons) { $AddOnDetails = [ordered]@{ SourceURI = $AddOn.sourceURI Type = $AddOn.type } $HashedAddOns += [PSCustomObject]$AddOnDetails } $HashedAddOns | Format-Table -AutoSize }
-
Опциональное преобразование в Markdown:
Если вам нужно преобразовать вывод в формат Markdown, вы можете использовать следующую функцию:Function ConvertTo-MarkDownTable { [CmdletBinding()] param( [Parameter(Position = 0, ValueFromPipeLine = $True)] $InputObject ) Begin { $Index = 0 } Process { if (!$Index++) { '|' + ($_.PSObject.Properties.Name -Join '|') + '|' '|' + ($_.PSObject.Properties.ForEach({ '-' }) -Join '|') + '|' } '|' + ($_.PSObject.Properties.Value -Join '|') + '|' } } $HashedAddOns | ConvertTo-MarkDownTable
Важные нюансы
-
Отсутствие информации о состоянии: Обратите внимание, что текущий скрипт не отображает, являются ли дополнения включенными или отключенными. Это может потребовать дальнейшего анализа других файлов или путей, в зависимости от ваших нужд.
-
Экспорт данных: После выполнения скрипта вы получите консольный вывод, который можно скопировать и использовать для отчетов о совместимости дополнений.
-
Совместимость: Убедитесь, что у вас есть разрешения для доступа к файлам профиля Firefox, особенно если используется общий компьютер или сервер.
Заключение
С помощью приведенных выше шагов вы сможете эффективно извлекать информацию о дополнениях Firefox из профиля и использовать её для своих нужд. Напоминаем, что настройка и работа с профилем браузера могут варьироваться в зависимости от вашей операционной системы и версии Firefox.