今回はWebブラウザのヘッドレスモードという機能を使ってWebページのコンテンツを取得する方法を試し、これをPowerShellスクリプトに取り込む実装を進める。これでPowerShellスクリプトで取得できるWebページの数が増えることになる。

前回までに作成したスクリプト

前回までに作成した、Webページのコンテンツを自動入力するPowerShellスクリプト「netcat.ps1」は次の通りだ。最近のWindowsには、デフォルトでデプロイされている「curl.exe」を使って指定されたURLのコンテンツをダウンロードする処理を行っている。

#!/usr/bin/env pwsh

#========================================================================
# URLで指定されたリソースを取得
#========================================================================

#========================================================================
# 引数を処理
#   -URL url        WebリソースのURL
#========================================================================
Param(
    [Parameter(Mandatory=$true)][String]$URL = "",
    [String]$Agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
)

#========================================================================
# Webリソース取得に利用するアプリケーション
#========================================================================
$curl='C:\Windows\System32\curl.exe'

#========================================================================
# curl を使って取得する
#========================================================================
& $curl --location                      `
    -A $Agent                       `
    -get $URL

しかし、例えば「https://msrc.microsoft.com/update-guide/releaseNote/2022-Jun」のように、ダウンロードした後にJavaScriptを実行して本体となるコンテンツを取得するタイプのWebページは、この方法では取得できない。クライアント側でJavaScriptを実行しないと、欲しいデータの自動取得が完成しないのだ。

これを実現する方法はいくつかあるが、最も強力な方法がWebブラウザをそのまま使う方法だ。今回はその使い方を探っていき、netcat.ps1へ機能を取り込んでいく。

Microsoft Edgeのヘッドレスモード

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら