IE(InternetExplorer)のBasic認証自動ログイン「ieBasic」の解説
今回はIE(InternetExplorer)でたまに見かけるBasic認証(ベーシック認証)に自動ログインする方法を解説します。
Basic認証(ベーシック認証)とはWebサイトを閲覧する際に利用するプロトコル「HTTP」が備える、最も基本的なユーザ認証方式です。といっても分かりづらいと思いますが、要は閲覧制限がかかっているページにアクセスした場合に、以下のようなユーザー名・パスワードを聞かれることありませんか?こちらがBasic認証(ベーシック認証)です。
ちなみに「Basic認証(ベーシック認証)テストページ」にアクセスするとどのようなものか分かると思います。
ユーザー名:user、パスワード:123456でログインできます。
見出しで自動ログインと書いておりますが、実際はログイン・ログアウトという概念はなく、リクエストのヘッダ「Authorization」にユーザー名・パスワードを格納してリクエストを行っています。
Basic認証の詳細はこれぐらいにしますが、もっと知りたい方はご自身で調べてください。詳細を理解するとこれから説明する内容もよりわかるようになります。
それでは、まずは完成形を見てみましょう。
Basic認証(ベーシック認証)自動ログインのサブルーチン
Sub ieBasic(objIE As InternetExplorer, _
urlName As String, _
idPass As String)
Dim headValue As String
'IEのオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")
'IEを表示
objIE.Visible = True
'Authorization情報
headValue = "Authorization: Basic " & idPass & vbCrLf
'指定したBasicURLのページを表示する
objIE.navigate urlName, , , , headValue
'IEが完全表示されるまで待機
Call ieCheck(objIE)
End Sub
Basic認証(ベーシック認証)自動ログインのマクロ
Sub sample()
Dim objIE As InternetExplorer
'Basic認証(ベーシック認証)ページへアクセスする
Call ieBasic(objIE, "http://www.vba-ie.net/basic/test3.html", "dXNlcjoxMjM0NTY=")
End Sub
実行結果
引数は以下の3つが設定されています。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
urlName | String | 表示させたいBasic認証URLの文字列 | "http://www.vba-ie.net/ basic/test3.html" | × | |
idPass | String | Basic認証のID・PASS情報文字列 | "dXNlcjoxMjM0NTY=" | × |
こちらは、全て必須項目となります。
「objIE」は複数ページを表示させる場合に「objIE」「objIE2」と複数オブジェクトを生成します。「urlName」には、表示させたいBasic認証URLの文字列を設定します。
「idPass」にはBasic認証のID・PASS情報文字列を設定するのですが、設定方法にルールがありますので、そちらを説明していきます。
冒頭でBasic認証ページにアクセスする際は、リクエストのヘッダ「Authorization」にユーザー名・パスワードを格納してリクエストを行っていると説明しましたが、「Authorizationヘッダ」にユーザー名・パスワードを格納する場合は、
にする必要があります。今回の認証テストページではBASE64にエンコードする前の文字列は
になります。こちらをエンコードすると
になり、この文字列を「Authorizationヘッダ」に格納します。
BASE64エンコードについては、データ変換ツールを利用すると簡単に変換できます。
それでは、1つずつコードを見ていきましょう。
Set objIE = CreateObject("InternetExplorer.Application")
IEのオブジェクトを作成します。
オブジェクト作成により、プロパティやメソッドを利用することができます。
objIE.Visible = True
VisibleプロパティはIEの表示・非表示を設定することができます。デフォルトはFalseで非表示の状態ですので、Trueにすることで表示されます。
headValue = "Authorization: Basic " & idPass & vbCrLf
「Authorizationヘッダ」に格納するユーザー名・パスワードを設定しています。「idPass」にはBASE64エンコードされたデータを格納します。
objIE.navigate urlName, , , , headValue
「Navigateメソッド」で指定したURLのページを表示します。また、「Navigateメソッド」には以下のようにヘッダ情報を設定することができますので、そちらにBasic情報を設定します。
Call ieCheck(objIE)
最後に「ieCheckサブルーチン」でIEが完全表示されるまで待機して完了です。
これで認証画面をスルーして閲覧することができるのですが、1つだけ欠点があります。
ここから更にクリック処理をする場合に再度認証画面が表示されてしまいます。Basic認証はログイン・ログアウトの概念がないので、毎回リクエストを送信する必要があります。
もしこちらを利用する場合は、データ収集などでご利用ください。
他にも「http://username:password@host」で認証する方法もありますが、セキュリティ強化のため、使用できなくなっています。
しかし、クリック処理をしたい方もいらっしゃると思いますので、次回の「Basic認証自動ログイン「ieBasic2」」では直接入力してログインする方法を解説していきます。
次の記事: VBAでIE操作に役立つBasic認証自動ログイン2 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。