見出し画像

Chrome 112でヘッドレスモードまともになりました

 先日、この記事を読んでから今か今かと待っていたところ、一昨日やっとGoogle Chrome 112がリリースされました。

 正直、この記事を読むまではヘッドレスモードがヘッドフルモードのChromeとは別コードになっているとは、全く想像しておらず、ヘッドレスモードで動かすと動きがおかしいため、ヘッドフルモードで仕方なく動かしていました。

 今現在、私は毎朝6時半にWindowsサーバー(と言っても、ASUSの小型のデスクトップPCですが)でWebサイトのスクレイピングをしています。スクレイピングを実行しているのは、自作で作成したPythonプログラムでもうかれこれ1年以上、幾つかのサイトを巡回してサイト上に掲載されている情報をSQLite3のデータベースへと書き込み、それをExcelファイルへと出力し、最終的にPDFを生成後、Slack BOTでSlackへと投稿する、という一連の動作を実行しているのです。
 その最初のWebサイト巡回時に、画面上にChromeが表示されるのが鬱陶しいのでヘッドレスモードで動かしていたのですが、幾つかのサイトでエラーが出てしまうので困っていました。

 開発そのものは、MacBookで行っており、Chromeのバージョン、Pythonのバージョン、Pythonのライブラリのバージョン等を合わせて問題なく動くことを確認しています。よって、本来であれば問題なく動くはずなんです。ただ一つ、ヘッドフルモードで動作確認してからヘッドレスモードで本番環境で動かすことを除けば・・・。
 自作のWebスクレイピングのPythonプログラムには、元から引数を渡せるようにしており、--headlessというパラメータを渡すとプログラム内で、ChromeのWebドライバーに対して、--headlessを渡す、と言うことをしているため、ヘッドレス、ヘッドフルの切替自体はプログラム修正も必要なく切り替えられるので、最初の方に書いていたとおり、ヘッドレスモードで問題が出てしまうまではヘッドレスで動かしておりました。問題が出てしまってからは、Pythonプログラムに渡すパラメータを変更してヘッドフルモードで動かしていました。

 ヘッドレスで動作上おかしかったのは、2点確認しております。ページ内で仮想的なウィンドウ(Webプログラマではないのでこれを一言で表す表現を知りません)を表示するようにしたサイトに対して、そのウィンドウに対するアクションが正しく実行できない。もう1点は、ユーザーエージェントがMozilla/5.0で始まる文字列を生成せず実行してしまう、と言うものです。2点目のユーザーエージェントは、未だにユーザーエージェントを見て、動作を変更するサイトって存在するんだと驚いた程ですが(Internet Explorerがこの世の中から退場させられたので、ユーザーエージェントを確認する必要あります?)、この2点の動作がどうも不可解で、ヘッドレスモードの仕様なのかな?程度にしか考えていませんでした。

 一応、昨日の朝6時半、今日の6時半ともに問題なく動いていることから、正しくChrome 112でヘッドレスモードとヘッドフルモードのコードが統一されたことを確認できました。これで、サーバーとは言え、突如Chromeが画面上に表示されてびっくりしてしまう、と言うことを避けることが出来そうです。

この記事が気に入ったらサポートをしてみませんか?