Seleniumを拒否するサイトにアクセスしてみた。
一部のサイトではSeleniumでアクセスするとAccess Deniedになります。
この動画のマクロはWindows11/Office2013で作成してます。

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Macro()
    Set fso = CreateObject("Scripting.FileSystemObject")
    CurrentDirectory = ThisWorkbook.Path
    
    'パスワードファイルを読む
    Set fso = CreateObject("Scripting.FileSystemObject")
    CurrentDirectory = ActiveWorkbook.Path
    Set file = fso.OpenTextFile(fso.BuildPath(CurrentDirectory, "pass1.txt"), 1)
    str_user = file.ReadLine
    str_pass = file.ReadLine
    file.Close
    Set file = Nothing
    
    'ブラウザを起動
    Dim driver As New Selenium.WebDriver
    Set driver = CreateObject("Selenium.webDriver")

    'Edgeに起動オプションをjsonで渡す
    driver.SetCapability "ms:edgeOptions", "{""args"": [""user-data-dir=" & Replace(fso.BuildPath(CurrentDirectory, "edge_vba1"), "\", "\\") & """" & _
    ",""disable-blink-features=AutomationControlled""" & _
    "] }"

    driver.Start "edge"
    driver.ExecuteScript ("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
    driver.Window.SetSize 750, 900
    driver.Window.SetPosition 0, 0
    driver.Get "https://www.smbc-card.com/mem/index.jsp"
    Call Sleep(3000)  '3秒待つ
    
    Call WaitElementbyCss(driver, "input[name=""userid""]")
    
    driver.FindElementByCss("input[name=""userid""]").SendKeys str_user
    driver.FindElementByCss("input[name=""password""]").SendKeys str_pass
    driver.FindElementByCss("input.btnNormal").Click

    MsgBox "ブラウザを閉じるぜ"
    
    'ブラウザを閉じる
    driver.Quit
    Set driver = Nothing
End Sub

Sub WaitElementbyCss(driver, css)
    Dim bFlag, myBy
        bFlag = False
        Set myBy = New By
        Do
            bFlag = driver.IsElementPresent(myBy.css(css))
            driver.Wait 1000
        Loop Until bFlag = True
End Sub

カテゴリー: VBA

4件のコメント

ebtk · 2023-03-26 09:32

某電力会社のくらしなんちゃらでのスクレイピングに困っておりましたが、こちらの方法でクリアできました。有用な情報をありがとうございました。

木上辰男 · 2023-10-12 17:39

https://www.youtube.com/watch?v=vZetEabHGmw
いつも拝見しておりありがとうございます。

「Microsoft Edgeは、自動テスト ソフトウェアによって制御されています。」
が表示されなくなるわけではないんですね?

    kanri · 2023-12-23 01:42

    それはブラウザに表示されるメッセージであって相手側のサーバーには伝わりませんし、この動画の話題とは全く無関係。
    もちろん消すこともできます。

Yuu · 2023-10-19 08:36

Chrome用のコードはあるでしょうか?

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください