Некоторые из ваших вариантов касаются управления браузером (# 1, # 2), в то время как другие касаются встраивания браузера (# 3, # 4).Это два разных варианта использования, и то, что вам нужно, зависит от вашей цели.
Управление браузером
Если вы хотите управлять браузером для выполнения задач, возможно, даже в фоновом режиме безконечный пользователь заметил, вам следует выбрать вариант 1 (кукловод) или 2 (интерфейс chrome-remote).
Я рекомендую использовать puppeteer , поскольку это библиотека, разработанная Google Chromeразработчики, и он поставляется со многими функциями для вашего случая использования (открытие окон браузера, навигация, настройка файлов cookie).
Я не вижу причин для беспокойства по поводу того, что Chrome DevTools Protocol может быть в любой момент отмененскоро.Chrome DevTools полностью полагаются на этот протокол.Кроме того, Firefox (средство отслеживания ошибок Mozilla: # 1316741 , # 1523097 ) и Edge уже частично поддерживают протокол, что делает его еще более маловероятным в случае отказа от него.будущее.( дополнительная информация )
Встраивание браузера
Если вам нужно встроить браузер, то есть вы пытаетесь показать браузер внутри приложения, вам следует сосредоточиться наварианты 3 (Chrome Embedded Framework) или 4 (Electron).
Chrome Embedded Framework - это более низкоуровневый подход, предусматривающий использование отдельного браузера в вашем приложении.Но я не могу здесь вдаваться в подробности, так как я никогда не использовал это сам.
Электрон с другой стороны - это браузер, то есть все приложение разработанокак веб-приложение.Вы можете встроить другое окно браузера ( webview ) в свой браузер, которым вы можете управлять (по аналогии с тем, что умеет кукловод).
Непосредственно с помощью кода Chromium (опция 5)
Хотя проект Chromium разделен на несколько компонентов, похоже, вам нужен полноценный браузер.Однажды я сам скомпилировал исходный код Chromium, и это занимает буквально часы.Имейте в виду, что он состоит из примерно 35 миллионов строк кода ( source ).Даже если вы выясните, какие части кода использовать, более реалистично, что некоторые низкоуровневые части кода изменяют и нарушают вашу реализацию, чем отказ от DevTools Protocol.Итак, я определенно рекомендую не следовать этой идее.
Альтернативы
В зависимости от вашего случая использования, вы также можете взглянуть на библиотеки имитации DOM, такие как jsdom или здор`ово .Эти библиотеки очень ограничены с точки зрения их функциональности, и вам, возможно, придется реализовать части браузера самостоятельно, например, загрузить документ, прочитать и настроить заголовки для работы с файлами cookie и т. Д.
В целомЯ рекомендую пойти на кукольника, если вы хотите управлять браузером для выполнения задач в основном в фоновом режиме.Если вам нужно окно браузера как часть вашего приложения, перейдите на Electron.