今回は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へ機能を取り込んでいく。