Chrome Gözetimsiz moduyla, tarayıcıyı gözetimsiz bir ortamda çalıştırabilirsiniz. kullanıcı arayüzü olmadığından emin olun. Esasen, Chrome'u Chrome olmadan çalıştırabilirsiniz.
Gözetimsiz mod, aşağıdaki gibi projeler aracılığıyla tarayıcı otomasyonu için popüler bir seçenektir: Puppeteer veya ChromeDriver.
Gözetimsiz modu kullanma
Gözetimsiz modu kullanmak için --headless
komut satırı işaretini iletin:
chrome --headless
Eski Gözetimsiz modu kullan
Eskiden gözetimsiz mod
ayrı ve alternatif bir tarayıcı uygulaması
aynı Chrome ikili dosyasının parçası olarak gönderilmiş olan değişiklikleri görürsünüz. Paylaşılmadı
Chrome tarayıcı kodunun herhangi bir
//chrome
.
Chrome'da artık gözetimsiz ve gözetimli modlar birleştirilmiş.
Şu an için eski Gözetimsiz modu aşağıdakilerle hâlâ kullanılabilir:
chrome --headless=old
Puppeteer'da
Puppeteer'da gözetimsiz modunu kullanmak için:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({
headless: 'true', // (default) enables Headless
// `headless: 'old'` enables old Headless
// `headless: false` enables "headful" mode
});
const page = await browser.newPage();
await page.goto('https://developer.chrome.com/');
// …
await browser.close();
Selenium-WebDriver'da
Selenium-WebDriver'da gözetimsiz modu kullanmak için:
const driver = await env
.builder()
.setChromeOptions(options.addArguments('--headless'))
.build();
await driver.get('https://developer.chrome.com/');
// …
await driver.quit();
Diğer dil bağlamalarının kullanıldığı örnekler de dahil olmak üzere daha fazla bilgi için Selenium ekibinin blog yayınına bakın.
Komut satırı işaretleri
Aşağıdaki komut satırı işaretleri, gözetimsiz modda kullanılabilir.
--dump-dom
--dump-dom
işareti, hedef sayfanın serileştirilmiş DOM'sini stdout'a yazdırır.
Örneğin:
chrome --headless --dump-dom https://developer.chrome.com/
Bu işlem, HTML kaynak kodunu yazdırmadan farklıdır.
curl
Chrome, --dump-dom
çıktısını sağlamak için önce HTML'yi ayrıştırır.
bir DOM'ye aktarması için, DOM'yi değiştirebilecek herhangi bir <script>
öğesini yürütür ve ardından
bu DOM'yi, serileştirilmiş bir HTML dizesine geri dönüştürür.
--screenshot
--screenshot
işareti, hedef sayfanın ekran görüntüsünü alır ve
screenshot.png
mevcut çalışma dizininde. Bu, özellikle de
--window-size
işaretiyle birlikte gösterilir.
Örneğin:
chrome --headless --screenshot --window-size=412,892 https://developer.chrome.com/
--print-to-pdf
--print-to-pdf
işareti, hedef sayfayı output.pdf
adlı bir PDF dosyası olarak kaydeder
mevcut çalışma dizinine ekleyin. Örneğin:
chrome --headless --print-to-pdf https://developer.chrome.com/
İsteğe bağlı olarak, yazdırmayı atlamak için --no-pdf-header-footer
işaretini ekleyebilirsiniz.
üstbilgi (geçerli tarih ve saat ile) ve altbilgi (geçerli tarih ve saat ile)
sayı).
chrome --headless --print-to-pdf --no-pdf-header-footer https://developer.chrome.com/
Not: --no-pdf-header-footer
işaretinin arkasındaki işlev daha önce sunuluyordu.
--print-to-pdf-no-header
işaretiyle kullanılabilir. Proje zaman çizelgesine
eski bayrak adına (eski) denk geliyor.
--timeout
--timeout
işareti, maksimum bekleme süresini (milisaniye cinsinden) tanımlar.
Sayfanın içeriği --dump-dom
, --screenshot
ve
--print-to-pdf
(sayfa hâlâ yükleniyor olsa bile).
chrome --headless --print-to-pdf --timeout=5000 https://developer.chrome.com/
--timeout=5000
işareti, Chrome'a yazdırmadan önce 5 saniye kadar beklemesini bildirir
PDF'de bulabilirsiniz. Dolayısıyla bu işlemin çalışması en fazla 5 saniye sürer.
--virtual-time-budget
--virtual-time-budget
, "ileri sarma" işlevi görür zamana bağlı herhangi bir kod için
(örneğin, setTimeout
/setInterval
). Tarayıcının, tarayıcı tarafından
kodu mümkün olduğunca hızlı bir şekilde düzenleyerek, sayfanın
zaman geçiyor.
Nasıl kullanıldığını göstermek için
artımlar, günlük kayıtları ve her saniyede bir sayaç gösterir
setTimeout(fn, 1000)
kullanılıyor. İlgili kod aşağıda verilmiştir:
<output>0</output>
<script>
const element = document.querySelector('output');
let counter = 0;
setInterval(() => {
counter++;
console.log(counter);
element.textContent = counter;
}, 1_000);
</script>
Bir saniye sonra sayfa "1" değerini içerir; iki saniye sonra, "2" vb. 42 saniye sonra sayfanın durumunu nasıl yakalayacağınız ve PDF olarak nasıl kaydedeceğiniz aşağıda açıklanmıştır:
chrome --headless --print-to-pdf --virtual-time-budget=42000 https://mathiasbynens.be/demo/time
--allow-chrome-scheme-url
chrome://
URL'ye erişmek için --allow-chrome-scheme-url
işareti gerekir.
Bu işaret, Chrome 123 sürümünde kullanıma sunulmuştur. Aşağıda bununla ilgili bir örnek verilmiştir:
chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu
Hata Ayıklama
Chrome, gözetimsiz modda etkili şekilde görünmez olduğundan kulağa karmaşık gelebilir. bir teknik daha var. Gözetimsiz Chrome'da hata ayıklamak için söylediğimiz başlık düzeyi Chrome'a benzer.
Chrome'u
--remote-debugging-port
komut satırı işareti.
chrome --headless --remote-debugging-port=0 https://developer.chrome.com/
Bu, stdout'a benzersiz bir WebSocket URL'si yazdırır. Örneğin:
DevTools listening on ws://127.0.0.1:60926/devtools/browser/b4bd6eaa-b7c8-4319-8212-225097472fd9
Dikkatli bir Chrome örneğinde, oluşturduğumuz Bağlanmak için Chrome Geliştirici Araçları uzaktan hata ayıklama denetlemesi gerekir.
chrome://inspect
sayfasına gidin ve Yapılandır... düğmesini tıklayın.- WebSocket URL'sindeki IP adresini ve bağlantı noktası numarasını girin.
- Önceki örnekte
127.0.0.1:60926
değerini girdim.
- Önceki örnekte
- Bitti'yi tıklayın. Uzak Hedef tüm sekmeleriyle birlikte görünür ve listelenen diğer hedefler.
- Chrome Geliştirici Araçları'na erişmek ve uzaktan kumandayı incelemek için inspect'yi tıklayın. Sayfanın canlı görünümü dahil gözetimsiz hedef.
Geri bildirim
Gözetimsiz mod hakkındaki geri bildiriminizi öğrenmek için sabırsızlanıyoruz. Eğer hata bildiriminde bulunun.