Un guide pas à pas pour installer Headless Chromium sur Ubuntu et CentOS
Qu’est-ce que Headless Chrome ?
Headless Chrome revient à exécuter un navigateur Chrome sans interface utilisateur (navigateur), c’est-à-dire qu’il fonctionne dans un environnement headless, ce qui est très utile pour exécuter des tests automatisés
Alors, qu’est-ce que Headless Chrome débloque pour nous ?
L’une des choses les plus intéressantes est la possibilité de tester les dernières et les meilleures fonctionnalités de la plateforme web, comme les modules ES6, les travailleurs de service et les flux. Avec Headless Chrome, vous pouvez écrire des applications et les tester avec un rendu actualisé. L’autre chose qu’il débloque, ce sont ces fonctionnalités géniales comme l’étranglement du réseau, l’émulation des appareils et la couverture du code
Avec headless chrome, vous pouvez effectuer des tests sans même écrire une ligne de code
Vous pouvez simplement les exécuter via la ligne de commande. Vous trouverez ci-dessous quelques-uns des drapeaux les plus utilisés
–
-screenshot #prendre une capture d'écran
--print-to-pdf #convertir une <a href="https://geekflare.com/webpage-to-pdf-tools/">page web en PDF</a>
–dump-dom
#dump DOM (document object model) data
Note – ceci est différent du navigateur Chromium
Installation de Chromium sur Ubuntu
Étape 1 : Mise à jour d’Ubuntu
Pour commencer, mettez à jour les paquets dans Ubuntu
geekflare@geekflare:~$ sudo apt-get update
Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease
Hit:2 http://security.ubuntu.com/ubuntu cosmic-security InRelease
Hit:3 http://ppa.launchpad.net/ansible/ansible/ubuntu cosmic InRelease
Hit:5 http://apt.puppetlabs.com bionic InRelease
Ign:6 http://pkg.jenkins.io/debian-stable binary/ InRelease
Hit:7 http://us.archive.ubuntu.com/ubuntu cosmic InRelease
Hit:8 http://ppa.launchpad.net/canonical-chromium-builds/stage/ubuntu cosmic InRelease
Hit:9 http://pkg.jenkins.io/debian-stable binary/ Release
Hit:10 http://us.archive.ubuntu.com/ubuntu cosmic-updates InRelease
Hit:11 http://us.archive.ubuntu.com/ubuntu cosmic-backports InRelease
Hit:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Lecture des listes de paquets... Terminé
Étape 2 : Installer les dépendances
Installez les dépendances nécessaires à l’installation
geekflare@geekflare:~$ sudo apt-get install -y libappindicator1 fonts-liberation
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
fonts-liberation est déjà la version la plus récente (1:1.07.4-7).
fonts-liberation est installé manuellement.
Le paquet suivant a été installé automatiquement et n'est plus requis :
chromium-codecs-ffmpeg-extra
Utilisez 'sudo apt autoremove' pour le supprimer.
Les paquets supplémentaires suivants seront installés :
libdbusmenu-gtk4 libindicator7
Paquets suggérés :
indicator-application
Les NOUVEAUX paquets suivants seront installés :
libappindicator1 libdbusmenu-gtk4 libindicator7
0 mis à niveau, 3 nouvellement installés, 0 à supprimer et 238 non mis à niveau.
Besoin de récupérer 68.2 kB d'archives.
Après cette opération, 280 kB d'espace disque supplémentaire seront utilisés.
Get:1 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libdbusmenu-gtk4 amd64 16.04.1 18.10.20180917-0ubuntu1 [27.1 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libindicator7 amd64 16.10.0 18.04.20180321.1-0ubuntu1 [21.7 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 libappindicator1 amd64 12.10.1 18.04.20180322.1-0ubuntu1 [19.4 kB]
Fetched 68.2 kB in 1s (61.1 kB/s)
Sélectionne le paquet précédemment non sélectionné libdbusmenu-gtk4:amd64.
(Lecture de la base de données ... 318270 fichiers et répertoires actuellement installés.)
Préparation du déballage de .../libdbusmenu-gtk4_16.04.1 18.10.20180917-0ubuntu1_amd64.deb ...
Déballage de libdbusmenu-gtk4:amd64 (16.04.1 18.10.20180917-0ubuntu1) ...
Sélection du paquet non sélectionné précédemment libindicator7.
Préparation du déballage de .../libindicator7_16.10.0 18.04.20180321.1-0ubuntu1_amd64.deb ...
Déballage de libindicator7 (16.10.0 18.04.20180321.1-0ubuntu1) ...
Sélection du paquet libappindicator1 précédemment non sélectionné.
Préparation du déballage de .../libappindicator1_12.10.1 18.04.20180322.1-0ubuntu1_amd64.deb ...
Déballage de libappindicator1 (12.10.1 18.04.20180322.1-0ubuntu1) ...
Installation de libindicator7 (16.10.0 18.04.20180321.1-0ubuntu1) ......
Mise en place de libdbusmenu-gtk4:amd64 (16.04.1 18.10.20180917-0ubuntu1) ...
Traitement des déclencheurs pour libc-bin (2.28-0ubuntu1) ...
Mise en place de libappindicator1 (12.10.1 18.04.20180322.1-0ubuntu1) ...
Traitement des déclencheurs pour libc-bin (2.28-0ubuntu1) ...
libappindicator1 : Cette bibliothèque est utilisée pour exporter le menu d'une application dans un panneau
fonts-liberation : Cette bibliothèque a des métriques de polices similaires à celles d'Arial, Times et Courier
Dans certains cas, il peut manquer quelques dépendances pour installer chrome. Exécutez donc la commande ci-dessous, elle installera toutes les dépendances manquantes nécessaires à l’installation de chrome
geekflare@geekflare:~$ sudo apt-get install -f
Les paquets supplémentaires suivants seront installés :
at-spi2-core cpp cpp-7 dconf-gsettings-backend dconf-service gcc-7-base glib-networking glib-networking-common
glib-networking-services gsettings-desktop-schemas libappindicator3-1 libasound2 libasound2-data libatk-bridge2.0-0
libatspi2.0-0 libauthen-sasl-perl libcairo-gobject2 libcolord2 libdata-dump-perl libdbusmenu-gtk3-4 libdconf1
libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libencode-locale-perl libepoxy0 libfile-basedir-perl
libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libfont-afm-perl libfontenc1 libgl1
libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgtk-3-0 libgtk-3-bin libgtk-3-common
libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl
libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libindicator3-7
libio-html-perl libio-socket-ssl-perl libipc-system-simple-perl libisl19 libjson-glib-1.0-0 libjson-glib-1.0-common
liblcms2-2 libllvm9 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmpc3 libnet-dbus-perl
libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnspr4 libnss3 libpciaccess0 libproxy1v5 librest-0.7-0
libsensors4 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libtie-ixhash-perl libtimedate-perl libtry-tiny-perl liburi-perl
libwayland-client0 libwayland-cursor0 libwayland-egl1 libwww-perl libwww-robotrules-perl libx11-protocol-perl
libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxft2
libxkbcommon0 libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxshmfence1 libxss1 libxt6
libxtst6 libxv1 libxxf86dga1 libxxf86vm1 perl-openssl-defaults x11-common x11-utils x11-xserver-utils xdg-utils
Paquets suggérés :
cpp-doc gcc-7-locales indicator-application libasound2-plugins alsa-utils libdigest-hmac-perl libgssapi-perl colord
gvfs liblcms2-utils libcrypt-ssleay-perl lm-sensors libauthen-ntlm-perl libunicode-map8-perl libunicode-string-perl
xml-twig-tools mesa-utils nickle cairo-5c xorg-docs-core
Les NOUVEAUX paquets suivants seront installés :
at-spi2-core cpp cpp-7 dconf-gsettings-backend dconf-service gcc-7-base glib-networking glib-networking-common
glib-networking-services gsettings-desktop-schemas libappindicator3-1 libasound2 libasound2-data libatk-bridge2.0-0
libatspi2.0-0 libauthen-sasl-perl libcairo-gobject2 libcolord2 libdata-dump-perl libdbusmenu-gtk3-4 libdconf1
libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libencode-locale-perl libepoxy0 libfile-basedir-perl
libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libfont-afm-perl libfontenc1 libgl1
libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgtk-3-0 libgtk-3-bin libgtk-3-common
libhtml-form-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl
libhttp-daemon-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6 libindicator3-7
libio-html-perl libio-socket-ssl-perl libipc-system-simple-perl libisl19 libjson-glib-1.0-0 libjson-glib-1.0-common
liblcms2-2 libllvm9 liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmpc3 libnet-dbus-perl
libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libnspr4 libnss3 libpciaccess0 libproxy1v5 librest-0.7-0
libsensors4 libsm6 libsoup-gnome2.4-1 libsoup2.4-1 libtie-ixhash-perl libtimedate-perl libtry-tiny-perl liburi-perl
libwayland-client0 libwayland-cursor0 libwayland-egl1 libwww-perl libwww-robotrules-perl libx11-protocol-perl
libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-shape0 libxcb-sync1 libxft2
libxkbcommon0 libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxshmfence1 libxss1 libxt6
libxtst6 libxv1 libxxf86dga1 libxxf86vm1 perl-openssl-defaults x11-common x11-utils x11-xserver-utils xdg-utils
0 mis à niveau, 117 nouvellement installés, 0 à supprimer et 58 non mis à niveau.
1 n'est pas complètement installé ou supprimé.
Besoin de récupérer 40,7 Mo d'archives.
Après cette opération, 369 Mo d'espace disque supplémentaire seront utilisés.
Voulez-vous continuer ? [Y/n] Y
Récupéré 40.7 MB en 4s (9470 kB/s)
Extraction des modèles à partir des paquets : 100%
Étape 3 : Télécharger Chrome
Téléchargez le paquetage stable de google chrome pour le système Ubuntu
geekflare@geekflare:~$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
--2020-01-15 13:58:41-- https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Résolution de dl.google.com (dl.google.com)... 172.217.163.78, 2404:6800:4007:80c::200e
Connexion à dl.google.com (dl.google.com)|172.217.163.78|:443... connecté.
Requête HTTP envoyée, en attente de réponse... 200 OK
Longueur : 62204098 (59M) [application/x-debian-package]
Enregistrement dans : 'google-chrome-stable_current_amd64.deb'
google-chrome-stable_current_amd64. 100%[=================================================================>] 59.32M 11.1MB/s in 29s
2020-01-15 13:59:10 (2.04 MB/s) - 'google-chrome-stable_current_amd64.deb' sauvegardé [62204098/62204098]
Étape 4 : Installer Chrome
Installez le paquet stable
geekflare@geekflare:~$ sudo dpkg -i google-chrome*.deb
Sélection du paquetage google-chrome-stable précédemment non sélectionné.
(Lecture de la base de données ... 318285 fichiers et répertoires actuellement installés.)
Préparation du déballage de google-chrome-stable_current_amd64.deb ...
Décompression de google-chrome-stable (79.0.3945.117-1) ...
Installation de google-chrome-stable (79.0.3945.117-1) ...
update-alternatives : utilisation de /usr/bin/google-chrome-stable pour fournir /usr/bin/x-www-browser (x-www-browser) en mode automatique
update-alternatives : utilisation de /usr/bin/google-chrome-stable pour fournir /usr/bin/gnome-www-browser (gnome-www-browser) en mode automatique
update-alternatives : utilisation de /usr/bin/google-chrome-stable pour fournir /usr/bin/google-chrome (google-chrome) en mode automatique
Traitement des déclencheurs pour gnome-menus (3.
13.
3-11ubuntu2) ...
Traitement des déclencheurs pour desktop-file-utils (0.23-3ubuntu2) ...
Traitement des déclencheurs pour mime-support (3.60ubuntu1) ...
Traitement des déclencheurs pour man-db (2.8.4-2) .
.
Étape 5 : Vérifier la version de Chrome
Pour confirmer que l’installation s’est bien terminée, vérifiez la version de Google Chrome
geekflare@geekflare:~$ google-chrome-stable -version
Google Chrome 79.0.3945.117
Facultatif : Exécutez Chrome Headless
Laissez-moi vous montrer un exemple d’exécution de Chrome en mode headless
Je vais exécuter Chrome en mode headless, et tout le contenu de https://gf.dev/ sera sauvegardé en tant que fichier pdf
geekflare@geekflare:~$ google-chrome-stable --headless --disable-gpu --print-to-pdf https://gf.dev/
[0115/140930.772108:INFO:headless_shell.cc(620)] Écriture dans le fichier output.pdf
Vous pouvez voir le fichier output.pdf
geekflare@geekflare:~$ ls -l out*
-rw——-
1 geekflare geekflare 80799 Jan 15 14:09 output.pdf
geekflare@geekflare:~
$
Ensuite, je vais vous montrer comment faire la même installation sur le système CentOS
Installation de Chromium sur CentOS
Étape 1 : Mise à jour de CentOS
Mettez à jour le système CentOS avec la commande suivante
[geekflare@geekflare ~]$ sudo yum update
Etape 2 : Créer un dépôt Chrome
Ajoutez le dépôt google chrome au système. Créez un fichier google-chrome.repo dans /etc/yum.repos.d/ et ajoutez les détails ci-dessous
[geekflare@geekflare ~]$ sudo gedit /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
Étape 3 : Installer Chrome
Exécutez la commande yum ci-dessous pour installer google chrome sur le système CentOS
[geekflare@geekflare ~]$ sudo yum install google-chrome-stable
Dernière vérification de l'expiration des métadonnées : 0:04:04 ago on Wed 22 Jan 2020 01:06:24 PM EST.
Dépendances résolues.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing :
google-chrome-stable x86_64 79.0.3945.130-1 google-chrome 60 M
Installation des dépendances :
libXScrnSaver x86_64 1.2.3-1.el8 AppStream 31 k
libappindicator-gtk3 x86_64 12.10.0-19.el8 AppStream 43 k
libdbusmenu x86_64 16.04.0-12.el8 AppStream 140 k
libdbusmenu-gtk3 x86_64 16.04.0-12.el8 AppStream 41 k
libindicator-gtk3 x86_64 12.10.1-14.el8 AppStream 70 k
liberation-fonts noarch 1:2.00.3-4.el8 BaseOS 19 k
liberation-serif-fonts noarch 1:2.00.3-4.el8 BaseOS 607 k
Résumé de la transaction
================================================================================
Installer 8 paquets
Taille totale du téléchargement : 60 M
Taille installée : 213 M
Est-ce que c'est ok [y/N] : y
Téléchargement des paquets :
(1/8) : libXScrnSaver-1.2.3-1.el8.x86_64.rpm 146 kB/s | 31 kB 00:00
(2/8) : libappindicator-gtk3-12.10.0-19.el8.x86_ 171 kB/s | 43 kB 00:00
(3/8) : libdbusmenu-gtk3-16.04.0-12.el8.x86_64.r 691 kB/s | 41 kB 00:00
(4/8) : libindicator-gtk3-12.10.1-14.el8.x86_64. 558 kB/s | 70 kB 00:00
(5/8) : liberation-fonts-2.00.3-4.el8.noarch.rpm 74 kB/s | 19 kB 00:00
(6/8) : liberation-serif-fonts-2.00.3-4.el8.noar 1.3 MB/s | 607 kB 00:00
(7/8) : libdbusmenu-16.04.0-12.el8.x86_64.rpm 121 kB/s | 140 kB 00:01
(8/8) : google-chrome-stable-79.0.3945.130-1.x86 8.4 MB/s | 60 MB 00:07
--------------------------------------------------------------------------------
Total 6.5 MB/s | 60 MB 00:09
warning : /var/cache/dnf/google-chrome-eb0d6f10ccbdafba/packages/google-chrome-stable-79.0.3945.130-1.x86_64.rpm : Header V4 DSA/SHA1 Signature, key ID 7fac5991 : NOKEY
google-chrome 49 kB/s | 10 kB 00:00
Importation de la clé GPG 0x7FAC5991 :
Userid : "Google, Inc. Linux Package Signing Key <linux-packages-keymaster@google.com>"
Empreinte digitale : 4CCA 1EAF 950C EE4A B839 76DC A040 830F 7FAC 5991
From : https://dl-ssl.google.com/linux/linux_signing_key.pub
Is this ok [y/N] : y
Key imported successfully
Importing GPG key 0xD38B4796 :
Userid : "Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>"
Fingerprint : EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796
From : https://dl-ssl.google.com/linux/linux_signing_key.pub
Is this ok [y/N] : y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : libdbusmenu-16.04.0-12.el8.x86_64 1/8
Installing : libdbusmenu-gtk3-16.04.0-12.el8.x86_64 2/8
Installing : liberation-serif-fonts-1:2.00.3-4.el8.noarch 3/8
Installation : liberation-fonts-1:2.00.3-4.el8.noarch 4/8
Installation : libindicator-gtk3-12.10.1-14.el8.x86_64 5/8
Installation : libappindicator-gtk3-12.10.0-19.el8.x86_64 6/8
Installation : libXScrnSaver-1.2.3-1.el8.x86_64 7/8
Exécution du scriptlet : google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Installation : google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Exécution du scriptlet : google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Redirection vers /bin/systemctl start atd.service
Vérification : libXScrnSaver-1.2.3-1.el8.x86_64 1/8
Vérification : libappindicator-gtk3-12.10.0-19.el8.x86_64 2/8
Vérification : libdbusmenu-16.04.0-12.el8.x86_64 3/8
Vérification : libdbusmenu-gtk3-16.04.0-12.el8.x86_64 4/8
Vérification : libindicator-gtk3-12.10.1-14.el8.x86_64 5/8
Vérification : liberation-fonts-1:2.00.3-4.el8.noarch 6/8
Vérification : liberation-serif-fonts-1:2.00.3-4.el8.noarch 7/8
Vérification : google-chrome-stable-79.0.3945.130-1.x86_64 8/8
Installé :
google-chrome-stable-79.0.3945.130-1.x86_64
libXScrnSaver-1.2.3-1.el8.x86_64
libappindicator-gtk3-12.10.0-19.el8.x86_64
libdbusmenu-16.04.0-12.el8.x86_64
libdbusmenu-gtk3-16.04.0-12.el8.x86_64
libindicator-gtk3-12.10.1-14.el8.x86_64
liberation-fonts-1:2.00.3-4.el8.noarch
liberation-serif-fonts-1:2.00.3-4.el8.noarch
Terminé !
Étape 4 : Vérifiez la version de Chrome
Pour confirmer que l’installation s’est bien terminée, vérifiez la version de Google Chrome
[geekflare@geekflare ~]$ google-chrome -version
Google Chrome 79.0.3945.130
Facultatif : Exécutez Chrome sans tête
Laissez-moi vous montrer un exemple d’exécution de Chrome en mode headless sur CentOS
Je vais prendre l’exemple de la capture d’écran. La commande ci-dessous lancera chrome en mode headless, et tout le contenu de https://www.chromestatus.com/ sera sauvegardé en tant que fichier pdf
[geekflare@geekflare ~]$ google-chrome-stable --headless --disable-gpu --print-to-pdf https://www.chromestatus.com/
[0122/131602.193881:INFO:headless_shell.cc(620)] Écrit dans le fichier output.pdf
Le fichier output.pdf a été créé et contient tout le contenu de https://www.chromestatus.com/
[geekflare@geekflare ~]$ ls -l
total 61208
drwxr-xr-x. 2 geekflare geekflare 6 Sep 25 11:49 Desktop
drwxr-xr-x. 2 geekflare geekflare 6 Sep 25 11:49 Documents
drwxr-xr-x. 2 geekflare geekflare 6 Sep 25 11:49 Downloads
-rw-rw-r--. 1 geekflare geekflare 180 Jan 22 13:05 google-chrome.repo
-rw-------. 1 geekflare geekflare 146776 Jan 22 13:16 output.pdf
Voilà comment installer Chrome sur Ubuntu et CentOS et le faire fonctionner en mode headless.
-
Avi est un passionné de technologie avec une expertise dans les technologies en vogue telles que DevOps, Cloud Computing, Big Data et bien d'autres. Il est passionné par l'apprentissage des technologies de pointe et le partage de ses connaissances avec d'autres... en savoir plus