مرجع خط فرمان Chrome Headless

پیتر کویتک
Peter Kvitek

پرچم‌های خط فرمان زیر در حالت Headless و در پوسته Headless در دسترس هستند.

--dump-dom

پرچم --dump-dom DOM سریالیزه شده صفحه هدف را در stdout چاپ می‌کند. برای مثال:

chrome --headless --dump-dom https://developer.chrome.com/

این با چاپ کد منبع HTML که ممکن است با curl انجام دهید متفاوت است. برای نمایش خروجی --dump-dom ، کروم ابتدا کد HTML را به یک DOM تجزیه می‌کند، هر <script> که ممکن است DOM را تغییر دهد اجرا می‌کند، سپس آن DOM را دوباره به یک رشته سریالی از HTML تبدیل می‌کند.

--screenshot

پرچم --screenshot از صفحه هدف اسکرین‌شات می‌گیرد و آن را با نام screenshot.png در دایرکتوری کاری فعلی ذخیره می‌کند. این ویژگی به ویژه در ترکیب با پرچم --window-size مفید است.

برای مثال:

chrome --headless --screenshot --window-size=412,892 https://developer.chrome.com/

--print-to-pdf

پرچم --print-to-pdf صفحه هدف را به عنوان یک فایل PDF با نام output.pdf در دایرکتوری کاری فعلی ذخیره می‌کند. برای مثال:

chrome --headless --print-to-pdf https://developer.chrome.com/

به صورت اختیاری، می‌توانید پرچم --no-pdf-header-footer را اضافه کنید تا سربرگ چاپ (شامل تاریخ و زمان فعلی) و پابرگ (شامل URL و شماره صفحه) حذف شوند.

chrome --headless --print-to-pdf --no-pdf-header-footer https://developer.chrome.com/

--timeout

پرچم --timeout حداکثر زمان انتظار (به میلی‌ثانیه) را تعریف می‌کند که پس از آن محتوای صفحه توسط --dump-dom ، --screenshot و --print-to-pdf حتی اگر صفحه هنوز در حال بارگیری باشد، ثبت می‌شود.

chrome --headless --print-to-pdf --timeout=5000 https://developer.chrome.com/

پرچم --timeout=5000 به کروم می‌گوید که قبل از چاپ PDF تا ۵ ثانیه صبر کند. بنابراین، اجرای این فرآیند حداکثر ۵ ثانیه طول می‌کشد.

--virtual-time-budget

گزینه‌ی --virtual-time-budget به عنوان یک "fast-forward" برای هر کد وابسته به زمان (مثلاً setTimeout / setInterval ) عمل می‌کند. این گزینه مرورگر را مجبور می‌کند تا هر یک از کدهای صفحه را با بیشترین سرعت ممکن اجرا کند، در حالی که صفحه باور می‌کند که زمان واقعاً می‌گذرد.

برای نشان دادن کاربرد آن، این نسخه آزمایشی را در نظر بگیرید که با استفاده از setTimeout(fn, 1000) هر ثانیه یک شمارنده را افزایش، ثبت و نمایش می‌دهد . کد مربوطه در اینجا آمده است:

<output>0</output>
<script>
  const element = document.querySelector('output');
  let counter = 0;
  setInterval(() => {
    counter++;
    console.log(counter);
    element.textContent = counter;
  }, 1_000);
</script>

بعد از یک ثانیه، صفحه شامل "1" می‌شود؛ بعد از دو ثانیه، "2" و به همین ترتیب. در اینجا نحوه ثبت وضعیت صفحه پس از 42 ثانیه و ذخیره آن به صورت PDF آورده شده است:

chrome --headless --print-to-pdf --virtual-time-budget=42000 https://mathiasbynens.be/demo/time

--allow-chrome-scheme-url

برای دسترسی به آدرس‌های اینترنتی chrome:// ، استفاده از پرچم --allow-chrome-scheme-url الزامی است. این پرچم از نسخه ۱۲۳ کروم در دسترس است. در اینجا مثالی آورده شده است:

chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu