selenium-webdriverで自動的にWebサイトにアクセスしたとき、アクセスログはどうなるのか


目的

実はこっそりと社内業務の一部を自動化していたのですが、ふとサーバログ覗いたら自動化しているのがバレるんじゃないかと思い、検証してみました。

検証環境

  • WebサーバとしてPaizaCloudを利用
  • 自動的にアクセスする方法としてSelenium-webdriverとheadless-chromeを利用
  • 自動化するプログラムとしてPythonを利用

やったこと

SeleniumとHeadless Chromeの導入

こちらに関しては、たくさん記事がありますので割愛します。

Webサーバを立てる

PaizaCloudにアクセスし、ログインします。
Googleアカウント等でログインでき、一部プランは無料で利用できます。今回はこの無料プランを使っています。

サーバ作成画面で、適当なサーバ名とインストールするアプリケーションを選択します。
今回はApacheをインストールしています。

サーバ作成後、左側のブラウザボタンをクリックすると内部ブラウザが立ち上がります。

もちろん、URLをコピペして別のブラウザを利用してもOKです。
とりあえず、これでサーバが立ち上がっていることは確認できました。

サーバログの場所を確認する

Apacheのサーバログは、デフォルトで/var/log/apache2/access.logにあります。
左側のコンソールボタンをクリックして、コンソールを起動します。

下記コマンドを叩いてアクセスログを確認してみます。

sudo tail /var/log/apache2/access.log

今回は、まだアクセスログはありませんでした。

Pythonでコードを書く

main.py
#モジュールのインポート
from selenium import webdriver

#Chromeの起動
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

#Webサーバにリクエストを投げる
driver.get('https://bowtin-testserver.paiza-user.cloud/')

上記プログラムを実行すると、自動的にGoogle Chromeが立ち上がってWebページにアクセスしてくれるはずです。

アクセスログを確認する

再度、サーバ側のアクセスログを確認してみます。

Chromeと書いてあり、この時点では手動なのか自動なのかはわかりません。

Chromeの画面が起動しないようにコードを変えて実行してみる

コードを一部追加し、バックグラウンドでChromeが起動するようにします。
これで、画面にChromeが表示されないので自動化されている感がでます。

main.py
#モジュールのインポート
from selenium import webdriver

#Chromeの起動
options = webdriver.ChromeOptions()
options.add_argument('--headless') #追加
options.add_argument('--disable-gpu') #追加
driver = webdriver.Chrome(options=options)

#Webサーバにリクエストを投げる
driver.get('https://bowtin-testserver.paiza-user.cloud/')

コードを改変した後、再度実行します。

再度サーバログを確認する

今度は、ブラウザの種別がHeadless Chromeになっているのが確認できました。

結論

  • 知っている人がちゃんと見ればわかる