Любой способ запустить Google Chrome в безголовом режиме?

я тщательно пересмотрел список переключателей на http://peter.sh/experiments/chromium-command-line-switches/#chrome-frame и я не мог найти ничего, что запустило бы Chrome в скрытом фоновом процессе.

самое близкое, что я смог-это --keep-alive-for-test + пользовательское упакованное приложение, но приложение не может выполнить любой переданный код, потому что (как он сообщает) "нет окна - ChromeHidden".

11 ответов


TL; DR

google-chrome --headless --remote-debugging-port=9222 http://example.com

еще нужно --disable-gpu временно.


учебник:

https://developers.google.com/web/updates/2017/04/headless-chrome


идет работа:https://code.google.com/p/chromium/issues/detail?id=546953

основные результаты:

  1. библиотека, которая безголовый приложения можно ссылку.
  2. пример приложения, которое демонстрирует использование Безголовых API.

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

Обновление 18 Апреля '16: работа в основном выполнена. Есть общественный форум теперь:

https://groups.google.com/a/chromium.org/forum/#!forum/headless-dev

ведется документация:

https://chromium.googlesource.com/chromium/src/+/master/headless/README.md

Обновление 20 '16 Сентября: похоже, что chrome в конечном итоге получит параметр " --headless: https://bugs.chromium.org/p/chromium/issues/detail?id=612904

там был презентация на BlinkOn 6 (16/17 июня 2016)

Обновление 29 Ноября '16: дизайн doc для --headless флаг: https://docs.google.com/document/d/1aIJUzQr3eougZQp90bp4mqGr5gY6hdUice8UPa-Ys90/edit#heading=h.qxqfzv2lj12s

Обновление 13 Декабря ' 16: --headless флаг, как ожидается, будет доступен в Канарских сборках в ближайшее время

Обновление 12 '17 Марта: Chrome 57 имеет --headless рабочий флаг. В ожидании Селен и другие инструменты, чтобы догнать. Руководство пользователя:https://chromium.googlesource.com/chromium/src/+/lkgr/безголовый / README.md


этому парню удалось запустить Chrome без головы, используя Xvfb( X virtual frame buffer), чтобы обмануть Chrome, думая, что он отображает окно:

http://e-method.blogspot.fr/2010/11/google-chrome-with-xvfb-headless-server.html

Если вы на Linux, вы можете попробовать это.

поэтому в основном вам нужно установить X virtual frame buffer и Google Chrome через:

root@localhost: ~# apt-get install xvfb imagemagick
root@localhost: ~# apt-get install google-chrome

затем запустите браузер на дисплее:

root@localhost: ~# xvfb-run --server-args='-screen 0, 1024x768x24' \
google-chrome -start-maximized http://www.example.com \
> & /dev/null &
root@localhost: ~# DISPLAY=:99 import -window root myimage.png

или вы можете посмотреть PhantomJS проект, который является безголовой реализацией WebKit.


вы можете настроить Linux VM и использовать xvfb в нем.

установка на debian / ubuntu:

sudo aptitude install xvfb

запустите Chrome без головы и посетите http://example.com:

xvfb-run --server-args='-screen 0, 1024x768x16' google-chrome 
    -start-maximized http://example.com > /dev/null &

оказывается, он запускается в безголовом режиме, если вы запускаете его как дочерний подпроцесс. Кроме того:--2-->

  • nircmd.exe может сделать win hide на chrome на основе его PID
  • Autohotkey_L также может запустить Chrome скрытый без кнопки панели задач

на Chromium Embedded Framework project Кажется, что это может соответствовать вашей usecase. У меня нет личного опыта работы с проектом, но я слышал хорошие вещи, и у него есть солидный API, который вы должны иметь возможность использовать для своих целей.


У меня пока недостаточно репутации для комментариев, но я хочу, чтобы вы, ребята, знали, что режим chrome headless, который упоминает Вануан, на самом деле работает с Selenium webdriver.

в Java вы можете передать флаг chrome через chromeDriver со следующим кодом:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);

Я недавно нашел в этой статье который упоминает несколько параметров командной строки, которые, похоже, делают это. Используя эти ключевые слова, я googled out этот кусок кода которые, похоже, подтверждают, что эти параметры существуют.

// Does not automatically open a browser window on startup (used when
// launching Chrome for the purpose of hosting background apps).
const char kNoStartupWindow[]               = "no-startup-window";

// Causes Chrome to launch without opening any windows by default. Useful if
// one wishes to use Chrome as an ash server.
const char kSilentLaunch[]                  = "silent-launch";

мне удалось успешно запустить Chrome с --no-startup-window и в самом деле он запущен без каких-либо окон. Похоже, он был запущен правильно, он породил всех типичных детей, но веб-сайт, который я пытался загрузить внутри, не казался на самом деле посетил. Возможно, этот безголовый режим предназначен только для запуска приложений, а не для посещения сайтов безголовых*), но он выглядит очень многообещающим, поскольку настроено обычное рабочее дерево, просто нет окон.

второй вариант --silent-launch сделал процесс chrome очень бесшумным. Я не заметил, чтобы дети рождались, и процесс быстро закончился. Сомневаюсь, что он пригодится для этого дела.

после того, как я провалил свои попытки с этими вариантами, я сосредоточился на менее сложных способах. На в нижней части списка есть два варианта:

// Specify the initial window position: --window-position=x,y
const char kWindowPosition[]                = "window-position";

// Specify the initial window size: --window-size=w,h
const char kWindowSize[]                    = "window-size";

я запустил Chrome с параметрами, чтобы переместить его полностью из рабочей области:

--window-size=800,600 --window-position=-800,0

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

*) да, я знаю, стараюсь делать странные вещи. По сути, я пытался избавиться от окна Chrome это сохраняется кармой во время тестов. Я знаю, что могу переключиться на PhantomJS, но мне специально нужно было запустить их в Chrome, и окно выскочило.. а.. тревожно в долгосрочной перспективе.


в настоящее время он находится в стадии разработки, вы можете прочитать более подробную информацию об этом здесь: https://chromium.googlesource.com/chromium/src / + / мастер / безголовый / README.md

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

в настоящее время он работает на Linux, есть хороший презентация.


Я также смог сделать chrome безголовым работать с NightwatchJS. Вот конфигурация, которая позволяет мне использовать ее:

    "chromeHeadless": {
  "desiredCapabilities": {
    "browserName": "chrome",
    "chromeOptions": {
      "args": ["--headless"],
      "binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
    }
  }
}

Chrome 59 имеет возможность создавать экземпляр как безголовый. Найти ниже учебник https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1