URLからhttpステータスコードとSSLが通っているか調べる方法

こんにちは。hacknoteのr.katoです。

今回はpythonとbashを使って、

  1. URLからそのサイトがきちんとhttpのステータスコード200番代を返しているか?
  2. SSL接続に問題はないか?

を調べるためのプログラムを作ったので、紹介していきます。

実行環境

OS: macOS Mojave
python: python3.7.2
Anaconda3: version 1.7.2
openssl: 1.0.2j  26 Sep 2016
curl: 7.49.0 (x86_64-apple-darwin11.4.2)
git: version 2.13.0

使ったpythonのライブラリ

  • requests
  • subprocess
  • datetime
  • pprint
  • numpy as np
  • sys, time
  • re
  • tabulate

tabulateのみ、Anacondaにデフォルトでインストールされていないため、次のコマンドでインストールします。

$ pip install tabulate

手順

  1. git cloneします。
$ git clone https://github.com/ryo1107/url_cheker_for_hack.git
  1. url_checkerに移動し、url_list.txtを作成し、中身を編集します。
$ cp url_list.txt.example url_list.txt
  1. certs.pemをダウンロードし、url_checker 直下に置きます。

https://mkcert.org/generate/

  1. 以下のコマンドで、実行します。
$ bash master.sh

出力画面

次の様に表が出力されます。
httpがステータスコード、SSLがSSL通信が有効になっているか、Date LimitがSSL証明書の有効期限を表しています。
Date ExpiredがSSL証明書の期限切れを、Domain Errorがurl_list.txtに入力されたURLのドメインが間違っている(ドメインが存在しない)ことを示しています。

終了

url_list.txtから調べたいURLを取得するところから、URLを調べて、terminalへ出力するところまでが無限ループとなっているので、終了時はCtrl+zで終了してください。