อ่าน 4 นาที
เบราว์เซอร์แบบไม่มีส่วนหัว
เบราว์เซอร์แบบไร้หัว (Headless browser ) คือเบราว์เซอร์เว็บที่ไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก
เบราว์เซอร์แบบไม่มีส่วนหัว
เบราว์เซอร์แบบไร้หัว (Headless browser ) คือเบราว์เซอร์เว็บที่ไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก
เบราว์เซอร์แบบไร้หัว (Headless browsers) ให้การควบคุมอัตโนมัติของหน้าเว็บในสภาพแวดล้อมที่คล้ายกับเบราว์เซอร์ทั่วไป แต่จะทำงานผ่านอินเทอร์เฟซบรรทัดคำสั่งหรือใช้การสื่อสารผ่านเครือข่าย เบราว์เซอร์แบบไร้หัวมีประโยชน์อย่างยิ่งสำหรับการทดสอบหน้าเว็บ เนื่องจากสามารถแสดงผลและเข้าใจ HTML ได้เช่นเดียวกับเบราว์เซอร์ รวมถึงองค์ประกอบการจัดรูปแบบ เช่น เค้าโครงหน้าเว็บ สี การเลือกแบบอักษร และการเรียกใช้JavaScriptและAjaxซึ่งโดยปกติจะไม่สามารถใช้งานได้เมื่อใช้วิธีการทดสอบอื่นๆ[ 1 ]
ตั้งแต่ Google Chromeเวอร์ชัน 59 [ 2 ] [ 3 ]และ Firefox เวอร์ชัน 56 [ 4 ] [ 5 ] เป็นต้นมามีการรองรับการควบคุมเบราว์เซอร์จากระยะไกลโดยตรง ซึ่งทำให้ความพยายามก่อนหน้านี้ล้าสมัย โดยเฉพาะ PhantomJS [ 6 ]
กรณีศึกษา
กรณีการใช้งานหลักของเบราว์เซอร์แบบไร้ส่วนหัว ได้แก่:
- การทดสอบอัตโนมัติในแอปพลิเคชันเว็บ สมัยใหม่ ( การทดสอบเว็บ )
- การถ่ายภาพหน้าจอของหน้าเว็บ
- ดำเนินการทดสอบอัตโนมัติสำหรับไลบรารี JavaScript
- การทำให้การโต้ตอบระหว่างหน้าเว็บเป็นไปโดยอัตโนมัติ
การใช้งานอื่นๆ
เบราว์เซอร์แบบไร้ส่วนหัวยังมีประโยชน์สำหรับการดึงข้อมูลจากเว็บอีก ด้วย Googleระบุในปี 2552 ว่าการใช้เบราว์เซอร์แบบไร้ส่วนหัวจะช่วยให้เครื่องมือค้นหาของพวกเขาสามารถจัดทำดัชนีเนื้อหาจากเว็บไซต์ที่ใช้ Ajax ได้[ 7 ]
นอกจากนี้ ยังมีการนำไปใช้ในทางที่ผิดหลายวิธีด้วย:
- ดำเนินการ โจมตี DDoSบนเว็บไซต์[ 8 ]
- เพิ่มจำนวนการแสดงผลโฆษณา[ 9 ]
- ทำการอัตโนมัติเว็บไซต์ในรูปแบบที่ไม่ตั้งใจ[ 10 ]เช่น สำหรับการยัดข้อมูลประจำตัว[ 11 ]
อย่างไรก็ตาม การศึกษาปริมาณการใช้งานเบราว์เซอร์ในปี 2018 พบว่าผู้กระทำความผิดไม่ได้มีความชอบเบราว์เซอร์แบบไร้หัวเป็นพิเศษ[ 3 ]ไม่มีข้อบ่งชี้ว่าเบราว์เซอร์แบบไร้หัวถูกใช้บ่อยกว่าเบราว์เซอร์แบบมีหัวเพื่อวัตถุประสงค์ที่เป็นอันตราย เช่น การโจมตี DDoS การโจมตีSQL injectionหรือการโจมตี cross-site scripting
การใช้งาน
เนื่องจากเบราว์เซอร์หลักหลายตัวรองรับโหมด Headless ผ่านAPI โดยตรง จึงมีซอฟต์แวร์บางตัวที่ช่วยให้สามารถควบคุมการทำงานของเบราว์เซอร์โดยอัตโนมัติผ่านอินเทอร์เฟซที่เป็นหนึ่งเดียว ซอฟต์แวร์เหล่านั้นได้แก่:
- Selenium WebDriver – การใช้งาน WebDriver ที่สอดคล้องกับW3C [ 12 ]
- Playwright – ไลบรารี Node.jsสำหรับทำให้ Chromium, Firefox และ WebKit ทำงานโดยอัตโนมัติ[ 13 ]
- Puppeteer – ไลบรารี Node.jsสำหรับการทำงานอัตโนมัติของ Chrome หรือ Firefox [ 14 ] [ 15 ]
การทดสอบอัตโนมัติ
ซอฟต์แวร์และเฟรมเวิร์กการทดสอบอัตโนมัติบางตัวมีเบราว์เซอร์แบบไร้ส่วนหัวเป็นส่วนหนึ่งของเครื่องมือทดสอบ[ 3 ]
- Capybaraใช้การเรียกดูแบบไร้ส่วนหัว ไม่ว่าจะผ่านWebKitหรือ Headless Chrome เพื่อจำลองพฤติกรรมของผู้ใช้ในโปรโตคอลการทดสอบ[ 16 ]
- Jasmineใช้ Selenium เป็นค่าเริ่มต้น แต่สามารถใช้ WebKit หรือ Headless Chrome เพื่อรันการทดสอบเบราว์เซอร์ได้[ 17 ]
- Cypressคือเฟรมเวิร์กสำหรับการทดสอบฝั่ง frontend
- QF-Testเป็นเครื่องมือซอฟต์แวร์สำหรับการทดสอบโปรแกรมแบบอัตโนมัติผ่านทางส่วนติดต่อผู้ใช้แบบกราฟิก โดยสามารถใช้เบราว์เซอร์แบบไม่มีส่วนติดต่อผู้ใช้ (headless browser) ในการทดสอบได้เช่นกัน
ทางเลือกอื่นๆ
แนวทางอื่นคือการใช้ซอฟต์แวร์ที่ให้บริการ API ของเบราว์เซอร์ ตัวอย่างเช่นDenoให้บริการ API ของเบราว์เซอร์เป็นส่วนหนึ่งของการออกแบบ สำหรับNode.jsนั้น jsdom [ 18 ]เป็นผู้ให้บริการที่สมบูรณ์ที่สุด แม้ว่าส่วนใหญ่จะสามารถรองรับคุณสมบัติทั่วไปของเบราว์เซอร์ได้ (การแยกวิเคราะห์ HTML, คุกกี้ , XHR , JavaScript บางส่วน ฯลฯ) แต่จะไม่แสดงผลDOMและมีการสนับสนุนเหตุการณ์ DOM อย่างจำกัด โดยทั่วไปแล้วจะทำงานได้เร็วกว่าเบราว์เซอร์แบบเต็มรูปแบบ แต่ไม่สามารถตีความเว็บไซต์ยอดนิยมหลายแห่งได้อย่างถูกต้อง[ 19 ] [ 20 ] [ 21 ]
อีกตัวอย่างหนึ่งคือHtmlUnitซึ่งเป็นเบราว์เซอร์แบบไร้ส่วนหัวที่เขียนด้วยภาษา Java HtmlUnit ใช้เอนจิน Rhinoเพื่อรองรับ JavaScript และ Ajax รวมถึงความสามารถในการแสดงผลบางส่วน[ 22 ] [ 23 ]
รายชื่อเบราว์เซอร์แบบไร้ส่วนหัว
นี่คือซอฟต์แวร์ต่างๆ ที่ให้บริการ API สำหรับเบราว์เซอร์แบบไร้ส่วนหัว (headless browser)
- DotNetBrowserเป็นไลบรารี .NET ที่ใช้ Chromium ซึ่งมีโหมดการแสดงผลนอกหน้าจอและสามารถใช้งานได้โดยไม่ต้องฝังหรือแสดงหน้าต่าง[ 24 ] [ 25 ]
- Lightpanda เป็นเบราว์เซอร์แบบ headless โอเพนซอร์สที่เขียนด้วยภาษา Zigซึ่งแตกต่างจาก เบราว์เซอร์แบบ headless ที่ใช้ Chromiumตรงที่มันถูกพัฒนาขึ้นเพื่อการทำงานแบบ headless และรองรับ Chrome DevTools Protocol (CDP), การเข้าถึง DOMและ การเรียก ใช้ JavaScriptแต่ไม่รองรับการแสดงผลกราฟิก[ 26 ] [ 27 ]
- SimpleBrowser เป็นเว็บเบราว์เซอร์แบบไร้ส่วนหัวที่เขียนด้วยภาษา C# ซึ่งรองรับ .NET Standard 2.0 [ 28 ]
- Splash เป็นเว็บเบราว์เซอร์แบบไร้ส่วนหัวที่เขียนด้วยPythonโดยใช้ เอนจินการจัดวาง WebKitผ่านQtมี API HTTP รองรับการเขียนสคริปต์ Luaและมี IDE ในตัวที่ใช้IPython (Jupyter) การพัฒนาเริ่มต้นที่ ScrapingHub ในปี 2013 โดยได้รับการสนับสนุนทางการเงินบางส่วนจากDARPA [ 29 ] [ 30 ]
- Zombie.js เป็นสภาพแวดล้อมเบราว์เซอร์จำลองสำหรับ Node.js [ 31 ]
ความพยายามก่อนหน้านี้ (ปี 2008) คือ envjs จากJohn Resigซึ่งเป็นสภาพแวดล้อมเบราว์เซอร์จำลองที่เขียนด้วย JavaScript สำหรับ เอนจิ้ นRhino [ 32 ]
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เบราว์เซอร์แบบไม่มีส่วนหัว
เบราว์เซอร์แบบไร้หัว (Headless browser ) คือเบราว์เซอร์เว็บที่ไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก
กรณีศึกษา
กรณีการใช้งานหลักของเบราว์เซอร์แบบไร้ส่วนหัว ได้แก่:
การใช้งานอื่นๆ
เบราว์เซอร์แบบไร้ส่วนหัวยังมีประโยชน์สำหรับ การดึงข้อมูลจากเว็บ อีก ด้วย Google ระบุในปี 2552 ว่าการใช้เบราว์เซอร์แบบไร้ส่วนหัวจะช่วยให้เครื่องมือค้นหาของพวกเขาสามารถจัดทำดัชนีเนื้อหาจากเว็บไซต์ที่ใช้ Ajax ได้ [ 7 ]
การใช้งาน
เนื่องจากเบราว์เซอร์หลักหลายตัวรองรับโหมด Headless ผ่าน API โดยตรง จึงมีซอฟต์แวร์บางตัวที่ช่วยให้สามารถควบคุมการทำงานของเบราว์เซอร์โดยอัตโนมัติผ่านอินเทอร์เฟซที่เป็นหนึ่งเดียว ซอฟต์แวร์เหล่านั้นได้แก่: