Любой способ запустить Google Chrome в режиме безголового?
Я тщательно пересмотрел список коммутаторов на http://peter.sh/experiments/chromium-command-line-switches/#chrome-frame, и я не смог найти ничего, что запустило Chrome в скрытом фоновом процессе.
Ближайшим я был в состоянии --keep-alive-for-test
+ пользовательское упакованное приложение, но приложение не может выполнить любой переданный код, потому что (как он сообщает) "no window - ChromeHidden".
Ответы
Ответ 1
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
Основные результаты:
- Библиотека, к которой могут обращаться безглавые приложения.
- Пример приложения, демонстрирующего использование безгласных 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: Похоже, что хром в конечном итоге получит параметр "--headless":
https://bugs.chromium.org/p/chromium/issues/detail?id=612904
В BlinkOn 6 (16/17 июня 2016 г.) была представлена презентация
Обновление 29 ноября 16: https://docs.google.com/document/d/1aIJUzQr3eougZQp90bp4mqGr5gY6hdUice8UPa-Ys90/edit#heading=h.qxqfzv2lj12s
Обновление 13 декабря: --headless
ожидается, что флаг скоро появится в Canary build
Обновление 12 марта 17: Chrome 57 имеет флаг --headless
. Ожидание селена и других инструментов, чтобы догнать. Руководство пользователя: https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
Ответ 2
Этот парень смог запустить Chrome без проблем, используя Xvfb (X virtual frame buffer), чтобы обмануть Chrome, подумав, что он отображает окно:
http://e-method.blogspot.fr/2010/11/google-chrome-with-xvfb-headless-server.html
Если вы в Linux, вы можете попробовать это.
Итак, в основном вам нужно установить X виртуальный буфер фрейма и Google Chrome с помощью:
[email protected]: ~# apt-get install xvfb imagemagick
[email protected]: ~# apt-get install google-chrome
Затем запустите браузер на дисплее:
[email protected]: ~# xvfb-run --server-args='-screen 0, 1024x768x24' \
google-chrome -start-maximized http://www.example.com \
> & /dev/null &
[email protected]: ~# DISPLAY=:99 import -window root myimage.png
Ответ 3
Или вы можете посмотреть PhantomJS проект, который представляет собой обезглавленную реализацию WebKit.
Ответ 4
Оказывается, он запускается в режиме без звука, если вы начинаете его как дочерний подпроцесс. Кроме того:
- nircmd.exe может выполнять
win hide
на chrome на основе своего PID
- Autohotkey_L также может запускать Chrome скрытым без кнопки панели задач.
Ответ 5
Вы можете настроить виртуальную машину Linux и использовать в ней 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 &
Ответ 6
Проект Chromium Embedded Framework кажется, что он может поместиться в ваш usecase. У меня нет личного опыта работы с проектом, но я слышал хорошие вещи, и у него есть надежный API, который вы сможете использовать для своих целей.
Ответ 7
У меня нет достаточной репутации, чтобы комментировать, но вы хотите, чтобы вы, ребята, знали, что хром безголовый режим, о котором упоминает Вануан, действительно работает с веб-сервером Selenium.
В Java вы можете передать флаг chrome через chromeDriver со следующим кодом:
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
ChromeDriver chromeDriver = new ChromeDriver(options);
Ответ 8
Недавно я нашел эту статью, в которой упоминаются несколько параметров командной строки, которые, похоже, делают это. Используя эти ключевые слова, я googled вне этот фрагмент кода, который, похоже, подтверждает, что эти параметры существуют.
// 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
сделала процесс хрома очень тихим. Я не заметил, что дети были порождены, и процесс быстро вышел. Я сомневаюсь, что это будет полезно для этого случая.
После неудачных попыток с этими параметрами я сосредоточился на менее сложных способах. В нижней части списка есть два варианта:
// 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, которое хранилось в Karma во время тестов. Я знаю, что могу переключиться на PhantomJS, но мне нужно было запустить их в Chrome, и окно, появившееся, было... ах.. беспокоило в долгосрочной перспективе.
Ответ 9
В настоящее время он находится в разработке, вы можете узнать больше об этом отсюда:
https://chromium.googlesource.com/chromium/src/+/master/headless/README.md
Headless Chromium - это библиотека для запуска Chromium в безголовую/серверную среду. Ожидаемые варианты использования включают загрузку веб-страниц страниц, извлечение метаданных (например, DOM) и создание растровых изображений из содержимое страницы - с использованием всех современных функций веб-платформы Chromium и Blink.
В настоящее время он работает на Linux, есть хороший presentation.
Ответ 10
Я также смог сделать хромированную безголовую работу с NightwatchJS. Вот конфигурация, которая позволяет мне ее использовать:
"chromeHeadless": {
"desiredCapabilities": {
"browserName": "chrome",
"chromeOptions": {
"args": ["--headless"],
"binary": "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
}
}
}
Ответ 11
Chrome 59 имеет возможность создавать экземпляр как безголовый.
Найдите нижеприведенный учебник
https://www.automation99.com/2017/07/how-to-use-chrome-headless-using.html?m=1