VBAのIE(InternetExplorer)制御で役立つBasic認証自動ログインのサブルーチン化する方法について解説しています。
今回はIE(InternetExplorer)でたまに見かけるBasic認証(ベーシック認証)に自動ログインする方法を解説します。
Basic認証(ベーシック認証)とはWebサイトを閲覧する際に利用するプロトコル「HTTP」が備える、最も基本的なユーザ認証方式です。といっても分かりづらいと思いますが、要は閲覧制限がかかっているページにアクセスした場合に、以下のようなユーザー名・パスワードを聞かれることありませんか?こちらがBasic認証(ベーシック認証)です。
ちなみに「Basic認証(ベーシック認証)テストページ」にアクセスするとどのようなものか分かると思います。
ユーザー名:user、パスワード:123456でログインできます。
見出しで自動ログインと書いておりますが、実際はログイン・ログアウトという概念はなく、リクエストのヘッダ「Authorization」にユーザー名・パスワードを格納してリクエストを行っています。
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
※ドラッグ(スワイプ)すると全体を確認できます。
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部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。
こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。