헤드리스 브라우저

Headless browser

헤드가 없는 브라우저그래픽 사용자 인터페이스가 없는 웹 브라우저다.

헤드리스 브라우저는 인기 웹 브라우저와 유사한 환경에서 웹페이지의 자동제어를 제공하지만, 그것들은 명령줄 인터페이스나 네트워크 통신을 통해 실행된다.그것들은 페이지 레이아웃, 색상, 자바스크립트아약스와 같은 스타일링 요소를 포함하여 브라우저와 동일한 방식으로 HTML을 렌더링하고 이해할 수 있기 때문에 웹 페이지 테스트에 특히 유용하다.[1]

구글 크롬[2][3] 59 버전과 파이어폭스 56 버전부터[4] 브라우저의 원격 제어를 위한 기본 지원이 있다.[5]이것은 이전의 노력을, 특히 팬텀을 더 이상 쓸모 없게 만들었다.JS.[6]

사용 사례

헤드리스 브라우저의 주요 사용 사례는 다음과 같다.

  • 최신 웹 응용 프로그램의 자동화 테스트( 테스트)
  • 웹 페이지의 스크린샷을 찍는 중.
  • JavaScript 라이브러리에 대한 자동 테스트 실행
  • 웹 페이지 상호 작용 자동화

기타 용도

헤드리스 브라우저는 웹 스크래핑에도 유용하다.구글은 2009년에 헤드리스 브라우저를 사용하는 것이 아약스를 사용하는 웹사이트의 검색 엔진 콘텐트를 색인화하는 데 도움을 줄 수 있다고 발표했다.[7]

헤드리스 브라우저는 또한 다양한 방법으로 악용되었다.

  • 웹 사이트에서 DDoS 공격 [8]수행
  • 광고 인상을 늘리다.[9]
  • 자격 증명 채우기와 같은 의도하지 않은 방법으로[10] 웹 사이트를 자동화하십시오.[11]

그러나 2018년 브라우저 트래픽 연구에서는 악성 행위자들이 헤드리스 브라우저를 선호하지 않는 것으로 나타났다.[3]헤드리스 브라우저가 DDoS 공격, SQL 주입, 사이트스크립팅 공격 등 악성 목적으로 비헤드리스 브라우저보다 더 자주 사용된다는 징후는 없다.

사용법

여러 주요 브라우저가 API를 통해 기본적으로 헤드리스 모드를 지원하므로, 통합 인터페이스를 통해 브라우저 자동화를 수행하는 소프트웨어가 존재한다.여기에는 다음이 포함된다.

테스트 자동화

일부 테스트 자동화 소프트웨어와 프레임워크는 테스트 기구의 일부로 머리 없는 브라우저를 포함한다.[3]

  • Capybara는 테스트 프로토콜에서 사용자 행동을 모방하기 위해 웹킷 또는 Headless Chrome을 통해 머리 없는 브라우징을 사용한다.[15]
  • 자스민은 기본적으로 셀레니움을 사용하지만 웹킷이나 헤드리스 크롬을 사용하여 브라우저 테스트를 실행할 수 있다.[16]

대안

또 다른 접근법은 브라우저 API를 제공하는 소프트웨어를 사용하는 것이다.예를 들어, Deno는 그것의 설계의 일부로 브라우저 API를 제공한다.Node.js의 경우 jsdom이[17] 가장 완전한 제공자다.대부분은 일반적인 브라우저 기능(HTML 구문 분석, 쿠키, XHR, 일부 자바스크립트 등)을 지원할 수 있지만 DOM렌더링하지 않고 DOM 이벤트에 대한 지원이 제한적이다.그들은 보통 전체 브라우저보다 더 빨리 작동하지만, 많은 인기 있는 웹사이트를 올바르게 해석할 수는 없다.[18][19][20]

또 다른 것은 자바어로 쓰여진 머리 없는 브라우저인 HTMLUnit이다.HTMLUnit은 Rhino 엔진을 사용하여 JavaScript와 Ajax 지원뿐 아니라 부분 렌더링 기능도 제공한다.[21][22]

헤드리스 브라우저 목록

이것들은 헤드가 없는 브라우저 API를 제공하는 다양한 소프트웨어들이다.

  • 스플래시는 Qt를 통해 WebKit 레이아웃 엔진을 사용하여 Python으로 작성된 헤드리스 웹 브라우저다.HTTP API, Lua 스크립팅 지원, 내장 IPython(Jupyter) 기반 IDE. 개발은 2013년 ScrapingHub에서 시작되었으며, DARPA의 자금 일부를 지원하고 있다.[23][24]
  • 좀비.js는 Node.js를 위한 시뮬레이션된 브라우저 환경이다.[25]
  • SimpleBrowser는 C# supporting 로 작성된 헤드리스 웹 브라우저 입니다.NET 표준 2[26].0
  • DotNetBrowser는 소유권 입니다.비화면 렌더링 모드를 제공하고 창을 포함하거나 표시하지 않고도 사용할 수 있는 NET 크롬 기반 라이브러리.[27][28]

또 다른 주목할 만한 초기 노력은 2008년 Rhino 엔진을 위해 자바스크립트로 작성된 시뮬레이션 브라우저 환경이었던 John Resig의 환경이었다.[29]

참고 항목

참조

  1. ^ "What is a headless browser?". arhg.net.
  2. ^ "Getting Started with Headless Chrome". developers.google.com.
  3. ^ a b c Bekerman, Dima (2018-11-28). "Headless Chrome: DevOps Love It, So Do Hackers, Here's Why Imperva". Blog. Retrieved 2021-02-22.{{cite web}}: CS1 maint : url-status (링크)
  4. ^ "Firefox 56 release notes". developer.mozilla.org.
  5. ^ "Headless mode - browser support". developer.mozilla.org.
  6. ^ "Quick Start". phantomjs.org.
  7. ^ Mueller, John (2009-10-07). "Official Google Webmaster Central Blog: A proposal for making AJAX crawlable". Official Google Webmaster Central Blog.
  8. ^ Rawlings, Matt (2013-11-20). "Headless Browser Botnet Used in 150 hour DDoS attack". Business 2 Community.
  9. ^ Mello Jr., John P. (2014-03-25). "Headless Web Traffic Threatens Internet Economy". ecommercetimes.com.
  10. ^ Raywood, Dan (2014-04-01). "Headless browsers: legitimate software that enables attack". ITProPortal.
  11. ^ Mueller, Neal. "Credential stuffing". owasp.org.
  12. ^ Sheth, Himanshu (2020-11-17). "Selenium 4 Is Now W3C Compliant: All You Need To Know".
  13. ^ "GitHub - Playwright". GitHub. Retrieved 2021-04-11.
  14. ^ "Github - Puppeteer". GitHub. Retrieved 2021-04-11.
  15. ^ Silva, Francisco (2019-05-29). "From capybara-webkit to Headless Chrome and ChromeDriver". Blog Imaginary Cloud. Retrieved 2021-02-22.{{cite web}}: CS1 maint : url-status (링크)
  16. ^ Bintz, John. "jasmine-headless-webkit -- The fastest way to run your Jasmine specs!". johnbintz.github.io. Retrieved 2021-02-22.{{cite web}}: CS1 maint : url-status (링크)
  17. ^ "JSDOM at GitHub - Pretending to be a visual browser". GitHub. Retrieved 2021-04-18.
  18. ^ "assaf/zombie". GitHub.
  19. ^ "ヘルペスが口や目からうつる?感染した時の症状と病院の治療方法とは". www.envjs.com. Archived from the original on 2015-02-23. Retrieved 2015-03-13.
  20. ^ "JavaScriptMVC - EnvJS". javascriptmvc.com.
  21. ^ Mike Bowler. "HtmlUnit – Welcome to HtmlUnit". sourceforge.net.
  22. ^ "Platform (Vaadin 7.3.4 API)". vaadin.com. 6 November 2014.
  23. ^ "scrapinghub/splash". GitHub. 20 December 2021.
  24. ^ "Archived copy". Archived from the original on 2015-05-28. Retrieved 2015-05-28.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)
  25. ^ "Zombie". labnotes.org.
  26. ^ SimpleBrowserDotNet/SimpleBrowser, SimpleBrowserDotNet, 2021-02-10, retrieved 2021-02-22
  27. ^ DotNetBrowser Examples, TeamDev, 2021-03-12, retrieved 2021-03-12
  28. ^ "DotNetBrowser". TeamDev. 2021-05-05.
  29. ^ Resig, John (2008-10-12). "env-js: A pure-JavaScript browser environment" – via GitHub.