Как извлечь список источников URI (или названий) дополнений профиля Firefox?

Вопрос или проблема

Запрос

Я ищу файл (предположительно JSON), который включает список всех установленных дополнений. Firefox наверняка хранит его.

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

Обоснование

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

Это должно заменить мой текущий метод достижения этой цели:

  1. Вызвать firefox 'about:addons'.
  2. Сохранить страницу, используя встроенную функцию Firefox. ^Цитата
  3. Открыть полученный HTML-файл в родительском каталоге с соответствующим рядом файлов (где его ресурсы хранятся отдельно).
  4. Сохранить эту страницу как один 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

  1. Определите путь к профилю Firefox:
    Профили Firefox хранятся в следующем формате:

    • Для Windows: C:\Users\<Имя пользователя>\AppData\Roaming\Mozilla\Firefox\Profiles\<Имя профиля>
    • Для Linux: ~/.mozilla/firefox/<Имя профиля>

    Например, имя профиля может быть fimaebr1.default-release.

  2. Убедитесь, что установлен PowerShell:
    Убедитесь, что на вашей системе установлен PowerShell версии 7.4 или выше (для Linux также необходима версия Core).

  3. Использование скрипта на 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
    }
  4. Опциональное преобразование в 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.

Оцените материал
Добавить комментарий

Капча загружается...