ヘッドレスブラウザ

ヘッドレス ブラウザは、グラフィカル ユーザー インターフェイスのないWeb ブラウザです。

ヘッドレスブラウザは、一般的なウェブブラウザと同様の環境でウェブページの自動制御を提供しますが、コマンドラインインターフェースまたはネットワーク通信を介して実行されます。ブラウザと同じようにHTMLをレンダリングおよび解釈できるため、ウェブページのテストに特に役立ちます。ページレイアウト、色、フォント選択などのスタイル要素や、 JavaScriptAjaxの実行など、他のテスト方法では通常利用できない要素も処理できます。[ 1 ]

Google Chromeのバージョン59 [ 2 ] [ 3 ]およびFirefoxのバージョン56 [ 4 ] [ 5 ]以降、ブラウザのリモートコントロールがネイティブでサポートされています。これにより、 PhantomJS [ 6 ]などの以前の取り組みは時代遅れになりました。

ユースケース

ヘッドレス ブラウザの主な使用例は次のとおりです。

その他の用途

ヘッドレスブラウザはウェブスクレイピングにも役立ちます。Google2009年に、ヘッドレスブラウザの使用により、検索エンジンがAjaxを使用するウェブサイトのコンテンツをインデックスするのに役立つ可能性があると述べました。[ 7 ]

ヘッドレス ブラウザは、さまざまな方法で悪用されてきました。

しかし、2018年のブラウザトラフィックの調査では、悪意のある攻撃者がヘッドレスブラウザを好む傾向は見られませんでした。[ 3 ] DDoS攻撃、 SQLインジェクションクロスサイトスクリプティング攻撃 などの悪意のある目的で、ヘッドレスブラウザが非ヘッドレスブラウザよりも頻繁に使用されているという兆候はありません。

使用法

いくつかの主要ブラウザはAPIを通じてヘッドレスモードをネイティブにサポートしているため、統一されたインターフェースを通じてブラウザの自動化を実行するソフトウェアもいくつか存在します。これには以下が含まれます。

テスト自動化

一部のテスト自動化ソフトウェアやフレームワークには、テスト装置の一部としてヘッドレスブラウザが含まれています。[ 3 ]

  • Capybaraは、 WebKitまたはHeadless Chromeを介してヘッドレスブラウジングを使用し、テストプロトコルでユーザーの行動を模倣します。[ 16 ]
  • JasmineはデフォルトでSeleniumを使用しますが、ブラウザテストを実行するためにWebKitまたはHeadless Chromeを使用することもできます。[ 17 ]
  • フロントエンドテストフレームワークであるCypress
  • QF-Test は、ヘッドレス ブラウザーを使用してテストすることもできるグラフィカル ユーザー インターフェイスを介してプログラムを自動テストするソフトウェア ツールです。

代替案

もう一つのアプローチは、ブラウザAPIを提供するソフトウェアを使用することです。例えば、Denoは設計の一部としてブラウザAPIを提供しています。Node.jsの場合 jsdom [ 18 ]が最も包括的なプロバイダです。ほとんどのブラウザは一般的なブラウザ機能(HTML解析、CookieXHR 、一部のJavaScriptなど)をサポートしていますが、 DOMレンダリングせず、 DOMイベントのサポートも限られています。通常、フルブラウザよりも高速に動作しますが、多くの一般的なウェブサイトを正しく解釈することができません。[ 19 ] [ 20 ] [ 21 ]

もう1つはJavaで書かれたヘッドレスブラウザであるHtmlUnitです。HtmlUnitはRhinoエンジンを使用してJavaScriptとAjaxのサポート、および部分的なレンダリング機能を提供します。[ 22 ] [ 23 ]

ヘッドレスブラウザのリスト

これらはヘッドレス ブラウザ API を提供するさまざまなソフトウェアです。

もう一つの注目すべき初期の取り組みは、2008年にジョン・レジグが開発したenvjsで、これはRhinoエンジン用にJavaScriptで書かれたシミュレートされたブラウザ環境であった。[ 30 ]

参照

参考文献

  1. ^ 「ヘッドレスブラウザとは何か?」 arhg.net 2009年10月7日。
  2. ^ 「ヘッドレス Chrome を使い始める」 developers.google.com . 2017年4月27日。
  3. ^ a b c Bekerman, Dima (2018年11月28日). 「ヘッドレスChrome:DevOpsもハッカーも愛用、その理由は? | Imperva」 .ブログ. 2021年2月22日閲覧
  4. ^ 「Firefox 56 リリースノート」 . developer.mozilla.org . 2023年2月26日.
  5. ^ 「ヘッドレスモード - ブラウザサポート」 . developer.mozilla.org . 2018年6月3日時点のオリジナルよりアーカイブ。 2017年8月31日閲覧
  6. ^ 「クイックスタート」 . phantomjs.org .
  7. ^ Mueller, John (2009-10-07). 「公式 Google ウェブマスターセントラル ブログ: AJAX をクロール可能にするための提案」 .公式 Google ウェブマスターセントラル ブログ.
  8. ^ Rawlings, Matt (2013年11月20日). 「150時間にわたるDDoS攻撃で使用されたヘッドレスブラウザボットネット」 . Business 2 Community .
  9. ^ Mello Jr., John P. (2014年3月25日). 「ヘッドレスウェブトラフィックがインターネット経済を脅かす」 . ecommercetimes.com .
  10. ^ Raywood, Dan (2014-04-01). 「ヘッドレスブラウザ:攻撃を可能にする正規ソフトウェアITProPortal .
  11. ^ Mueller , Neal. 「クレデンシャルスタッフィング」owasp.org .
  12. ^ Sheth, Himanshu (2020年11月17日). 「Selenium 4はW3Cに準拠しました:知っておくべきことすべて」 .
  13. ^ 「GitHub - Playwright」 . GitHub . 2021年4月11日閲覧
  14. ^ “Github - Puppeteer” . GitHub . 2021年4月11日閲覧
  15. ^ 「WebDriver BiDiサポート | Puppeteer」 pptr.dev 2025年10月24日閲覧
  16. ^ Silva, Francisco (2019-05-29). 「capybara-webkit から Headless Chrome と ChromeDriver へ」 .ブログ | Imaginary Cloud . 2021-02-22閲覧
  17. ^ Bintz, John. 「jasmine-headless-webkit -- Jasmine specsを実行する最速の方法!」 johnbintz.github.io . 2021年2月22日閲覧
  18. ^ 「GitHubのJSDOM - ビジュアルブラウザを装う」GitHub2021年4月18日閲覧
  19. ^ "assaf/zombie" . GitHub .
  20. ^ “ヘルペスが口や目からうつる?感染した時の症状と病院の治療方法とは” . www.envjs.com2015 年 2 月 23 日にオリジナルからアーカイブされました2015 年 3 月 13 日に取得
  21. ^ "JavaScriptMVC - EnvJS" . javascriptmvc.com . 2015年5月23日時点のオリジナルよりアーカイブ2015年3月13日閲覧。
  22. ^ Mike Bowler. 「HtmlUnit – HtmlUnitへようこそ」 . sourceforge.net .
  23. ^ "プラットフォーム (Vaadin 7.3.4 API)" . vaadin.com。 2014 年 11 月 6 日。
  24. ^ "scrapinghub/splash" . GitHub . 2021年12月20日.
  25. ^ 「DARPA - Open Catalog」 2015年5月28日時点のオリジナルよりアーカイブ。 2015年5月28日閲覧
  26. ^ ゾンビ」 .labnotes.org .
  27. ^ SimpleBrowserDotNet/SimpleBrowser、SimpleBrowserDotNet、2021年2月10日、 2021年2月22日閲覧
  28. ^ DotNetBrowser の例、TeamDev、2021-03-12、2021-03-12取得
  29. ^ 「DotNetBrowser」 . TeamDev. 2021年5月5日.
  30. ^ Resig, John (2008-10-12). 「env-js: 純粋なJavaScriptブラウザ環境」 – GitHub経由。