Přejít k navigační liště

Zdroják » Různé » Nový Chrome 59 funguje i v headless módu bez uživatele a GUI

Nový Chrome 59 funguje i v headless módu bez uživatele a GUI

Články Různé

Představíme vám jednu z novinek, kterou přináší nová verze webového prohlížeče Chrome. Nazývá se headless Chrome a můžete ji použít k automatizaci.

Nálepky:

Tento týden vyšla stabilní verze 59 prohlížeče Google Chrome. Přináší zajímavé novinky. Vylepšení se dočkaly i vývojářské nástroje; jmenujme kupříkladu celostránkové screenshoty (funkce je poměrně dobře skrytá, s jejím nalezením vám pomůže video).

V tomto článku se soustředíme na jednu novinku s názvem headless Chrome. Ta umožňuje spustit prohlížeč Chrome bez grafického rozhraní, nechat ho vykonat požadovanou akci a ukončit. Hodí se tedy pro automatizaci.

Upozornění: Ve verzi Chrome 59 je headless Chrome podporován pouze na platformách Mac a Linux. Na podpoře pro Windows se stále pracuje, pokud jste nedočkaví, zkoušejte Chrome Canary, kde se může rozpracovaná funkce objevit.

TL;DR

Z příkazové řádky spustíte prohlížeč s parametrem --headless, např.:

chrome --headless https://www.zdrojak.cz

Aplikace se spustí bez grafického rozhraní, načte klasicky stránku, vyrenderuje ji, spustí skripty a opět se ukončí. Vy nic z toho neuvidíte, leda snad chybová upozornění v terminálu.

Co s tím dál?

Příklad výše zas tak moc zajímavý nebyl. Prohlížeč se spustil, načetl stránku a opět se ukončil. Nic víc. Můžeme ovšem přidat další parametry.

 Vypiš DOM

chrome --headless --dump-dom https://www.zdrojak.cz

Vypíše do terminálu DOM stránky, konkrétně document.body.outerHTML.

Vygeneruj PDF

chrome --headless --print-to-pdf https://www.zdrojak.cz

Uloží vyrenderovanou stránku do souboru output.pdf. Název souboru můžete určit sami --print-to-pdf=filename.pdf .

Ulož screenshot

chrome --headless --screenshot https://www.zdrojak.cz

Uloží do souboru screenshot.png náhled stránky. Název souboru můžete určit sami --screenshot=filename.png .

Nejedná se o náhled celé stránky, pouze o část, která by byla vidět v okně prohlížeče (kdyby nějaké okno zobrazil). Pokud chcete nastavit velikost okna prohlížeče, použijte --window-size=1600,1200 .

Snadno vygenerujete z vaší stránky sadu náhledů pro různá rozlišení, pokud chcete testovat responzivnost vašeho webu.

Spusť debugger

chrome --headless --remote-debugging-port=9222 https://www.zdrojak.cz

Tohle je první případ, po kterém se prohlížeč sám neukončí (dokud mu nepomůžete sami CTRL+C), místo toho „drží“ načtenou stránku, kterou sice nevidíte, ale můžete se k ní připojit a ladit ji. V tomto případě přes http://localhost:9222 . Jak to funguje, uvidíte na videu:

K ladění se využivá Chrome DevTools Protocol, který existuje již delší dobu, ovšem nyní ho můžete používat ve spojení s módem headless.

Upozornění: Google radí všechny příkazy módu headless používat společně s parametrem --disable-gpu. Nezkoumal jsem proč, pravděpodobně se jedná o nějakou nedořešenou chybu. Mně vše funguje i bez něj, příklady výše jsem tím nekomplikoval, nicméně správně mají příkazy vypadat takto:

chrome --headless --disable-gpu --remote-debugging-port=9222 https://www.zdrojak.cz

Tip: Pokud máte Mac OS X, nepotřebovali jste spouštět Chrome z terminálu, a jako já hledáte jeho cestu, pomůžu:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless https://www.zdrojak.cz

Závěr

Naše stručné představení tímto končí. Jistě vás nyní napadá řada věcí, na které lze mód headless použít. Libo třeba spustit headless Chrome, napojit se na něj debug protokolem a vykonat některé operace na stránce, to vše v rámci jednoho skriptu? Žádný problém. Některé nápady najdete probrané v odkazech níže.

Odkazy

Komentáře

Odebírat
Upozornit na
guest
5 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
segedacz

Jen malé typo.
Všude změnit htts:// na https://

thebost

Mal autor na mysli google-chrome? Pretoze chrome neexistuje:

$ which chrome | wc -l
0

Okrem toho, nezda sa ze by to bol nejaky dokumentovany prepinac, hoci tento prepinac skutocne nieco robi:

$ google-chrome --help | grep headless
$ google-chrome --headless
[0608/110255.868579:ERROR:gl_implementation.cc(246)] Failed to load /opt/google/chrome/libosmesa.so: /opt/google/chrome/libosmesa.so: cannot open shared object file: No such file or directory
[0608/110255.933837:ERROR:gpu_child_thread.cc(174)] Exiting GPU process due to errors during initialization
[0608/110255.937165:ERROR:browser_gpu_channel_host_factory.cc(103)] Failed to launch GPU process.
[0608/110255.981429:ERROR:browser_gpu_channel_host_factory.cc(103)] Failed to launch GPU process.
ivoszz

Tak podle výpisu to je asi ten důvod proč je potřeba přidat –disable-gpu.

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.