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

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.

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

Vystudoval jsem biochemii. Vymyslel a založil Zdroják. Aktuálně ho vedu. Nejsem váš hodný tatínek, který vás bude brát za ručičku, ale zlý moderátor diskusí. Smiřte se s tím!

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 5

Přehled komentářů

segedacz Typo
Martin Hassman Re: Typo
thebost
Martin Hassman Re:
ivoszz Re:
Zdroj: https://www.zdrojak.cz/?p=20099