IEのクッキー削除「cookiesDel」の解説

今回は、IEのクッキー(cookies)を削除するサブルーチンについて解説していきます。
情報収集する場合は、節度あるアクセスを心がけますが、中にはチェックに引っかかって情報収集できないこともあります。
大半はIPアドレス変更でうまくいくのですが、クッキー(cookies)管理されている場合もあるので、その際のクッキー削除や定期的に削除したい場合に利用します。
それでは、IEのクッキー(cookies)を削除する制御方法について見ていきましょう。

スポンサー リンク

IEのクッキー削除のサブルーチン


Private Const S_OK = &H0
Private Const CSIDL_COOKIES = &H21
Private Const MAX_PATH = 260
 
Private Declare Function SHGetFolderPath Lib "shfolder" _
    Alias "SHGetFolderPathA" _
    (ByVal hwndOwner As Long, ByVal nFolder As Long, _
    ByVal hToken As Long, ByVal dwFlags As Long, _
    ByVal pszPath As String) As Long
 
Sub cookiesDel(Optional modeType As Integer = 0)
    Dim cookieFolder As String
    Dim retVal As Integer
    Dim objSFO As Object
    Dim cookieFile As Object
 
    'クッキー保存フォルダパス取得
    cookieFolder = String(MAX_PATH, vbNullChar)
    retVal = SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, cookieFolder)
 
    If retVal = S_OK Then
        cookieFolder = Left(cookieFolder, InStr(1, cookieFolder, Chr(0)) - 1)
        Set objSFO = CreateObject("Scripting.fileSystemObject")
        
label01:
        
        For Each cookieFile In objSFO.GetFolder(cookieFolder).Files
            '拡張子がtxtであればファイルを削除
            If objSFO.GetExtensionName(cookieFile) = "txt" Then
                cookieFile.Delete
            End If
        Next
    End If
    
    If InStr(cookieFolder, "Low") = 0 And modeType = 1 Then
        cookieFolder = cookieFolder & "\Low"
        GoTo label01

    End If

End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

IEのクッキー削除のマクロ

Sub sample()
    Call cookiesDel(1)
End Sub

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

クッキーが削除される

こちらの引数は以下の1つです。

引数名データ型内容値の事例初期値省略
modeTypeInteger保護モードのクッキー削除の有無0,10
cookiesDel("保護モードのクッキー削除の有無")

引数は任意項目となります。

「modeType」には、保護モードのクッキーも削除するかのチェックに利用するタイプを入力します。
保護モードのクッキーについては、後ほど説明します。


Private Const S_OK = &H0
Private Const CSIDL_COOKIES = &H21
Private Const MAX_PATH = 260
 
Private Declare Function SHGetFolderPath Lib "shfolder" _
    Alias "SHGetFolderPathA" _
    (ByVal hwndOwner As Long, ByVal nFolder As Long, _
    ByVal hToken As Long, ByVal dwFlags As Long, _
    ByVal pszPath As String) As Long

※ドラッグ(スワイプ)すると全体を確認できます。

こちらは「SHGetFolderPath」のAPIを利用するための記述となります。
今回クッキーを削除するのですが、まずはクッキーが格納されているフォルダを取得する必要があります。クッキーが保存されているフォルダは特殊フォルダですので、特殊フォルダを取得する場合は「SHGetFolderPath」のAPIを利用します。特殊フォルダは、他にもデスクトップやお気に入り、マイドキュメントなどが挙げられます。
また、「SHGetFolderPath」の利用方法については、「SHGetFolderPath 関数を使用するには」を参照してください。
こちらに詳しく説明されています。


'クッキー保存フォルダパス取得
cookieFolder = String(MAX_PATH, vbNullChar)
retVal = SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, cookieFolder)

※ドラッグ(スワイプ)すると全体を確認できます。

こちらでは、クッキーが保存されているフォルダパスを取得しています。
フォルダパスが取得できた場合は、retValは0を返します。


If retVal = S_OK Then
 cookieFolder = Left(cookieFolder, InStr(1, cookieFolder, Chr(0)) - 1)
 Set objSFO = CreateObject("Scripting.fileSystemObject")
        
label01:
        
 For Each cookieFile In objSFO.GetFolder(cookieFolder).Files
  '拡張子がtxtであればファイルを削除
   If objSFO.GetExtensionName(cookieFile) = "txt" Then
     cookieFile.Delete
    End If
  Next
End If

※ドラッグ(スワイプ)すると全体を確認できます。

こちらは、クッキー保存先が取得できた場合の処理です。
FileSystemObjectオブジェクト」を利用して、クッキー保存フォルダ内のファイルを全て取得します。
そして、クッキーのファイルはテキストファイルですので、「GetExtensionNameメソッド」を利用して拡張子がtxtのファイルを削除しています。
ここまでが通常のクッキー削除方法ですが、冒頭で説明した保護モードのクッキー削除についても制御処理をしていきます。

まず保護モードについての説明ですが、Windows Vista以降のIE(InternetExplorer)では保護モードというものが導入されています。
保護モードについてDeveloper Networkでは「Microsoft Windows Vista では、Microsoft Internet Explorer 7 は保護モードで実行されます。権限を大幅に制限して Internet Explorer プロセスを実行することによって、攻撃からユーザーを保護します。 保護モードは、ユーザーのマシン上でのデータの書き込み、変更、破壊や、あるいは悪意のあるコードのインストールといった攻撃の可能性を大幅に低減します。」と説明されています。
簡単に説明すると、権限を制限して、悪意のある攻撃から守るためのモードです。
詳しく知りたい方は「保護モードの Internet Explorer の理解と機能」をご確認ください。

次の保護モードとクッキーが何に関係するかというと、通常モードと保護モードではクッキーの保存先が異なります
ちなみに保存先は以下になります。

通常モードのCookie保存先

Users\"username"\AppData\Roaming\Microsoft\Windows\Cookies

保護モードのCookie保存先

Users\"username"\AppData\Roaming\Microsoft\Windows\Cookies\Low

ですので、ここまでの処理は通常モードのクッキーのみを削除しています。
保護モードのクッキーを削除するには更に「Low」フォルダまで掘り下げてファイルを削除する必要があります。
この処理が以下になります。


If InStr(cookieFolder, "Low") = 0 And modeType = 1 Then
 cookieFolder = cookieFolder & "\Low"
 GoTo label01
End If

※ドラッグ(スワイプ)すると全体を確認できます。

こちらは通常モードのクッキー保存先に「Low」フォルダを付加しています。
あとは、「GoToステートメント」を利用して、再度削除処理の場所まで戻り保護モードのクッキー削除処理をします。
以上がIEのクッキー削除「cookiesDel」の解説となります。

次の記事: VBAでIE操作に役立つ親ディレクトリパス取得 >>

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

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

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

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

↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。

ExcelのVBA初心者入門

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

目次

IE操作に便利なツール

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

IEのメソッド・プロパティ

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

IE操作のVBA関数

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

IE操作のステートメント

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

IE制御のVBAコード

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

役立つVBAコード

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