複数ページに対応したBasic認証リソースの一括調査スクリプト(curl+bash)

特定のページにBasic認証を設定しているサイトで、意図していないリソースにまで認証が適用されてしまうトラブルは少なくありません。

前回は単一ページでの調査方法を紹介しましたが、今回は複数ページにわたって一括で確認できる方法を紹介します。


複数ページのリソースに対するBasic認証の有無を調べる方法

対象とするページの例(ダミー)

  • https://example-site.com/en/page-a
  • https://example-site.com/en/page-b
  • https://example-site.com/en/page-c

シェルスクリプト:check_auth_multi.sh

次のスクリプトでは、複数のページURLを pages.txt に記載しておくだけで、それぞれのページから読み込まれるすべてのリソースを調べ、Basic認証が必要なリソースだけを一覧表示します。

スクリプトの内容

#!/bin/bash

# 対象のドメイン(相対URL補完用)
DOMAIN="https://example-site.com"

# 初期化
> all_urls.txt
> full_urls.txt
> auth_required.txt
> status_report.txt

# 各ページを処理
while read page_url; do
  echo "▼ 調査中: $page_url"

  # 該当ページのHTMLからリソースURLを抽出
  curl -s "$page_url" \
    | grep -Eo 'src="[^"]+"|href="[^"]+"' \
    | sed 's/src=//;s/href=//;s/"//g' >> all_urls.txt

done < pages.txt

# 重複排除
sort -u all_urls.txt > all_urls_unique.txt

# 相対パスを絶対URLに変換
awk '!/^https?:\/\// {print "'"$DOMAIN"'" $0} /^https?:\/\// {print $0}' all_urls_unique.txt > full_urls.txt

# 認証チェック
echo "▼ Basic認証が必要なリソース"
while read url; do
  code=$(curl -o /dev/null -s -w "%{http_code}" -I "$url")
  echo "$code $url" >> status_report.txt
  if [ "$code" = "401" ]; then
    echo "認証対象: $url"
    echo "$url" >> auth_required.txt
  fi
done < full_urls.txt

echo ""
echo "▼ チェック完了"
echo " - Basic認証リスト: auth_required.txt"
echo " - 全レスポンス一覧: status_report.txt"

事前に用意するファイル:pages.txt

以下のように、調査したい複数のページURLを1行ずつ記載してください。

https://example-site.com/en/page-a

https://example-site.com/en/page-b
https://example-site.com/en/page-c

実行手順

chmod +x check_auth_multi.sh
./check_auth_multi.sh

出力されるファイル

ファイル名内容
all_urls.txt各ページから抽出された元のURL一覧(重複あり)
all_urls_unique.txt重複除外済みのURL一覧
full_urls.txt絶対URL形式のリソース一覧
auth_required.txtBasic認証がかかっていたリソースのみ
status_report.txtすべてのURLとHTTPステータスの一覧

補足:HTTPS証明書の警告を無視したい場合

開発環境などで自己署名証明書を使用している場合は、curl-k オプションを追加してください:

code=$(curl -k -o /dev/null -s -w "%{http_code}" -I "$url")

まとめ

  • サイトに複数ページある場合でも、スクリプトで一括チェックが可能です。
  • リソース単位でBasic認証が必要かどうかを把握できるため、予期しない認証ダイアログの発生源を特定できます。
  • スクリプトは柔軟にカスタマイズ可能で、WordPress、静的HTMLサイト問わず使用できます。

コメント

タイトルとURLをコピーしました