как получить название основного браузер python

Я пишу программу которая будет искать информацию в 2 режимах.

Инкогнито и Обычный. Код который я нашёл:

os.system("Start-Process chrome.exe -ArgumentList @( '-incognito', 'www.foo.com' )")

Работает. Но мне нужно получить название основного браузера. Будь то Opera или FireFox или пусть даже Edgle.

Как желательно без помощи сторонних модулей получить название браузера установленного по умолчанию.


Ответы (1 шт):

Автор решения: gil9red

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

Пример:

import webbrowser
webbrowser.open('www.foo.com')

У webbroser есть метод для получения стандартного браузера, но у меня поля этого браузера возвращали пустые строки (и тут в комментах написали, что на линуксе с этим проблем нет):

import webbrowser
print(webbrowser.get().name)
print(webbrowser.get().basename)

Поэтому, ищем решение для windows:

  • В реестре по пути HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice\Progid имя класса
  • В HKEY_CLASSES_ROOT\<class>\shell\open\command путь до exe

Пример:

from winreg import OpenKey, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT, QueryValueEx


def get_browser_command() -> str:
    path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice"
    with OpenKey(HKEY_CURRENT_USER, path) as key:
        browser_id = QueryValueEx(key, 'Progid')[0]

    path = browser_id + r"\shell\open\command"
    with OpenKey(HKEY_CLASSES_ROOT, path) as key:
        command = QueryValueEx(key, '')[0]

    return command


if __name__ == '__main__':
    print(get_browser_command())
    # "C:\Program Files\Mozilla Firefox\firefox.exe" -osint -url "%1"
→ Ссылка