IPA ウェブ健康診断仕様「クローラへの耐性」を診断するコマンドラインツールを公開しました
※当サイトにはプロモーションが含まれています。
はじめに

IPA 独立行政法人 情報処理推進機構が公開しているウェブ健康診断仕様には、平成20年度版(平成21年4月6日公開)と平成22年度版(平成23年5月19日公開)があります。平成20年度版の診断項目はほとんどが手動でも実施できるものでした。2010年(平成22年)には、自分でできるWebアプリケーション脆弱性診断 - デブサミ2010というスライド(2010年2月)にもあるように、それなりに手軽に実施できる診断仕様として便利なものだったと思います。しかしその後の2010年3月に岡崎市立中央図書館事件(Librahack事件)が発生し、その影響により平成22年度版から手動での診断が難しい「クローラへの耐性」という項目が追加されました。この項目は、「0.5秒待ってサイトにアクセスする」「5秒以内にレスポンスがなかったら5秒待ってからクロールを続ける」「最大4800ページまでアクセスする」など、手動では診断することができそうにない内容になっています。この仕様を策定した地方自治情報センターは、この平成22年度版を使って約400の地方公共団体のサイトを診断したらしいのですが(どこかの業者に依頼したとは思いますが)、その時どのように診断したのかあまり詳しいところまでは資料に載っていません。クロール機能を持つ既存のツールはいろいろありますが、この仕様に沿った動作を行うように設定できるツールがあるのでしょうか? 有名なBurp SuiteもPro版は分かりませんが、Free Editionを見たところ無理そうです。もしかしたらPro版では可能なのかもしれませんし、ちょうどよいツールが他にあるのかもしれませんが、少し調べたくらいでは分かりませんでした。
それならということで、ウェブ健康診断仕様における「クローラへの耐性」を診断するコマンドラインツールを作ってみました。GitHubで公開しています。あまりテストとか書いてないのですが(テストしてないわけではありません)、現時点でそれなりに使えるようになっていると思います。誰でも使えるツールとして公開することで、ウェブ健康診断仕様が手軽に診断できる内容であり続けます。
ツールの内容についてはGitHubのページでいろいろ説明しているので、ここでは簡単に説明します。
「クローラへの耐性」診断コマンドラインツール
検索エンジンをはじめとしたWebサイトを自動で巡回するプログラムに対して、特定のWebサイトがその巡回アクセスに耐えられるかどうかを診断するコマンドラインツールです。
GitHub
特徴
- コマンドラインツールです。
- 対象とするURLを引数にしてコマンドを実行すると、あとは自動でウェブサイトをクロールして最後に診断結果を表示します。
- 引数で指定するURLは、“http://www.example.com”, “https://www.example.com/”, “www.example.com”, “example.com” 等いろいろな形式で指定できます。
- 診断中はアクセスしたURLのリクエスト/レスポンスついての情報が随時表示されます。
- 副次的な効果としてリンク切れになっているところがないかのチェックにもなります。
- そんなに難しいことはしていません。かなりシンプルなプログラムです。
- 開発言語はJavaです。
- Mac/Linux/Windows で動きます。
スクリーンショット
GitHubのページと説明が重複しますが、画面上の項目についてはここにも書いておきます。
以下はプログラム実行中のスクリーンショットです。

| No. | Elapsed | Status | RTT | URL |
|---|---|---|---|---|
| 通番 | 経過時間 (分:秒) | HTTPステータスコード | 応答時間(秒) | アクセスURL |
以下は診断終了時のスクリーンショットです。 
| Reason for the termination | Total elapsed time | No Response Count | StatusCode 400-599 Count | Total number of requests | 診断結果 | 危険度 |
|---|---|---|---|---|---|---|
| 診断終了の理由 | 合計時間(分:秒) | タイムアウトになったリクエスト数 | ステータスコードが400番台or500番台だったレスポンスの数 | アクセスしたURLの数 | 正常 or 異常 | 中 or 低 |
ダウンロード
GitHubから git clone して ant を実行すればビルドできますが、面倒な人のためにすぐに実行できるファイル一式をここに置いておきます。面倒でない方やプログラムの内容が信用できない方は GitHub を使って下さい。元のソースコードを修正したら、なるべくこちらも更新します。
解凍したら、ターミナルでそのディレクトリに移動して、以下のように実行できます。
# Linx/Mac の場合
$ ./WSC.sh http://www.example.com/
# Windows の場合
> WSC.bat http://www.example.com/
注意
- 自分の管理下にないホストに対してこのプログラムを実行しないで下さい。
[最終更新日: 2014年4月8日]