Скачать HTML-код с URL с аутентификацией пользователя - PullRequest
0 голосов
/ 29 октября 2019

Я использую функцию getHTTP (URL) с этого форума ( Получение исходного кода HTML с помощью Excel-VBA ), чтобы скопировать HTML-код в строку. Это прекрасно работает с URL-адресами без аутентификации пользователя и пароля. Теперь я хочу скопировать HTML-код со страниц с аутентификацией пользователя / пароля. Как я могу это сделать?

например, я пытаюсь скопировать html-код заметки SAP со следующей страницы: https://launchpad.support.sap.com/#/notes/2793351

При вызове этого URL-адреса напрямую запрашивается аутентификация пользователя / пароля (илис помощью ранее установленного частного сертификата).

При вызове из сценария Excel-VBA в html-коде отображается следующая ошибка:

Примечание. Ваш браузер не поддерживает JavaScript или он включенвыкл. Нажмите кнопку для продолжения.

С помощью кнопки «продолжить» я могу вызвать страницу после аутентификации.

Пример: B2.Value = "https://launchpad.support.sap.com/#/notes/2793351"

Код VBA:

Sub download_sapnote()

' Set name and path of workbook
WB_Name = ThisWorkbook.Name
WB_Path = ThisWorkbook.Path

' Set main worksheet
Set main_ws1 = ThisWorkbook.Sheets(1)

' Start always with sheet 1
Workbooks(WB_Name).Activate
main_ws1.Select

With main_ws1
    lastrow_ws1 = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

For i = 2 To lastrow_ws1
    url2download = CStr(main_ws1.Cells(i, 2).Value)
    html_code = getHTTP(url2download)

    dfile = CStr(main_ws1.Cells(i, 1).Value) & ".html"
    Set Fileout = fso.CreateTextFile(dfile, True, True)
    Fileout.Write html_code
    Fileout.Close
Next i
End Sub

Function getHTTP(ByVal url As String) As String
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", url, False: .send
        getHTTP = StrConv(.responseBody, vbUnicode)
    End With
End Function

Результат в 2793351.html:

<html>
  <head>
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="pragma" content="no-cache" />
  </head>
  <body style="background-color:#FFFFFF" onload="var url=window.location.hash;if(url&&0!==url.length){document.cookie='oucrsfyugkfxzkrqcxusrqugg_anchor=&quot;'+encodeURIComponent(url) + '&quot;';}document.forms[0].submit()">
    <p><script language="javascript">document.write("Please wait ...");</script></p>
    <noscript><p>Note: Your browser does not support JavaScript or it is turned off. Press the button to proceed.</p></noscript>
    <form method="post" action="https://authn.hana.ondemand.com/saml2/sp/mds">
      <input type="hidden" name="tenantId" value="NzkwZmJmMjgtMjMxMC00M2E5LWI1NzEtN2MwYzliODg2ZTll"/>
      <input type="hidden" name="idpName" value="YWNjb3VudHMuc2FwLmNvbQ=="/>
      <input type="hidden" name="requestUrl" value="aHR0cHM6Ly9sYXVuY2hwYWQuc3VwcG9ydC5zYXAuY29tLyUyMy9ub3Rlcy8yNzkzMzUx"/>
      <input type="hidden" name="requestId" value="UzJiZjU2NDAzLWM4ZDUtNGQzYy1iNTJjLTFhNTMzMDhjMDRlNC04N20yRWdQYzlzblN3eTlYOU5jbEJaWFdwbWhPVnF0Uk9aUDdHbU5VWEpj"/>
      <input type="hidden" name="relayState" value="b3VjcnNmeXVna2Z4emtycWN4dXNycXVnZw=="/>
      <input type="hidden" name="action" value="sso"/>
      <input type="hidden" name="signature" value="Lfc/yXeaHnU7CLAHs4ktFA42IPKkhCwzsmWAHw3Sz/Yr0V0xOLp4v25+vQVTTXW+WFk9zZ+Gnh4YgDMClbFwbLMDa2YbvwRRAAF+V1wSmMYvveAYsh0EbHyWXwQHk9o+qOqh7v5oKGjoV9HGBclO6dS3Hx5d1u7cOnGnDoSoomkp4x7yvANEYHFyEiAabl+JRHu/O8LVyz4ckVPrBtUWaQhRcb9n4ojaMSjFVQdLBhKJNdip2f8rxEBqY9kgNNkQ+O5OdidhBEnBek6j3QSIE4732yseAYjppp2Wjeb9l9tQ3OGCKWX7GvSPRpm6018clDDGjXGYoIwW56VAht4S0w=="/>
      <noscript><input type="submit" value="Continue"/></noscript>
    </form>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...