Chrome हेडलेस मोड की मदद से, ब्राउज़र को ऐसी जगह पर चलाया जा सकता है जिसका इस्तेमाल न हो, बिना किसी यूज़र इंटरफ़ेस (यूआई) के. ज़रूरी है कि आप Chrome के बिना भी Chrome का इस्तेमाल करें.
बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला मोड, ब्राउज़र ऑटोमेशन के लिए लोकप्रिय विकल्प है. यह कई प्रोजेक्ट की मदद से काम करता है Puppeteer या ChromeDriver.
बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला मोड इस्तेमाल करें
हेडलेस मोड का इस्तेमाल करने के लिए, --headless
कमांड लाइन फ़्लैग को पास करें:
chrome --headless
बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला पुराना मोड इस्तेमाल करें
पहले, बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला ब्राउज़र मोड था
एक अलग, वैकल्पिक ब्राउज़र को लागू करना
जो कि उसी Chrome बाइनरी के हिस्से के रूप में शिप किए गए हों. इसने शेयर नहीं किया
Chrome ब्राउज़र के किसी भी कोड को
//chrome
.
Chrome में अब हेडलेस और हेडफ़ुल मोड मिलेंगे.
फ़िलहाल, बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला पुराना मोड, अब भी इनके साथ उपलब्ध है:
chrome --headless=old
इन पपीटीयर
Puppeteer में हेडलेस मोड का इस्तेमाल करने के लिए:
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();
Celenium-WebDriver में
Celenium-WebDriver में हेडलेस मोड का इस्तेमाल करने के लिए:
const driver = await env
.builder()
.setChromeOptions(options.addArguments('--headless'))
.build();
await driver.get('https://developer.chrome.com/');
// …
await driver.quit();
ज़्यादा जानकारी के लिए, Selenium टीम की ब्लॉग पोस्ट देखें. इसमें, भाषा की अन्य बाइंडिंग के उदाहरण भी शामिल हैं.
कमांड लाइन फ़्लैग
हेडलेस मोड में, यहां दिए गए कमांड लाइन फ़्लैग उपलब्ध हैं.
--dump-dom
--dump-dom
फ़्लैग, टारगेट पेज के सीरियल वाले DOM को stdout पर प्रिंट करता है.
उदाहरण के लिए:
chrome --headless --dump-dom https://developer.chrome.com/
यह एचटीएमएल सोर्स कोड को प्रिंट करने से अलग है. एचटीएमएल सोर्स कोड का इस्तेमाल किया जा सकता है
curl
. आपको --dump-dom
का आउटपुट देने के लिए, Chrome सबसे पहले एचटीएमएल को पार्स करता है
कोड को 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
फ़्लैग, टारगेट पेज को output.pdf
नाम के PDF के तौर पर सेव करता है
काम कर रही मौजूदा डायरेक्ट्री पर क्लिक करें. उदाहरण के लिए:
chrome --headless --print-to-pdf https://developer.chrome.com/
इसके अलावा, फ़ोटो का प्रिंट हटाने के लिए, --no-pdf-header-footer
फ़्लैग भी जोड़ा जा सकता है
हेडर (मौजूदा तारीख और समय के साथ) और फ़ुटर (यूआरएल और पेज के साथ)
संख्या).
chrome --headless --print-to-pdf --no-pdf-header-footer https://developer.chrome.com/
नहीं: --no-pdf-header-footer
फ़्लैग के पीछे की सुविधा पहले थी
--print-to-pdf-no-header
फ़्लैग के साथ उपलब्ध है. आपको वापस जाना पड़ सकता है
अगर पुराने वर्शन का इस्तेमाल किया जा रहा है, तो फ़्लैग का पुराना नाम.
--timeout
--timeout
फ़्लैग ज़्यादा से ज़्यादा इंतज़ार के समय (मिलीसेकंड में) के बारे में बताता है, जिसके बाद
पेज के कॉन्टेंट को --dump-dom
, --screenshot
, और
--print-to-pdf
भले ही पेज अब भी लोड हो रहा हो.
chrome --headless --print-to-pdf --timeout=5000 https://developer.chrome.com/
--timeout=5000
फ़्लैग Chrome को प्रिंट करने से पहले 5 सेकंड तक इंतज़ार करने के लिए कहता है
है. इसलिए, इस प्रोसेस को चलने में ज़्यादा से ज़्यादा पांच सेकंड लगते हैं.
--virtual-time-budget
--virtual-time-budget
"फ़ास्ट फ़ॉरवर्ड" की तरह काम करता है किसी भी समय-निर्भर कोड के लिए
(उदाहरण के लिए, 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 123 में उपलब्ध है. यहां एक उदाहरण दिया गया है:
chrome --headless --print-to-pdf --allow-chrome-scheme-url chrome://gpu
डीबग
हेडलेस मोड में Chrome दिखता नहीं है. इसलिए, यह थोड़ा मुश्किल लग सकता है का इस्तेमाल करें. बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले Chrome को इस तरह से डीबग किया जा सकता है कि यह हेडफ़ुल Chrome की तरह है.
Chrome को बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले ब्राउज़र मोड में लॉन्च करें
--remote-debugging-port
कमांड लाइन फ़्लैग.
chrome --headless --remote-debugging-port=0 https://developer.chrome.com/
यह stdout पर एक यूनीक WebSocket यूआरएल प्रिंट करता है, उदाहरण के लिए:
DevTools listening on ws://127.0.0.1:60926/devtools/browser/b4bd6eaa-b7c8-4319-8212-225097472fd9
इसके बाद, हेडफ़ुल Chrome इंस्टेंस में हम कनेक्ट करने के लिए, Chrome DevTools रिमोट डीबगिंग बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले लैंडिंग पेज तक ले जाना है और उसकी जांच करना है.
chrome://inspect
पर जाएं और कॉन्फ़िगर करें... बटन पर क्लिक करें.- WebSocket यूआरएल से आईपी पता और पोर्ट नंबर डालें.
- पिछले उदाहरण में, मैंने
127.0.0.1:60926
डाला था.
- पिछले उदाहरण में, मैंने
- हो गया पर क्लिक करें. आपको एक रिमोट टारगेट अपने सभी टैब और अन्य लक्ष्य सूचीबद्ध हैं.
- Chrome DevTools को ऐक्सेस करने और रिमोट की जांच करने के लिए, inspect पर क्लिक करें बिना ग्राफ़िक यूज़र इंटरफ़ेस वाला टारगेट, जिसमें पेज का लाइव व्यू भी शामिल है.
सुझाव/राय दें या शिकायत करें
हमें हेडलेस मोड के बारे में आपके सुझाव का इंतज़ार रहेगा. अगर आपने कोई समस्या आती है, तो गड़बड़ी की शिकायत करें.