python selenium

Python

・ユーザーエージェント変更・ヘッドレスモード・画面サイズ指定オプション

サーバーからseleniumでアクセスするとき、うまくgetメソッドでアクセスできないときがあったので、ユーザーエージェントの変更を試しにやってみました

サーバーからのアクセスはLinuxからのアクセスになるので、ブラウザの表示がいつものwindowsと違うのかもしれないと考えていました

・環境

windows 11
selenium 4.25.0

・ユーザーエージェントとは

ブラウザのユーザーエージェント(User Agent)は、ウェブブラウザがウェブサーバーに送信する情報の一部で、ブラウザやオペレーティングシステム(OS)、デバイスの種類などに関する情報のことです

これにより、サーバーはユーザーが使用しているブラウザやその環境に最適化したコンテンツを提供することができます
例えば、モバイル端末からアクセスしている場合に、モバイル向けのウェブサイトを表示します

ユーザーエージェントには通常、次の情報が含まれます

  1. ブラウザ名とバージョン: 使用しているブラウザ(例: Chrome, Firefox, Safari)とそのバージョン番号
  2. オペレーティングシステム(OS): 使用しているOS(例: Windows, macOS, Linux, iOS, Android)
  3. デバイス情報: 使用しているデバイスがPC、スマートフォン、タブレットかどうかなど
  4. レンダリングエンジン: ブラウザが使用しているエンジン(例: Blink、Geckoなど)

・ユーザーエージェントの確認

以下のサイト『確認くん』にアクセスすると自分のユーザーエージェントが確認できます

確認くん

seleniumでアクセスしてみて、スクリーンショットをとって自分のユーザーエージェントを確認してみます

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# optionにヘッドレスモード設定
options = Options()
options.add_argument("--headless=new")

#ドライバー生成
driver = webdriver.Chrome(options = options)

# 確認くんにアクセス
driver.get('https://www.ugtop.com/spill.shtml')

# スクリーンショット保存
driver.save_screenshot('screenshot.png')

# ドライバー終了
driver.quit()

現在のブラウザーに今アクセスしたユーザーエージェントが記載されています

・ユーザーエージェントの変更

driverのoptionにユーザーエージェントの変更を追加して、もう一度確認くんにアクセスしてみます

#windowsのユーザーエージェント
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36')

このオプション使用するとwindowsのユーザーエージェントに変更することができます
他にも、iPhoneやandroidもあります

# iPhone
options.add_argument('--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0 Mobile/14C92 Safari/602.1')

# android
options.add_argument('--user-agent=Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36')

これらのユーザーエージェントの変更によって、ウェブサイトへのアクセスが許可されたり、要素の内容もかわります
ローカルでうまくスクレイピングできたけど、サーバーからではうまくいかないとか、そういったときに試してみるといいかもしれません

・ヘッドレスモードについて

# optionにヘッドレスモード設定
options = Options()
options.add_argument("--headless=new")

options.add_argument(“–headless=new”) は、PythonのSeleniumでWebブラウザをヘッドレスモードで動作させる設定を行う際に使用するオプションの1つで、以前までのと少し変更されています

–headless 以前のヘッドレスモード

    ヘッドレスモードとは、ブラウザのGUIを表示せずにバックグラウンドで動作させるモードです
    主にテストや自動化スクリプトで使用され、画面を表示する必要がない場合に便利です

    –headless=new 新しいヘッドレスモード

      Selenium 4.10以降、Chrome 109以降の新しいヘッドレスモードを指定するためのオプションです
      以前のヘッドレスモードは、特定の動作で制限があったり、GUIモードとは異なる動きをすることがありました
      新しいヘッドレスモードでは、これらの制限が緩和され、よりGUIモードに近い動作が可能になっています

      ・ウインドウサイズ変更

      ブラウザのウインドウサイズによっても、ウェブサイトは変わる可能性があります
      クリックする要素が見えなくなってりまったり、スマホ用のウェブサイトが表示されたりします
      安定した動作を確保するためにウインドウサイズを指定するオプションがあります

      # ウインドウサイズ最大でブラウザを開く
      options.add_argument("--start-maximized")

      これで最初から最大サイズの画面でブラウザを開くことができます

      コメント