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.

Cesta URL: co se děje, než se načte webová stránka

Když do adresního řádku prohlížeče napíšete webovou adresu a stisknete Enter, spustí se fascinující řetězec procesů, které propojují váš počítač s celým světem. Od překladu doménového jména na IP adresu, přes navázání šifrovaného spojení, až po vykreslení každého pixelu na obrazovce - to všechno se odehraje během zlomků sekundy. Pojďme se podívat, co se mezitím děje pod kapotou webu.

Stav SIMD v Rustu v roce 2025

Různé
Komentáře: 1
SIMD - neboli Single Instruction, Multiple Data - znamená, že procesor může jednou instrukcí zpracovat více datových prvků najednou. Typicky to znamená, že místo sčítání dvou čísel přičtete dvě sady čísel paralelně. To může přinést výrazné zrychlení například při zpracování obrazu, audia nebo numerických výpočtů. Pokud již SIMD znáte, tato tabulka je vše, co budete potřebovat. A pokud s SIMD teprve začínáte, tabulku pochopíte do konce tohoto článku