IE(InternetExplorer)のBasic認証自動ログイン「ieBasic」の解説

こちらは、エクセルVBAでBasic認証の自動ログインする方法についての解説となります。VBAの知識がない方やBasic認証自動ログインツールをお求めの方には、無償で提供していますので「Basic認証自動ログインツール」よりダウンロードしてください。

今回はIE(InternetExplorer)でたまに見かけるBasic認証(ベーシック認証)に自動ログインする方法を解説します。
Basic認証(ベーシック認証)とはWebサイトを閲覧する際に利用するプロトコル「HTTP」が備える、最も基本的なユーザ認証方式です。といっても分かりづらいと思いますが、要は閲覧制限がかかっているページにアクセスした場合に、以下のようなユーザー名・パスワードを聞かれることありませんか?こちらがBasic認証(ベーシック認証)です。

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

実行結果

Basic認証の自動アクセス

引数は以下の3つが設定されています。

引数名データ型内容値の事例初期値省略
objIEInternetExplorerIEオブジェクトobjIE,objIE2×
urlNameString表示させたいBasic認証URLの文字列"http://www.vba-ie.net/
basic/test3.html"
×
idPassStringBasic認証のID・PASS情報文字列"dXNlcjoxMjM0NTY="×
ieBasic("IEオブジェクト","表示させたいBasic認証URLの文字列","Basic認証のID・PASS情報文字列")

こちらは、全て必須項目となります。
「objIE」は複数ページを表示させる場合に「objIE」「objIE2」と複数オブジェクトを生成します。「urlName」には、表示させたいBasic認証URLの文字列を設定します。

「idPass」にはBasic認証のID・PASS情報文字列を設定するのですが、設定方法にルールがありますので、そちらを説明していきます。

冒頭でBasic認証ページにアクセスする際は、リクエストのヘッダ「Authorization」にユーザー名・パスワードを格納してリクエストを行っていると説明しましたが、「Authorizationヘッダ」にユーザー名・パスワードを格納する場合は、

ユーザー名:(半角コロン)パスワードの文字列をBASE64にエンコードした文字列

にする必要があります。今回の認証テストページではBASE64にエンコードする前の文字列は

user:123456

になります。こちらをエンコードすると

dXNlcjoxMjM0NTY=

になり、この文字列を「Authorizationヘッダ」に格納します。
BASE64エンコードについては、データ変換ツールを利用すると簡単に変換できます。

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 >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。

ExcelのVBAで作成した役立つVBAコード

こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。